Локализация значений экстраполей в TPL-шаблоне

Локализация значений экстраполей с типом select, radio и checklistbox позволяет использовать человекопонятные значения и чистые данные из SQL-таблицы

0 Published Filed under: Cotonti Siena CMF > Cotonti - reading materials. Documentation.

Если вы уже начали знакомиться с API Cotonti Siena, то наверняка успели заметить,что вывод значений экстраполей с типом select, radio и checklistbox несколько отличаются от остальных. Разница состоит в том, что их фактические значения, передаваемые при отправке формы, это, как правило числовые или строковые величины. Они обрабатываются в коде ядра, расширения или шаблона и, поэтому, подчиняются правилам или соглашениям по именам.

Однако при использовании таких значений непосредственно в шаблоне часто возникает необходимость заменить их на более дружественные пользователю имена. 

Например, мы создали для модуля Page экстраполе “Доставка” с кодом delivery и выбрали для него тип radio со значениями 0 и 1. Теперь, выбрав соответствующее значение при редактировании страницы, мы можем обработать его в шаблоне:

<!-- IF {PAGE_DELIVERY} == 1 -->
  Доставка возможна
<!-- ELSE -->
  Извините, только самовывоз
<!-- ENDIF -->

 

Вроде получилось неплохо. Но что если вам понадобится вывести значение нашего экстраполя в “человекопонятном” виде:

...
<li>
	{PAGE_DELIVERY_TITLE}: {PAGE_DELIVERY}
</li>
...

 

Получим что-то вроде “Доставка: 1”. Не очень красиво. Конечно, здесь можно использовать логику шаблонизатора, но код от этого не станет компактным и понятным:

XML/XHTML
 
1
2
3
4
5
6
7
8
9
10
...
<li>
    {PAGE_DELIVERY_TITLE}:
    <!-- IF {PAGE_DELIVERY} == 1 -->
    Да
    <!-- ELSE -->
    Нет
    <!-- ENDIF -->
</li>
...

Именно для таких случаев можно использовать локализацию значения экстраполя и тег с постфиксом _VALUE. Для этого прежде всего необходимо локализовать экстраполе. Напомним, что в нашем примере его имя delivery. В файле локализаций темы (например, nemesis.ru.php) укажем:

PHP
 
1
2
$L['delivery_0'] = "нет";
$L['delivery_1'] = "По Городу и Окрестностям";

Теперь в шаблон можно вернуть наш первоначальный вариант:

XML/XHTML
 
1
2
3
4
5
...
<li>
    {PAGE_DELIVERY_TITLE}: {PAGE_DELIVERY}
</li>
...

В результате получим “Доставка: по Минску и Беларуси” или “Доставка: нет”.

А как быть с логикой? А вот здесь мы можем использовать наш “новый” тег:

XML/XHTML
 
1
2
3
4
5
<!-- IF {PAGE_DELIVERY_VALUE} == 1 -->
  Доставка возможна
<!-- ELSE -->
  Извините, только самовывоз
<!-- ENDIF -->

Как видим, наш TPL-шаблон сохранил компактность и читабельность, а функционал использования экстраполей при этом расширился.

И последнее по локализации значений экстраполей: если в системе уже определена языковая lang-переменная с необходимым значением, оптимальнее будет использовать присваивание по ссылке, например:

PHP
 
1
2
$L['delivery_0'] &= $L['No'];
$L['delivery_1'] = "По Селу и Огородам";
No comments yet
Only registered users can post new comments
webitproff
webitproff

Offline

Last logged: 2026-10-20 01:59

About me briefly
Support and development of web projects on the CMF Cotonti: private messengers via the website, open and closed small social networks, trading platforms and marketplaces, freelance and services exchange portal, catalogs of goods from wholesale suppliers, dropshipping platforms, online stores, and much more.
Telegram for messages
@webitproff
Telegram channel
@s/aBuyFILE
Public profile
  • Date published 2021-11-12 17:34
  • Updated 2021-11-12 17:34

Similar pages

Локализация (перевод) названия и значений экстраполя
1 подробная пошаговая инструкция для новичков: как создать экстраполе типа select (выпадающий список) с названием «статус
Основные теги в шаблоне forums.sections.tpl - Справочник
2 основные теги с префиксом FORUMS_SECTIONS_ROW_, их источники и практическое применение.Основные теги от функции
Локализация экстраполей в Cotonti
3 Локализация экстраполей в Cotonti: полное пошаговое руководство для начинающих разработчиковЭкстраполя — это мощный
Локализация экстраполей в Cotonti Общий обзор
4 Локализация экстраполей в CotontiПолное практическое руководство для разработчиков: от механики движка до вывода в
Локализация экстраполей в Cotonti (пример: статус товара)
5 Локализация экстраполей в Cotonti: подробная инструкция на конкретном примере для начинающих разработчиковВведение