Поэтому я импортирую поля 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]);
}
?>
Так что это хорошо работает, но есть проблема. Если тег содержит апострофы или кавычки, он завершает строку и страница не загружается. Так что я могу с этим поделать? Я пытался заменить кавычки в строке, но мне сначала нужно было загрузить строку из полей, и как только я это сделал, страница уже сломана.
Надеюсь, это имело смысл. Какие-либо предложения?
Я бы порекомендовал вам справиться с этим в плагине EE, а не в шаблоне:
Плагин, который я имею в виду, принимает три параметра:
Тело, реклама и ограничение персонажа.
Допустим, вы называете свой плагин «Blurby». В шаблоне у вас будет просто это:
{exp:blurby body="{gearboxx_body}" blurb="{article_blurb}" char_limit="300"}
Он по-разному возвращает любое из ваших полей в зависимости от логики, которую вы определили в самом плагине.
Увидеть документация для разработчиков плагинов.
В качестве альтернативы вы можете использовать страшные Heredoc синтаксис для установки переменных перед передачей их в ваш массив:
$body = <<<EOT
{gearboxx_body}
EOT;
$blurb = <<<EOT
{article_blurb}
EOT;
Других решений пока нет …