Форум пользователей Impera CMS
Impera CMS - отличный движок для лёгкого создания интернет магазина.
Обладает невероятным количеством функций, необходимых в онлайн торговле.

Capitalize: вывод название страницы с большим первыми Буквами

Следить
Главная
12:05
17 апр
#
?
ekctpemict написал:

Подскажите, как? Simpla 1.4. Требуется решение, которое во фронтенде меняет выдаваемый текст с первыми большими символами. СSS или редактирование БД исключается, только модификацией кода движка.

Топик заимствован с форума Simpla CMS. Причина: затронутый вопрос общий для двух систем.

12:08
17 апр
#
Разработчик написал:

Если у Вас на сайте в политике безопасности Smarty разрешено использовать в качестве модификаторов функции PHP, используйте модификатор ucwords. Пример:

  {$переменная|ucwords}

Функция ucwords - возвращает строку, в которой первый символ каждого слова переведен в верхний регистр, если этот символ буквенный. Эта функция считает словами последовательности символов, разделенных пробелом, переводом строки, возвратом каретки, горизонтальной или вертикальной табуляцией.

Но идеальное решение Вашей задачи такое:

  {$переменная|lower|ucwords}

То есть сначала модификатором lower переводим содержимое переменной в нижний регистр, а потом первые буквы - в верхний. Так как ucwords не трогает остальные символы кроме первого в слове, следовательно для какого-нибудь "ПРЕдлоЖЕНИЯ СЛУЧАЙно напИСАННОГО РазнЫМИ РЕГИСТРАМИ" без использования lower на самом деле не получим ожидаемого "Предложения Случайно Написанного Разными Регистрами".

14:35
17 апр
#
?
ekctpemict написал:
  {$title|escape}

должно быть таким?

  {$title|escape|lower|ucwords}

В итоге получили ерор:

  Fatal error: Smarty error: [in index.tpl line 11]: [plugin] (secure mode) modifier 'ucwords' is not allowed
  (Smarty_Compiler.class.php, line 1934) in /var/www/machineq/machineq.com/Smarty/libs/Smarty.class.php
  on line 1113

Версия 1.4.3 не работает

14:42
17 апр
#
Разработчик написал:

1. Правильно будет {$title|lower|ucwords|escape}, ведь модификаторы выполняются в порядке объявления, и escape лучше ставить в конце.

Еще правильнее так: {$title|default:''|lower|ucwords|escape}, особенно касается Simpla 2.x, так как там Smarty3, и он требователен к неинициализированным переменным. В случае $title такое неочевидно, ибо эта переменная предполагается всегда быть проинициализированной. Чего не скажешь о переменных $products, $brands, $categories и тому подобных. Это дело предпочтений - с какой полнотой кодить в шаблоне, - но на мой взгляд, лучше быть уверенным в 100-процентной работе шаблона, чем уповать на подавление предупреждений об ошибках.

2. Я же говорил о политике безопасности Smarty. По умолчанию в Simpla 1.x (и также в Impera) она запрещает модификаторы из PHP, потому Вы получаете сообщение о недопустимости модификатора "... (secure mode) modifier 'ucwords' is not allowed ...". Нужно в строках подключения Smarty отключить режим безопасности или прописать ucwords в списке разрешенных.

Написание ответа

Перед публикацией рекомендуется использовать Предпросмотр, чтобы увидеть конечный вид сообщения.


Обратите внимание! Для противодействия спаму новые посты форума проявляются с задержкой от нескольких минут, пока не пройдут модерацию.