English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
- Обновление
- Введение
- Установка
- Использование (Без Laravel)
- Использование (С Laravel)
- Конфигурация
- Руководство по поддержке
- Лицензия - MIT Лицензия
Обновление
Если вы обновляетесь с предыдущей версии, пожалуйста, ознакомьтесь с Руководством по обновлению для получения информации о нарушениях совместимости и этапах миграции.
Введение
MJML — это язык разметки, специально разработанный для упрощения процесса создания адаптивных писем. Его семантический синтаксис обеспечивает простоту, а обширная библиотека стандартных компонентов ускоряет разработку и уменьшает сложность вашего кода электронной почты. Открытый движок MJML генерирует качественный, адаптивный HTML, соответствующий лучшим практикам. Если вы сталкивались с трудностями при работе с Outlook, этот пакет создан для вас.
Наша реализация MJML служит оберткой для официального API MJML. Она позволяет удобно компилировать MJML в HTML непосредственно в PHP, без необходимости в NodeJS. Этот пакет идеально подходит для PHP-приложений, которые хотят интегрировать MJML без необходимости устанавливать NodeJS и CLI MJML.
Пример
// Без Laravel(new MJML)->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Привет, мир</mj-text></mj-column></mj-section></mj-body></mjml>'); // Минифицированный HTML(new MJML)->minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Привет, мир</mj-text></mj-column></mj-section></mj-body></mjml>'); // С LaravelMJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Привет, мир</mj-text></mj-column></mj-section></mj-body></mjml>'); // С Laravel и минифицированным HTMLMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Привет, мир</mj-text></mj-column></mj-section></mj-body></mjml>');
Установка
-
Сначала добавьте следующее в ваш файл
composer.json, чтобы указать нашему пакету подтянуть правильные бинарные файлы для вашей операционной системы при установке нашего пакета. Бинарные файлы будут загружены после того, как вы выполнитеinstall,update, илиdump-autoload.{"post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]}Бинарный файл MJML будет получен из нашего CDN и сохранен в папке "bin" этого пакета во время установки или обновления composer. Убедитесь, что вы загрузили необходимые бинарные файлы как для локального, так и для производственного окружения.
По умолчанию команда
allбудет подтягивать все поддерживаемые нами бинарные файлы. Мы рекомендуем ограничить это выбором операционных и архитектурных систем, чтобы сэкономить на пропускной способности и времени установки. Ниже представлены доступные бинарные файлы.Операционная система Архитектура Команда после обновления composer Все Все DefectiveCode\MJML\PullBinary::allDarwin (MacOS) arm64 DefectiveCode\MJML\PullBinary::darwin-arm64Darwin (MacOS) x64 DefectiveCode\MJML\PullBinary::darwin-x64Linux (glibc) arm64 DefectiveCode\MJML\PullBinary::linux-arm64Linux (glibc) x64 DefectiveCode\MJML\PullBinary::linux-x64Linux (musl) arm64 DefectiveCode\MJML\PullBinary::linux-arm64-muslLinux (musl) x64 DefectiveCode\MJML\PullBinary::linux-x64-musl -
Затем установите пакет PHP, выполнив следующую команду composer:
composer require defectivecode/mjml -
Готово! Если вы используете Laravel, наш пакет автоматически установится с использованием обнаружения пакетов Laravel.
Использование (Без Laravel)
Если вы используете Laravel, смотрите использование ниже.
Рендеринг MJML
Чтобы отрендерить MJML, просто передайте вашу строку MJML в метод render:
use DefectiveCode\MJML\MJML; $html = (new MJML)->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Привет, мир</mj-text></mj-column></mj-section></mj-body></mjml>');
Валидация MJML
Чтобы проверить MJML, просто передайте вашу строку MJML в метод isValid:
use DefectiveCode\MJML\MJML; $isValid = (new MJML)->isValid( '<mjml><mj-body><mj-section><mj-column><mj-text>Привет, мир</mj-text></mj-column></mj-section></mj-body></mjml>');
Использование (С Laravel)
Рендеринг MJML
Чтобы отрендерить MJML, просто передайте вашу строку MJML в метод render фасада MJML:
use DefectiveCode\MJML\Facades\MJML; $html = MJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Привет, мир</mj-text></mj-column></mj-section></mj-body></mjml>');
Валидация MJML
Чтобы проверить MJML, просто передайте вашу строку MJML в метод isValid фасада MJML:
use DefectiveCode\MJML\Facades\MJML; $isValid = MJML::isValid( '<mjml><mj-body><mj-section><mj-column><mj-text>Привет, мир</mj-text></mj-column></mj-section></mj-body></mjml>');
Конфигурация
Вы можете опубликовать файл конфигурации, используя следующую команду:
php artisan vendor:publish --provider="DefectiveCode\MJML\MJMLServiceProvider"
Это создаст файл конфигурации mjml.php в вашей папке config. Все параметры, указанные в файле конфигурации,
передаются объекту config, когда вы используете фасад MJML.
Конфигурация
Все параметры конфигурации можно задать, вызывая следующие методы напрямую на объекте MJML.
use DefectiveCode\MJML\MJML; $html = (new MJML) ->setMinify(true) ->setBeautify(false) ->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Привет, мир</mj-text></mj-column></mj-section></mj-body></mjml>' );
Наш пакет следует такой же конфигурации, как и официальный пакет MJML, за исключением следующего:
preprocessors- Эта опция недоступна. Пожалуйста, откройте запрос на добавление, если вы хотите добавить эту опцию.minifyOptions- Мы выполняем минификацию в PHP для совместимости вывода. Минификатор удаляет комментарии (за исключением условных операторов Outlook), сжимает пробелы и удаляет пробелы между тегами.sanitizeStyles,templateSyntaxиallowMixedSyntax- Эти опции MJML 5 применяются к родному пути минификации htmlnano/cssnano. Они не используются минификатором PHP этого пакета.
Шрифты
Наш пакет по умолчанию использует следующие шрифты:
- Open Sans: 'https://fonts.googleapis.com/css?family=Open+Sans:300,400,500,700
- Droid Sans: 'https://fonts.googleapis.com/css?family=Droid+Sans:300,400,500,700
- Lato: https://fonts.googleapis.com/css?family=Lato:300,400,500,700
- Roboto: https://fonts.googleapis.com/css?family=Roboto:300,400,500,700
- Ubuntu: https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700
Вы можете изменить шрифты, используя следующие методы:
addFont(string $font, string $url)- Добавить шрифт в список шрифтов.removeFont(string $font)- Удалить шрифт из списка шрифтов.setFonts(array $fonts)- Установить список шрифтов. Вы должны предоставить массив шрифтов в следующем формате:['font-name' => 'font-url'].
Комментарии
Комментарии сохраняются по умолчанию. Если вы хотите удалить комментарии, вы можете использовать метод removeComments().
Вы также можете вернуть removeComments(), вызвав метод keepComments().
Игнорировать Включения
По умолчанию наш пакет игнорирует mj-include теги. Это соответствует более безопасному умолчанию MJML 5. Вы можете включить включения, вызвав ignoreIncludes(false).
При включении включений используйте filePath(string $path) в качестве основной директории и includePath(string|array|null $path),
чтобы разрешить дополнительные директории включений.
Украшение
Наш пакет будет улучшать HTML, используя js-beautify. MJML 5.2 также использует
js-beautify внутри, но этот пакет сохраняет украшение на уровне обертки, чтобы пользовательские beautifyOptions PHP продолжали
работать. Параметры по умолчанию:
- indentSize: 2
- wrapAttributesIndentSize: 2
- maxPreserveNewline: 0
- preserveNewlines: false
В то время как
js-beautifyиспользует snake_case для предоставления параметров, вам следует использовать camelCase при использовании нашего пакета. Мы сделали этот выбор, чтобы сохранить согласованность нашего пакета с остальными параметрами конфигурации. Наш пакет автоматически преобразует параметры camelCase в snake_case.
Вы можете переопределить любые из этих параметров, предоставив действительную конфигурацию js-beautify, используя следующие методы:
setBeautifyOptions(array $options)- Установить параметрыjs-beautify.addBeautifyOption(string $option, mixed $value)- Добавить параметрjs-beautify.removeBeautifyOption(string $option)- Удалить параметрjs-beautify.
Минификация
Наш пакет будет минифицировать вывод HTML, когда это включено. Минификация выполняет следующее:
- Удаляет HTML-комментарии (сохраняет условные комментарии Outlook, такие как
<!--[if mso]>) - Сжимает несколько пробелов в один пробел
- Удаляет пробелы между тегами HTML
Вы можете включить или отключить минификацию, вызвав метод minify(bool $minify).
Почему минификация на основе PHP? MJML 5 больше не использует старый уязвимый пакет
html-minifier. Этот пакет все еще сохраняет минификацию в PHP для поддержания поведения вывода, введенного в версии 2.x. Если вам нужны нативные параметры минификации htmlnano/cssnano от MJML 5, откройте проблему с требуемой формой опции.
Уровень валидации
Наш пакет по умолчанию будет валидировать MJML на уровне валидации soft. Вы можете изменить это, используя метод
validationLevel(ValidationLevel $validationLevel). Доступные уровни валидации:
strict- Ваш документ проходит валидацию и не рендерится, если он содержит какие-либо ошибкиsoft- Ваш документ проходит валидацию и рендерится, даже если он содержит ошибкиskip- Ваш документ рендерится без прохождения валидации.
Путь к файлу
Наш пакет по умолчанию будет использовать директорию .. Вы можете изменить это, вызвав метод filePath(string $path).
MJML 5 рассматривает filePath как базу песочницы для включений. Если включения включены, пути за пределами filePath запрещены, если
они не разрешены явно с помощью includePath(string|array|null $path).
Juice
Мы не предоставляем никаких juice options по умолчанию. Вы можете добавить параметры juice, используя следующие методы:
setJuiceOptions(array $options)- Установить параметры juice.addJuiceOption(string $option, mixed $value)- Добавить параметр juice.removeJuiceOption(string $option)- Удалить параметр juice.setJuicePreserveTags(array $tags)- Установить теги сохранения juice.addJuicePreserveTag(string $tag, mixed $value)- Добавить тег сохранения juice.removeJuicePreserveTag(string $tag)- Удалить тег сохранения juice.
Руководство по поддержке
Спасибо, что выбрали наш пакет с открытым исходным кодом! Пожалуйста, уделите немного времени, чтобы ознакомиться с этими рекомендациями по поддержке. Они помогут вам максимально эффективно использовать наш проект.
Поддержка, основанная на сообществе
Наш проект с открытым исходным кодом поддерживается нашим замечательным сообществом. Если у вас есть вопросы или требуется помощь, StackOverflow и другие онлайн-ресурсы — ваши лучшие помощники.
Ошибки и приоритизация функций
Реальность управления проектом с открытым исходным кодом заключается в том, что мы не можем сразу же решить каждую сообщенную ошибку или запрос на новую функцию. Мы приоритизируем проблемы в следующем порядке:
1. Ошибки, влияющие на наши платные продукты
Ошибки, которые затрагивают наши платные продукты, всегда будут нашим приоритетом. В некоторых случаях мы можем рассматривать только те ошибки, которые влияют на нас напрямую.
2. Запросы на внесение изменений от сообщества
Если вы выявили ошибку и у вас есть решение, пожалуйста, отправьте запрос на внесение изменений. После вопросов, касающихся наших продуктов, мы придаем следующий высокий приоритет этим исправлениям, инициированным сообществом. После проверки и одобрения мы объединим ваше решение и отметим ваш вклад.
3. Финансовая поддержка
Для вопросов за пределами упомянутых категорий вы можете выбрать финансирование их решения. Каждая открытая проблема связана с формой заказа, через которую вы можете внести финансовый вклад. Мы приоритизируем эти вопросы на основе суммы финансирования.
Вклад сообщества
Проекты с открытым исходным кодом процветают, когда их сообщество активно. Даже если вы не исправляете ошибки, подумайте о том, чтобы внести вклад через улучшение кода, обновление документации, создание учебных пособий или помощь другим в каналах сообщества. Мы настоятельно призываем всех, как сообщество, поддерживать работу с открытым исходным кодом.
Повторим, что DefectiveCode будет приоритизировать ошибки в зависимости от того, как они влияют на наши платные продукты, запросы на внесение изменений от сообщества и финансовую поддержку, полученную за проблемы.
Лицензия - MIT Лицензия
Авторские права © Defective Code, LLC. Все права защищены
Настоящим предоставляется разрешение, безвозмездно, любому лицу, получающему копию этого программного обеспечения и сопутствующих документационных файлов (далее «Программное обеспечение»), пользоваться Программным обеспечением без ограничений, включая, но не ограничиваясь правами использовать, копировать, изменять, сливать, публиковать, распространять, предоставлять сублицензии и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставляется Программное обеспечение, делать это, при соблюдении следующих условий:
Указанные выше авторские права и данное разрешение должны быть включены во все копии или значительные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ ГАРАНТИЙ ЛЮБОГО ВИДА, ЯВНЫХ ИЛИ ИМПЛИЦИТНЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОРГОВОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННЫХ ЦЕЛЕЙ И НАРУШЕНИЯ ПРАВ. В НИКАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ДЕРЖАТЕЛИ АВТОРСКИХ ПРАВ НЕ НЕСУТ ОТВЕТСТВЕННОСТЬ ЗА ЛЮБЫЕ ИСКИ, УЩЕРБ ИЛИ ДРУГИЕ ОБЯЗАТЕЛЬСТВА, НИ В КАКОМ УКАЗАНИИ, ДОГОВОРЕ, ДЕЛИКТЕ ИЛИ ИНОМ, ВЫТЕКАЮЩИЕ ИЗ, ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ СДЕЛКАМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.