Поддержка языковых файлов из отдельной специальной директории /system/languages/ru/fields/

ЕСТЬ РЕШЕНИЕ InstantCMS 2.X

Как правильно запустить эту возможность

#1 28 января 2022 в 11:58

Добрый день.

Для полей добавлена поддержка языковых файлов из отдельной специальной директории /system/languages/ru/fields/

Решил использовать эту возможность последнего релиза.

Создал одноименную с полем директорию по указанному пути и в ней одноименный php-файл со списком define
Сделал вставки  ' _F_ ' в константах поля, как в поле Категории.
В системном файле указал 

  1. protected $use_language = true;

но все время получаю Warning: Use of undefined constant

Причем если действовать по старому правилу, т.е. вставить код в system/languages/ru/language.php, то все работает.
Но при этом если запустить одновременно и языковой файл поля, то выдает нотисы, что константы уже определены в нем, т.е. файл подключен.

Что я недоучитываю при создании языкового файла поля?

#2 28 января 2022 в 12:02

 wir, я не уверен, но наверное нужно не создавать /system/languages/ru/fields/field_name/field_name.php, а надо просто /system/languages/ru/fields/field_name.php?

#3 28 января 2022 в 12:36

 wir, я не уверен, но наверное нужно не создавать /system/languages/ru/fields/field_name/field_name.php, а надо просто /system/languages/ru/fields/field_name.php?

Panda58dev

Нет, так не работает и файл не подцепляется.
В релизе написано

пример использования — поле «Категории контента»;

#4 28 января 2022 в 15:09

У поля категории нет переменной с названием поля github.com/instantsoft/icms2/blob/1fc0b7303bd00e80febece3a239fb81dc7e2c640/system/fields/category.php#L3

У вас, видимо, есть. Отсюда и ошибка.

#5 28 января 2022 в 16:45

Допустим есть поле zzzzz (имя взял от балды лишь бы визуально бросалось в глаза)


1. Создаем языковый файл 
/system/languages/ru/fields/zzzzz/zzzzz.php
с содержанием типа

  1. <?php
  2. define('LANG_F_ZZZZZ_TEXT1', 'Какой-то текст');
  3. define('LANG_F_ZZZZZ_TEXT2', 'Еще текст');

Сделал вставки  ' _F_ ' в константах поля, как в поле Категории.

wir

_F_ — это просто для удобства придумано некое правило обзывания констант движка чтобы легче было разбирать код.
В принципе вместо LANG_F_ZZZZZ_ может быть любая абракадабра лишь бы соответствовала правилам имен в php 

.

2.Системные файлы поля располагаются по адресу /system/fields/zzzzz.php
В этом файле после определение класса

  1. class fieldZzzzz extends cmsFormField {

добавляем 

  1. protected $use_language = true;

3. И ниже в коде вместо текста используем константы типа LANG_F_ZZZZZ_TEXT1 из ранее созданного языкового файла.

ВСЁ! текст есть.

#6 28 января 2022 в 16:59

Zau4manSonat, всё верно. Константы доступны после создания объекта поля.

Если нужно использовать константу для свойства $title, то это нужно делать в конструкторе, как, например, тут.

#7 28 января 2022 в 18:19

Zau4manSonat, всё верно. Константы доступны после создания объекта поля.

Если нужно использовать константу для свойства $title, то это нужно делать в конструкторе, как, например, тут.

Fuze

Все верно !
Всем участникам большое спасибо !
Юбиляра еще раз поздравляем с ЮБИЛЕЕМ !!!

Изображение

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.