Идея в следующем: бывают сценарии, когда часть текста в поле нужна только если значение какого-то поля не пустое. Предлагаю добавить некие условные конструкции в шаблон для решения этой задачи.
Конкретный пример: есть сущность «Склады».
Склад может быть подчинён другому складу. Реализовано через поле «Родительский склад» с типом «Сущность».
Есть потребность выводить имя склада в виде «Основной склад > Подчинённый склад».
Для формирования имени склада использую поле «Статический текст по шаблону» с шаблоном типа «[123] > [124]», где «[123]» — аналогичное поле родительского склада, «[124]» — название текущего склада.
Проблема получается для корневых элементов. Так как поле «[123]» для них пустое, получаем текст вида «> Основной склад».
На данный момент решил вопрос для себя добавлением конструкции вида «[> какой-то текст]» с логикой: если итоговая строка начинается с этой конструкции — удаляем её, если конструкция встречается в середине строки — удаляем управляющие символы, оставляя только содержимое.
На примере выше выглядит так: шаблон «[123] [>>] [124]».
Для вложенного элемента получаем «Основной склад > Подчинённый склад».
Для корневого — «Основной склад».
Пример реализации в прикреплённом файле на строках 302–309.
Условные блоки в шаблонах для полей Статический текст по шаблону и Текст по шаблону
-
DmitrYsOne
- Сообщения: 22
- Зарегистрирован: 12 ноя 2019, 20:32
- Имя: Дмитрий
- Откуда: Россия Сургут
Условные блоки в шаблонах для полей Статический текст по шаблону и Текст по шаблону
- Вложения
-
- fieldtype_text_pattern.php
- (19.22 КБ) 27 скачиваний
- support
- Техническая поддержка
- Сообщения: 7660
- Зарегистрирован: 19 окт 2014, 18:22
- Имя: Харчишин Сергей
- Откуда: Крым, Евпатория
Re: Условные блоки в шаблонах для полей Статический текст по шаблону и Текст по шаблону
Есть поле PHP код, где можно писать свою логику.
-
DmitrYsOne
- Сообщения: 22
- Зарегистрирован: 12 ноя 2019, 20:32
- Имя: Дмитрий
- Откуда: Россия Сургут
Re: Условные блоки в шаблонах для полей Статический текст по шаблону и Текст по шаблону
Действительно, как-то не подумал. Спасибо за ответ!