Defective Code Logo

Total Downloads Latest Stable Version Latest Stable Version

English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文

Предупреждение о переводе

Этот документ был автоматически переведен. Если есть ошибки в переводе, пожалуйста, откройте запрос на включение изменений в проекте и добавьте переведенный файл в docs/{ISO 639-1 Code}.md.

Введение

MJML - это язык разметки, специально разработанный для упрощения процесса создания отзывчивых электронных писем. Его семантический синтаксис обеспечивает простоту и легкость использования, а его обширная библиотека стандартных компонентов ускоряет разработку и упрощает кодирование электронной почты. Открытый исходный код движка MJML генерирует качественный и отзывчивый HTML, соответствующий лучшим практикам. Если вы столкнулись с проблемами при работе с Outlook, этот пакет создан специально для вас.

Наша реализация MJML служит оберткой для официального API MJML. Она позволяет удобно компилировать MJML в HTML непосредственно в PHP, без необходимости установки NodeJS. Этот пакет идеально подходит для PHP-приложений, которые хотят использовать MJML без неудобств установки NodeJS и MJML CLI.

Пример

// Без Laravel
(new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// Сжатый HTML
(new MJML)->minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// С Laravel
MJML::render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);
 
// С Laravel и сжатый HTML
MJML::minify()->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Установка

  1. Сначала добавьте следующий код в ваш файл composer.json, чтобы указать нашему пакету загружать правильные бинарные файлы для вашей операционной системы при установке нашего пакета. Бинарные файлы будут загружены после выполнения команды install, update или dump-autoload.

    {
    "post-autoload-dump": ["DefectiveCode\\MJML\\PullBinary::all"]
    }

    Бинарный файл MJML будет получен с нашего CDN и сохранен в папке "bin" этого пакета во время установки или обновления composer. Убедитесь, что у вас загружены необходимые бинарные файлы для вашей локальной и продукционной среды.

    По умолчанию, all загрузит все бинарные файлы, которые мы поддерживаем. Мы рекомендуем ограничиться операционными и архитектурными системами, которые вам нужны, чтобы сэкономить пропускную способность и время установки. Вот доступные бинарные файлы.

    Операционная система Архитектура Команда после обновления Composer
    Все Все 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
  2. Затем установите PHP-пакет, выполнив следующую команду composer:

    composer require defectivecode/mjml
  3. Вот и все! Если вы используете Laravel, наш пакет будет автоматически установлен с использованием механизма обнаружения пакетов Laravel.

Использование (без Laravel)

См. ниже использование с Laravel, если вы используете Laravel.

Рендеринг MJML

Для рендеринга MJML просто передайте свою строку MJML в метод render:

use DefectiveCode\MJML;
 
$html = (new MJML)->render(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'
);

Проверка валидности MJML

Для проверки валидности MJML просто передайте свою строку MJML в метод isValid:

use DefectiveCode\MJML;
 
$isValid = (new MJML)->isValid(
'<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</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>Hello World</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>Hello World</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;
 
$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>'
);

Наш пакет следует той же конфигурации, что и официальный пакет MJML, за исключением следующих:

Шрифты

Наш пакет по умолчанию использует следующие шрифты:

Вы можете изменить шрифты, используя следующие методы:

Комментарии

Комментарии сохраняются по умолчанию. Если вы хотите удалить комментарии, вы можете использовать метод removeComments().

Вы также можете отменить removeComments() вызовом метода keepComments().

Игнорирование включений

По умолчанию наш пакет будет включать любые теги mj-include. Вы можете изменить это поведение, вызвав метод ignoreIncludes(bool $ignore).

Красота

Наш пакет будет форматировать HTML с использованием js-beautify со следующими параметрами по умолчанию:

В то время как js-beautify использует snake_case для предоставления параметров, вы должны использовать camelCase при использовании нашего пакета. Мы сделали этот выбор, чтобы сделать наш пакет согласованным с остальными параметрами конфигурации. Наш пакет автоматически преобразует параметры camelCase в snake_case.

Вы можете переопределить любой из этих параметров, предоставив допустимую конфигурацию js-beautify, используя следующие методы:

