instantsoft / icms2

Self-hosted Site Management System
https://instantcms.ru
GNU General Public License v2.0
294 stars 120 forks source link

Некорректная работа рандомизатора SEO-паттернов #1172

Closed iAndroS closed 4 years ago

iAndroS commented 4 years ago

Используемая версия InstantCMS: 2.13.1

Версия PHP: 7.1.14 Как воспроизвести проблему:

Воспроизводится ли проблема на демо http://demo.instantcms.ru/: ДА

На демо-сайте также пробовал с объявлениями самые разные конструкции с разным количеством скобок - неправильный вывод в итоге всегда. Например, "Это объявление {{{в категории {category}}|{категория {category}}}" выведет "Это объявление }|}}"

Loadir commented 4 years ago

В фигурные скобки надо вставлять только "переменные" - системные названия полей и т. п. Всё, что не совпадет с доступными данными сотрется.

iAndroS commented 4 years ago

{category: в %s категории}|{category: категория %s} тоже не работает - выводит оба значения через |

Loadir commented 4 years ago

Всё верно. Работать будет только так {category}: в %s категории|{category}: категория %s

Loadir commented 4 years ago

при этом %s так и останутся %s

iAndroS commented 4 years ago

Всё верно. Работать будет только так {category}: в %s категории|{category}: категория %s

да не будет так работать... <title>Вакансии: в %s категории|Вакансии: категория %s &mdash; InstantCMS 2 демо сайт</title>

а вот конструкция вида {category: в %s категории}|{category: категория %s} должна работать... Screenshot_1 Скриншот из документации по теме

Loadir commented 4 years ago

А вместо {category}, если использовать поле например {title}, тоже не работает? {title: в %s категории}|{title: категория %s}

iAndroS commented 4 years ago

{title: в %s категории}|{title: категория %s}

проверять не стал, но полагаю, что выдаст тоже самое, только вместо слова Вакансия выдаст заголовок объявления )))

Думаю, нужно просто внедрять в паттерны еще квадратные скобки, чтоб движок мог вложенные конструкции обрабатывать ) А если еще внедрить условия if/else то вообще огонь будет