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

подробная пошаговая инструкция для новичков 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 minutes read Sodium Carbonate

Comments (0)

No comments yet
Only registered users can post new comments

Content author

webitproff

Offline

Sodium Carbonate

Last logged: 2026-09-03 18:32

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.
View developments and download
Public portfolio of my works and developments
Telegram for messages
@webitproff
Telegram channel
@s/aBuyFILE
  • Page published: 2026-03-01 09:01
  • Last update: 2026-03-01 09:03

Similar pages

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