Минификация

Наш пакет будет минифицировать HTML с использованием html-minifier-terser со следующими параметрами по умолчанию:

Вы можете переопределить любой из этих параметров, предоставив допустимую конфигурацию html-minifier-terser, используя следующие методы:

Уровень проверки

Наш пакет будет проверять MJML с использованием уровня проверки soft по умолчанию. Вы можете изменить это, используя метод validationLevel(ValidationLevel $validationLevel). Доступны следующие уровни проверки:

Путь к файлу

Наш пакет будет использовать каталог . по умолчанию. Вы можете изменить это, вызвав метод filePath(string $path).

Juice

Мы не предоставляем никаких параметров juice по умолчанию. Вы можете добавить параметры juice, используя следующие методы:

Руководство по поддержке

Благодарим вас за выбор нашего пакета с открытым исходным кодом! Пожалуйста, ознакомьтесь с этими руководствами по поддержке. Они помогут вам получить максимальную отдачу от нашего проекта.

Поддержка от сообщества

Наш проект с открытым исходным кодом развивается благодаря нашему потрясающему сообществу. Если у вас есть вопросы или вам нужна помощь, лучше всего обратиться к StackOverflow и другим онлайн-ресурсам.

Ошибки и приоритеты функций

Реальность управления проектом с открытым исходным кодом означает, что мы не можем сразу же решить каждую сообщенную ошибку или запрос на функцию. Мы устанавливаем приоритеты проблем в следующем порядке:

1. Ошибки, влияющие на наши платные продукты

Ошибки, которые влияют на наши платные продукты, всегда будут нашим главным приоритетом. В некоторых случаях мы можем решать только те ошибки, которые непосредственно затрагивают нас.

2. Запросы на слияние от сообщества

Если вы обнаружили ошибку и у вас есть решение, пожалуйста, отправьте запрос на слияние. После проблем, влияющих на наши продукты, мы приоритетно рассматриваем эти исправления, предложенные сообществом. После проверки и утверждения мы объединим ваше решение и укажем ваш вклад.

3. Финансовая поддержка

Для проблем, не относящихся к упомянутым категориям, вы можете решить финансово поддержать их решение. Каждая открытая проблема связана с формой заказа, где вы можете внести свой вклад финансово. Мы устанавливаем приоритеты для этих проблем на основе предоставленной суммы финансирования.

Вклад сообщества

Открытый исходный код процветает, когда его сообщество активно. Даже если вы не исправляете ошибки, рассмотрите возможность внести свой вклад через улучшение кода, обновление документации, создание учебных пособий или помощь другим в сообществе. Мы настоятельно призываем всех, как сообщество, помогать поддерживать работу с открытым исходным кодом.

Повторим, DefectiveCode будет устанавливать приоритеты для ошибок в зависимости от того, как они влияют на наши платные продукты, запросы на слияние от сообщества и финансовую поддержку, полученную для проблем.

Лицензия - Лицензия MIT

Авторское право © Defective Code, LLC. Все права защищены.

Настоящим предоставляется разрешение бесплатно и безвозмездно любому лицу, получающему копию данного программного обеспечения и связанных с ним файлов документации (далее - "Программное обеспечение"), осуществлять с Программным обеспечением любые действия без ограничений, включая, помимо прочего, право использования, копирования, изменения, объединения, публикации, распространения, сублицензирования и/или продажи копий Программного обеспечения, а также лицам, которым Программное обеспечение предоставляется, - осуществлять такие действия, при условии соблюдения следующих условий:

Вышеуказанное уведомление об авторском праве и это разрешение должны быть включены во все копии или существенные части Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИИ ТОВАРНОГО СОСТОЯНИЯ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, А ТАКЖЕ ОТСУТСТВИЯ НАРУШЕНИЯ ПРАВ. В НИКАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, ВОЗНИКАЮЩИЕ В РЕЗУЛЬТАТЕ ДЕЙСТВИЙ ПО ДОГОВОРУ, ПРАВОНАРУШЕНИЮ ИЛИ ИНАЧЕ, В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.

MJML - Defective Code