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).

Beautify

Наш пакет будет улучшать 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

Copyright © Defective Code, LLC. Все права защищены

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

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

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

MJML - Defective Code