Локализация (перевод) названия и значений экстраполя

подробная пошаговая инструкция для новичков Cotonti CMF: как создать экстраполе типа select (выпадающий список) с названием «статус товара», локализовать и название поля, и все его значения на русский язык (и при необходимости — на другие языки)

подробная пошаговая инструкция для новичков: как создать экстраполе типа select (выпадающий список) с названием «статус товара», локализовать и название поля, и все его значения на русский язык (и при необходимости — на другие языки), а затем вывести это поле красиво в шаблонах страниц (модуль page).

Цель: чтобы на сайте вместо технических значений in_stock, out_of_stock и т.д. отображались нормальные фразы «В наличии», «Нет в наличии», «Заканчивается», «Под заказ» — и всё это с поддержкой перевода через языковые файлы.

1. Вход в админ-панель

Зайдите в админку → Управление сайтомДополнительные поля (Extra fields) (прямая ссылка обычно: /admin.php?m=extrafields)

2. Выберите таблицу, к которой добавляем поле

В большинстве случаев для товаров используется таблица pages (страницы). Нажмите на строку с таблицей cot_pages (или просто «Pages» / «Страницы»).

Если у вас товары находятся в другой таблице (например, плагин market → cot_market), тогда выбирайте соответствующую таблицу.

3. Создаём новое экстраполе

Нажмите кнопку Добавить (Add) вверху или внизу списка.

Заполните поля внимательно:

  • Имя поля (Field name) → tovar_status (только латинские буквы, цифры, подчёркивание, без пробелов и русских букв!)
  • Тип поля (Field type) → выберите select
  • Описание (Description) → Статус товара (это покажется в админке как подсказка, можно писать по-русски)
  • Варианты (Variants) → Вставьте ровно так (каждое значение с новой строки):
text
 
in_stock
out_of_stock
low_stock
preorder

Это внутренние (технические) значения, которые будут сохраняться в базу данных.

  • По умолчанию (Default) → in_stock (или оставьте пустым)
  • Обязательное (Required) → поставьте галочку, если хотите, чтобы поле обязательно заполнялось
  • Парсинг (Parse) → оставьте HTML (по умолчанию)
  • Включено (Enabled) → должно быть включено

Остальные поля (HTML, Params) можно оставить пустыми — система сама подставит стандартный <select>.

Нажмите ДобавитьСохранить.

4. Проверяем, что поле появилось в базе

После добавления в списке экстраполей должно появиться поле tovar_status с типом select. Если всё прошло успешно — в таблице cot_pages появится колонка page_tovar_status (VARCHAR 255).

5. Самое важное — локализация (перевод) названия и значений

Cotonti позволяет переводить:

  • название самого поля
  • каждое значение из выпадающего списка

Для этого нужно создать/отредактировать языковой файл.

Шаг 5.1. Определите текущий язык сайта Зайдите в КонфигурацияЛокализация → посмотрите значение defaultlang (обычно ru или en).

Шаг 5.2. Откройте (или создайте) файл Путь: /lang/ВАШ_ЯЗЫК/main.lang.php Пример: /lang/ru/main.lang.php

Если файла нет — скопируйте /lang/en/main.lang.php и переименуйте в ru.

Шаг 5.3. Добавьте в конец файла следующие строки:

PHP
 
<?php
defined('COT_CODE') or die('Wrong URL');
// Название поля (отображается в форме редактирования и на сайте)
$L['page_tovar_status_title'] = 'Статус товара';
// Значения списка (ключ = имя_поля_значение)
$L['tovar_status_in_stock'] = 'В наличии';
$L['tovar_status_out_of_stock'] = 'Нет в наличии';
$L['tovar_status_low_stock'] = 'Заканчивается';
$L['tovar_status_preorder'] = 'Под заказ';

Важные правила названий строк в $L[]:

  • Название поля → page_ИМЯПОЛЯ_title (потому что поле в таблице pages и префикс page_)
  • Каждое значение → ИМЯПОЛЯ_ЗНАЧЕНИЕ (без префикса page_ !)

