expressionengine — Импорт строки PHP с кавычками

Поэтому я импортирую поля ExpressionEngine в массив php. Я хочу отобразить одно поле с именем {gearboxx_body}, если только это поле не содержит более 300 символов, в этом случае я хочу отобразить поле с именем {article_blurb}. Я почти уверен, что нет способа сделать это только в полях и условных выражениях ExpressionEngine, поэтому я попробовал немного PHP, который я только начинаю изучать:

<?php

$info = array('{gearboxx_body}','{article_blurb}');

if(mb_strlen($info[0]) <= 300)
echo($info[0]);
}

else {
echo($info[1]);
}

?>

Так что это хорошо работает, но есть проблема. Если тег содержит апострофы или кавычки, он завершает строку и страница не загружается. Так что я могу с этим поделать? Я пытался заменить кавычки в строке, но мне сначала нужно было загрузить строку из полей, и как только я это сделал, страница уже сломана.

Надеюсь, это имело смысл. Какие-либо предложения?

1

Решение

Я бы порекомендовал вам справиться с этим в плагине EE, а не в шаблоне:

  • Рендеринг быстрее (потому что вам не нужны накладные расходы PHP в шаблонах)
  • Более безопасный и надежный
  • Быстрее развиваться, если вы освоите основы разработки ЭЭ это полезный жизненный навык
  • Все вокруг лучшие практики

Плагин, который я имею в виду, принимает три параметра:

Тело, реклама и ограничение персонажа.

Допустим, вы называете свой плагин «Blurby». В шаблоне у вас будет просто это:

{exp:blurby body="{gearboxx_body}" blurb="{article_blurb}" char_limit="300"}

Он по-разному возвращает любое из ваших полей в зависимости от логики, которую вы определили в самом плагине.

Увидеть документация для разработчиков плагинов.


В качестве альтернативы вы можете использовать страшные Heredoc синтаксис для установки переменных перед передачей их в ваш массив:

$body = <<<EOT
{gearboxx_body}
EOT;

$blurb = <<<EOT
{article_blurb}
EOT;
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]