Чому MODX Evolution. Обрали свідомо: легкий CMF, який не нав'язує структуру, — дерево ресурсів природно лягло на розгалужені розділи санаторію, а чанки, сніпети й TV-параметри дали змогу зібрати шаблони без «боротьби з движком». Для адміністратора Evo-менеджер простий і звичний, а будь-яка нестандартна логіка — як-от система цін — пишеться маленьким сніпетом на PHP, без плагінів-комбайнів.
Головне рішення — наскрізні змінні цін. Суть проста: жодна ціна не пишеться в тексті сторінки руками. Замість цифри редактор вставляє код ціни, а сама цифра живе в єдиному реєстрі. У базі даних створили окрему таблицю з унікальним символьним кодом, значенням та службовими полями для кожної позиції прайсу — коди будуються за зрозумілою схемою: категорія номера + варіант розміщення або назва послуги. Разом із номерним фондом (шість категорій номерів на п'ять варіантів заселення) та додатковими послугами реєстр охоплює весь прейскурант санаторію.
Для виводу ціни зробили маленький сніпет Price, який можна викликати будь-де — у контенті сторінки, чанку шаблону, TV-параметрі, виводі Ditto — та який сам форматує суму (розділювач тисяч, нерозривні пробіли, валюта), тому ціни виглядають однаково на всіх сторінках і всіма мовами: перекладені версії викликають ті самі коди. Зведена таблиця на сторінці «Ціни», картка кожного номера в розділі «Проживання», блок «від … грн/доба» на головній — усі беруть ціну з одного джерела, тож розбіжності стають неможливими.
Оновлення прайсу одним файлом. Найприємніша частина для адміністратора: у менеджері MODX зробили простий модуль «Прайс» зі сторінкою завантаження CSV/Excel-файлу — бухгалтерія санаторію і так веде прейскурант у таблиці, домовилися лише про формат колонок. Модуль працює у два кроки: спершу попередній перегляд, де адміністратор бачить таблицю «код → стара ціна → нова ціна» зі змінами, підсвіченими окремо, і попередженнями про невідомі чи пропущені коди — це страхує від найтиповішої помилки, з'їхалих колонок чи одруку. Лише після підтвердження модуль оновлює реєстр однією транзакцією, зберігає попередню версію прайсу в таблиці історії для можливого відкату й чистить кеш сторінок MODX. У результаті: завантажив файл → переглянув різницю → натиснув «Застосувати» — і за дві хвилини нові ціни стоять на кожній сторінці сайту всіма чотирма мовами, без жодного відкритого документа в редакторі.
Інші рішення проєкту. Багатомовність реалізували як чотири мовні гілки з дзеркальною структурою — наскрізні змінні цін тут окупилися подвійно, оскільки цифри спільні для всіх мов, перекладаються лише тексти. Каталог номерів і лікувальних програм зібрали на TV-параметрах і Ditto з фото, описом, переліком процедур і ціною через той самий сніпет. Форми заявок і бронювання відправляють дані менеджеру, підставляючи ціни з того ж реєстру, тому менеджер і гість завжди бачать однакові суми. Кешування MODX разом із єдиним запитом реєстру цін на сторінку тримає сайт легким попри розгалужену структуру.
Підсумок для клієнта. Санаторій отримав чотиримовний сайт, який адміністратор веде самостійно. А рішення зі наскрізними змінними цін перетворило найбільш ризиковану рутину — оновлення прейскуранта — на дві хвилини роботи з одним файлом. Підхід універсальний: реєстр цін, сніпет-плейсхолдер і модуль імпорту можна повторити на будь-якому MODX-сайті (та й не лише на MODX), де ціни розкидані по багатьох сторінках.


Гості обирають номер і перевіряють ціни як удома за ноутбуком, так і з телефону в дорозі, тож картки номерів, зведена таблиця цін і форма заявки адаптовані під будь-який пристрій — і показують однакові актуальні суми незалежно від мови та екрана.q