Шаг 5.4. Сохраните файл и очистите кеш Админка → ДругиеОчистить кеш (или просто удалите папку /cache/* через FTP, кроме .htaccess и index.html).

6. Проверяем в админке редактирования страницы

Зайдите в любую страницу → вкладка Дополнительно (Extra fields). Должно появиться поле «Статус товара» с выпадающим списком:

  • В наличии
  • Нет в наличии
  • Заканчивается
  • Под заказ

Выберите одно значение и сохраните страницу.

7. Вывод на сайте — в шаблонах страниц

Есть два основных способа вывести локализованное значение:

Способ А — самый простой и рекомендуемый (автоматический)

В файле шаблона страницы (например themes/ВАША_ТЕМА/page.tpl или page.tpl вашего модуля/скина):

HTML
 
<!-- В блоке описания товара или характеристик -->
<div class="product-status">
 {PAGE_TOVAR_STATUS_TITLE}: <strong>{PAGE_TOVAR_STATUS}</strong>
</div>

Теги, которые вы получите автоматически:

  • {PAGE_TOVAR_STATUS_TITLE} → «Статус товара»
  • {PAGE_TOVAR_STATUS} → «В наличии» (или другое переведённое значение)

Способ Б — если нужен сырой код значения (технический)

Иногда требуется сравнивать или выводить иконки/классы по статусу:

HTML
 
<!-- Пример с классами для стилизации -->
<div class="status status-{PAGE_TOVAR_STATUS_VALUE|strtolower}">
 {PAGE_TOVAR_STATUS}
</div>

Тогда добавьте ещё один тег:

  • {PAGE_TOVAR_STATUS_VALUE} → in_stock / out_of_stock и т.д. (сырое значение из базы)

Пример полной стилизации:

HTML
 
<!-- page.tpl -->
<!-- BEGIN: MAIN -->
<div class="product-info">
 <!-- Статус товара -->
 <div class="status-line">
 <span class="label">{PAGE_TOVAR_STATUS_TITLE}:</span>
 <span class="value
 <!-- IF {PAGE_TOVAR_STATUS_VALUE} == 'in_stock' -->in-stock<!-- ENDIF -->
 <!-- IF {PAGE_TOVAR_STATUS_VALUE} == 'out_of_stock' -->out-of-stock<!-- ENDIF -->
 <!-- IF {PAGE_TOVAR_STATUS_VALUE} == 'low_stock' -->low-stock<!-- ENDIF -->
 <!-- IF {PAGE_TOVAR_STATUS_VALUE} == 'preorder' -->preorder<!-- ENDIF -->
 ">
 {PAGE_TOVAR_STATUS}
 </span>
 </div>
</div>
<!-- END: MAIN -->

И CSS (пример):

CSS
 
.status-line .value.in-stock { color: #28a745; font-weight: bold; }
.status-line .value.out-of-stock { color: #dc3545; text-decoration: line-through; }
.status-line .value.low-stock { color: #fd7e14; }
.status-line .value.preorder { color: #007bff; }

8. Дополнительные проверки и типичные ошибки

  • Поле не появилось в форме? → проверьте, включено ли оно (Enabled = 1)
  • Значения выводятся как in_stock вместо «В наличии»? → → не добавили строки в main.lang.php → не очистили кеш → неверно назвали ключи в $L[]
  • Поле не сохраняется? → проверьте права на запись в базу (чаще всего MySQL user)
  • Нужно несколько языков? → создайте аналогичный блок в /lang/en/main.lang.php, /lang/ua/main.lang.php и т.д.

9. Итоговый список файлов, которые вы изменили

  1. Админка → Extra fields → cot_pages → добавили tovar_status (select)
  2. /lang/ru/main.lang.php → добавили 5 строк локализации
  3. Шаблон themes/ВАША_ТЕМА/page.tpl → добавили теги {PAGE_TOVAR_STATUS} и т.д.
4 минут чтения Sodium Carbonate

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

webitproff

Оффлайн

Sodium Carbonate

Последняя авторизация: 18.07.2026 14:46

  • Страница размещена: 01.03.2026 09:01
  • Последнее обновление: 01.03.2026 09:03

Похожие страницы

Перевод и локализация дистрибутива Cotonti Siena
1 В дистрибутиве Cotonti присутствуют два основных языка -- английский и русский. В дополнение к ним активно
Локализация значений экстраполей в TPL-шаблоне
2 Если вы уже начали знакомиться с API Cotonti Siena, то наверняка успели заметить,что вывод значений экстраполей с типом
ugc и sponsored пополнили варианты значений для атрибута rel
3 Google внес важные изменения в документ, отражающий позицию поисковика в отношении размещаемых на сайтах исходящих
Экстраполя в шаблонах в модуле "Page" Cotonti
4 В коде Cotonti в модуле "Page" для добавления страницы есть участок, который обрабатывает дополнительные поля
Локализация и языковые переводы плагинов и модулей в Cotonti
5 Локализация плагинов и модулей в Cotonti: полный практический разбор от принципов до вывода в