English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
Este documento ha sido traducido automáticamente. Si hay errores de traducción, por favor abre
una solicitud de extracción en el
proyecto y agrega el archivo traducido a docs/{Código ISO 639-1}.md
.
MJML es un lenguaje de marcado diseñado específicamente para simplificar el proceso de codificación de correos electrónicos receptivos. Su sintaxis semántica garantiza facilidad y simplicidad, mientras que su extensa biblioteca de componentes estándar acelera el desarrollo y reduce la complejidad de su código de correo electrónico. El motor de código abierto de MJML genera HTML receptivo de alta calidad que cumple con las mejores prácticas. Si ha experimentado las frustraciones de trabajar con Outlook, este paquete está diseñado para usted.
Nuestra implementación de MJML sirve como un envoltorio para la API oficial de MJML. Permite la compilación conveniente de MJML en HTML directamente dentro de PHP, sin la necesidad de NodeJS. Este paquete es ideal para aplicaciones PHP que desean incorporar MJML sin la molestia de instalar NodeJS y la CLI de MJML.
// Sin Laravel(new MJML)->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hola Mundo</mj-text></mj-column></mj-section></mj-body></mjml>'); // HTML minificado(new MJML)->minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hola Mundo</mj-text></mj-column></mj-section></mj-body></mjml>'); // Con LaravelMJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hola Mundo</mj-text></mj-column></mj-section></mj-body></mjml>'); // Con Laravel y HTML minificadoMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hola Mundo</mj-text></mj-column></mj-section></mj-body></mjml>');
Primero agrega lo siguiente a tu archivo composer.json
para indicarle a nuestro paquete que descargue los binarios correctos para tu sistema operativo cuando se instale nuestro paquete. Los binarios se descargarán después de ejecutar install
, update
o dump-autoload
.
{ "post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]}
El binario de MJML se obtendrá de nuestro CDN y se guardará en la carpeta "bin" de este paquete durante la instalación o actualización de composer. Asegúrate de tener los binarios necesarios cargados tanto en tu entorno local como en el de producción.
Por defecto, all
descargará todos los binarios que admitimos. Recomendamos limitar esto a los sistemas operativos y arquitecturas que necesites para ahorrar ancho de banda y tiempo de instalación. A continuación se muestran los binarios disponibles.
Sistema Operativo | Arquitectura | Comando de Post Update de Composer |
---|---|---|
Todos | Todos | DefectiveCode\MJML\PullBinary::all |
Darwin (MacOS) | arm64 | DefectiveCode\MJML\PullBinary::darwin-arm64 |
Darwin (MacOS) | x64 | DefectiveCode\MJML\PullBinary::darwin-x64 |
Linux | arm64 | DefectiveCode\MJML\PullBinary::linux-arm64 |
Linux | x64 | DefectiveCode\MJML\PullBinary::linux-x64 |
A continuación, instala el paquete de PHP ejecutando el siguiente comando de composer:
composer require defectivecode/mjml
¡Eso es todo! Si estás utilizando Laravel, nuestro paquete se instalará automáticamente utilizando el descubrimiento de paquetes de Laravel.
Consulte el uso con Laravel a continuación si está utilizando Laravel.
Para renderizar MJML, simplemente pase su cadena MJML al método render
:
use DefectiveCode\MJML; $html = (new MJML)->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hola Mundo</mj-text></mj-column></mj-section></mj-body></mjml>');
Para validar MJML, simplemente pase su cadena MJML al método isValid
:
use DefectiveCode\MJML; $isValid = (new MJML)->isValid( '<mjml><mj-body><mj-section><mj-column><mj-text>Hola Mundo</mj-text></mj-column></mj-section></mj-body></mjml>');
Para renderizar MJML, simplemente pasa tu cadena de MJML al método render
en la fachada MJML:
use DefectiveCode\MJML\Facades\MJML; $html = MJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hola Mundo</mj-text></mj-column></mj-section></mj-body></mjml>');
Para validar MJML, simplemente pasa tu cadena de MJML al método isValid
en la fachada MJML:
use DefectiveCode\MJML\Facades\MJML; $isValid = MJML::isValid( '<mjml><mj-body><mj-section><mj-column><mj-text>Hola Mundo</mj-text></mj-column></mj-section></mj-body></mjml>');
Puedes publicar el archivo de configuración usando el siguiente comando:
php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"
Esto creará un archivo de configuración mjml.php
en tu carpeta config
. Todas las opciones enumeradas en el archivo de configuración se pasan al objeto config
cuando usas la fachada MJML.
Todas las opciones de configuración se pueden establecer llamando directamente a los siguientes métodos en el objeto MJML.
use DefectiveCode\MJML; $html = (new MJML) ->setMinify(true) ->setBeautify(false) ->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>' );
Nuestro paquete sigue la misma configuración que el paquete oficial de MJML, excepto por lo siguiente:
preprocessors
- Esta opción no está disponible. Por favor, abra una solicitud de extracción si desea agregar esta opción.minifyOptions
- Utilizamos html-minifier-terser
mientras que el paquete oficial utiliza html-minifier
para la minificación. Decidimos cambiar el procesador porque html-minifer
ya no se mantiene y tiene algunos problemas de seguridad asociados.Nuestro paquete utiliza las siguientes fuentes de forma predeterminada:
Puede cambiar las fuentes utilizando los siguientes métodos:
addFont(string $font, string $url)
- Agrega una fuente a la lista de fuentes.removeFont(string$font)
- Elimina una fuente de la lista de fuentes.setFonts(array $fonts)
- Establece la lista de fuentes. Debe proporcionar una matriz de fuentes en este formato: ['nombre-de-la-fuente' => 'url-de-la-fuente']
.Los comentarios se mantienen de forma predeterminada. Si desea eliminar los comentarios, puede utilizar el método removeComments()
.
También puede revertir removeComments()
llamando al método keepComments()
.
De forma predeterminada, nuestro paquete incluirá cualquier etiqueta mj-include
. Puede ajustar este comportamiento llamando al método ignoreIncludes(bool $ignore)
.
Nuestro paquete embellecerá el HTML utilizando js-beautify
con las siguientes opciones predeterminadas:
Si bien
js-beautify
utiliza snake_case para proporcionar opciones, debe utilizar camelCase al utilizar nuestro paquete. Tomamos esta decisión para mantener nuestro paquete consistente con el resto de las opciones de configuración. Nuestro paquete convertirá automáticamente las opciones camelCase a snake_case.
Puede anular cualquiera de estas opciones proporcionando una configuración válida de js-beautify
utilizando los siguientes métodos:
setBeautifyOptions(array $options)
- Establece las opciones de js-beautify
.addBeautifyOption(string $option, mixed $value)
- Agrega una opción de js-beautify
.removeBeautifyOption(string $option)
- Elimina una opción de js-beautify
.Nuestro paquete minificará el HTML utilizando html-minifier-terser
con las siguientes opciones predeterminadas:
Puede anular cualquiera de estas opciones proporcionando una configuración válida de html-minifier-terser
utilizando los siguientes métodos:
setMinifyOptions(array $options)
- Establece las opciones de html-minifier-terser
.addMinifyOption(string $option, mixed $value)
- Agrega una opción de html-minifier-terser
.removeMinifyOption(string $option)
- Elimina una opción de html-minifier-terser
.Nuestro paquete validará el MJML utilizando el nivel de validación soft
de forma predeterminada. Puede cambiar esto utilizando el método validationLevel(ValidationLevel $validationLevel)
. Los siguientes niveles de validación están disponibles:
strict
- Su documento se somete a validación y no se renderiza si tiene algún error.soft
- Su documento se somete a validación y se renderiza, incluso si tiene errores.skip
- Su documento se renderiza sin someterse a validación.Nuestro paquete utilizará el directorio .
de forma predeterminada. Puede cambiar esto llamando al método filePath(string $path)
.
No proporcionamos ninguna opción de juice de forma predeterminada. Puede agregar opciones de juice utilizando los siguientes métodos:
setJuiceOptions(array $options)
- Establece las opciones de juice.addJuiceOption(string $option, mixed $value)
- Agrega una opción de juice.removeJuiceOption(string $option)
- Elimina una opción de juice.setJuicePreserveTags(array $tags)
- Establece las etiquetas de juice a preservar.addJuicePreserveTag(string $tag, mixed $value)
- Agrega una etiqueta de juice a preservar.removeJuicePreserveTag(string $tag)
- Elimina una etiqueta de juice a preservar.¡Gracias por elegir nuestro paquete de código abierto! Por favor, tómate un momento para revisar estas directrices de soporte. Te ayudarán a sacar el máximo provecho de nuestro proyecto.
Nuestro proyecto de código abierto se alimenta de nuestra increíble comunidad. Si tienes preguntas o necesitas ayuda, StackOverflow y otros recursos en línea son tus mejores opciones.
La realidad de gestionar un proyecto de código abierto significa que no podemos abordar cada error reportado o solicitud de funcionalidad de inmediato. Priorizamos los problemas en el siguiente orden:
Los errores que afectan a nuestros productos de pago siempre serán nuestra máxima prioridad. En algunos casos, solo abordaremos los errores que nos afecten directamente.
Si has identificado un error y tienes una solución, por favor envía una solicitud de extracción. Después de los problemas que afectan a nuestros productos, damos la siguiente prioridad más alta a estas soluciones impulsadas por la comunidad. Una vez revisada y aprobada, fusionaremos tu solución y acreditaremos tu contribución.
Para problemas fuera de las categorías mencionadas, puedes optar por financiar su resolución. Cada problema abierto está vinculado a un formulario de pedido donde puedes contribuir financieramente. Priorizamos estos problemas en función de la cantidad de financiamiento proporcionada.
El código abierto prospera cuando su comunidad está activa. Incluso si no estás corrigiendo errores, considera contribuir a través de mejoras de código, actualizaciones de documentación, tutoriales o ayudando a otros en los canales de la comunidad. Alentamos encarecidamente a todos, como comunidad, a ayudar a apoyar el trabajo de código abierto.
Para reiterar, DefectiveCode priorizará los errores en función de cómo afecten a nuestros productos de pago, las solicitudes de extracción de la comunidad y el soporte financiero recibido para los problemas.
Derechos de autor © Defective Code, LLC. Todos los derechos reservados
Se otorga permiso, de forma gratuita, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para utilizar el Software sin restricciones, incluyendo, sin limitación, los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender copias del Software, y permitir a las personas a las que se les proporcione el Software hacer lo mismo, sujeto a las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITADO A, LAS GARANTÍAS DE COMERCIABILIDAD, APTITUD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGÚN RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRO MODO, QUE SURJA DE O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTRO TIPO DE ACTIVIDADES EN EL SOFTWARE.