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>'); // С LaravelMJML::render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</mj-text></mj-column></mj-section></mj-body></mjml>'); // С Laravel и минифицированным HTMLMJML::minify()->render( '<mjml><mj-body><mj-section><mj-column><mj-text>Hello World</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::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 |
Далее, установите PHP пакет, выполнив следующую команду composer:
composer require defectivecode/mjml
Вот и все! Если вы используете Laravel, наш пакет автоматически установится с использованием механизма обнаружения пакетов Laravel.
См. использование с Laravel ниже, если вы используете Laravel.
Чтобы отрендерить 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 в метод 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>');
Чтобы отрендерить 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 в метод 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, за исключением следующего:
preprocessors
- Этот параметр недоступен. Пожалуйста, откройте pull request, если вы хотите добавить этот параметр.minifyOptions
- Мы используем html-minifier-terser
, в то время как официальный пакет использует html-minifier
для минификации. Мы решили сменить процессор, потому что html-minifier
больше не поддерживается и имеет несколько связанных с ним проблем безопасности.Наш пакет по умолчанию использует следующие шрифты:
Вы можете изменить шрифты, используя следующие методы:
addFont(string $font, string $url)
- Добавить шрифт в список шрифтов.removeFont(string $font)
- Удалить шрифт из списка шрифтов.setFonts(array $fonts)
- Установить список шрифтов. Вы должны предоставить массив шрифтов в следующем формате: ['font-name' => 'font-url']
.Комментарии сохраняются по умолчанию. Если вы хотите удалить комментарии, вы можете использовать метод removeComments()
.
Вы также можете отменить действие removeComments()
, вызвав метод keepComments()
.
По умолчанию наш пакет будет включать любые mj-include
теги. Вы можете изменить это поведение, вызвав метод ignoreIncludes(bool $ignore)
.
Наш пакет будет улучшать HTML, используя js-beautify
с следующими параметрами по умолчанию:
В то время как
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-minifier-terser
с следующими параметрами по умолчанию:
Вы можете переопределить любые из этих параметров, предоставив действительную конфигурацию html-minifier-terser
, используя следующие методы:
setMinifyOptions(array $options)
- Установить параметры html-minifier-terser
.addMinifyOption(string $option, mixed $value)
- Добавить параметр html-minifier-terser
.removeMinifyOption(string $option)
- Удалить параметр html-minifier-terser
.Наш пакет будет проверять MJML, используя уровень валидации soft
по умолчанию. Вы можете изменить это, используя метод validationLevel(ValidationLevel $validationLevel)
. Доступны следующие уровни валидации:
strict
- Ваш документ проходит проверку и не рендерится, если в нем есть ошибкиsoft
- Ваш документ проходит проверку и рендерится, даже если в нем есть ошибкиskip
- Ваш документ рендерится без проверки.Наш пакет будет использовать директорию .
по умолчанию. Вы можете изменить это, вызвав метод filePath(string $path)
.
Мы не предоставляем никаких параметров juice по умолчанию. Вы можете добавить параметры 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 и другие онлайн-ресурсы будут лучшими вариантами.
Реальность управления проектом с открытым исходным кодом означает, что мы не можем немедленно решить каждую сообщенную ошибку или запрос функции. Мы приоритизируем проблемы в следующем порядке:
Ошибки, которые влияют на наши платные продукты, всегда будут нашим главным приоритетом. В некоторых случаях мы можем решать только те ошибки, которые непосредственно влияют на нас.
Если вы обнаружили ошибку и у вас есть решение, пожалуйста, отправьте запрос на внесение изменений. После проблем, влияющих на наши продукты, мы придаем следующий по важности приоритет этим исправлениям, управляемым сообществом. После проверки и утверждения мы объединим ваше решение и отметим ваш вклад.
Для проблем, не входящих в упомянутые категории, вы можете выбрать финансирование их решения. Каждая открытая проблема связана с формой заказа, где вы можете внести финансовый вклад. Мы приоритизируем эти проблемы на основе предоставленной суммы финансирования.
Открытый исходный код процветает, когда его сообщество активно. Даже если вы не исправляете ошибки, рассмотрите возможность внесения вклада через улучшения кода, обновления документации, учебные пособия или помощь другим в каналах сообщества. Мы настоятельно призываем всех, как сообщество, помогать поддерживать работу с открытым исходным кодом.
Еще раз, DefectiveCode будет приоритизировать ошибки в зависимости от того, как они влияют на наши платные продукты, запросы на внесение изменений от сообщества и полученную финансовую поддержку для решения проблем.
Copyright © Defective Code, LLC. Все права защищены
Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию этого программного обеспечения и сопутствующих документационных файлов (далее "Программное обеспечение"), использовать Программное обеспечение без ограничений, включая, помимо прочего, права на использование, копирование, изменение, слияние, публикацию, распространение, сублицензирование и/или продажу копий Программного обеспечения, а также лицам, которым предоставляется Программное обеспечение, при соблюдении следующих условий:
Вышеуказанное уведомление об авторских правах и это разрешение должны быть включены во все копии или значительные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ КОММЕРЧЕСКОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ИНЫЕ ОБЯЗАТЕЛЬСТВА, НЕЗАВИСИМО ОТ ТОГО, ЯВЛЯЮТСЯ ЛИ ОНИ РЕЗУЛЬТАТОМ ДОГОВОРА, ДЕЛИКТА ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКШИЕ ИЗ, ИЗ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.