Обсуждаем возможности
Озадачился переносом сайтов со старых версий и столкнулся с проблемой модулей.
Не спорю, может у меня кривые руки или одно из двух, но в голову пришла такая идея. Предлагаю обсудить
--------------------------------------------------------------------
Преамбула
При миграции старого сайта едиинственное узкое менсто — это таблица cms_modules, в которой содержатся данные о расположении
модулей и их шаблонах.
Эта же сложность возникает тогда, когда хочется изменить дефолтный шаблон на другой, но разместить модули по другому, не стандартно.
Решение
Для каждого шаблона необходима своя таблица cms_modules
Реализация
В админке, в настройках сайта, на вкладке "Дизайн", добавить кнопку "добавить новый шаблон"
по нажатию на кнопку, появляется поле, предлагающее ввести имя шаблона (не больше 10 символов, только английскими буквами и цифрами)
Например, mytemplate
Далее, в базе данных создается таблица с названием cms_modules_mytemplate
в нее копируется таблица cms_modules
Далее, нам нужна переменная, которая будет содержать наименование нужной нам таблицы, допустим $tplname
при выборе дефолтного шаблона, она принимает значение "cms_modules"
при выборе альтернативного шаблона — "cms_modules_mytemplate"
после чего необходимо заменить в ядре все прямые вызовы таблицы cms_modules на вызовы через переменную.
та же история со второй таблицей cms_modules_bind
и альтернативной для нее таблицей cms_modules_bind_mytemplate
Что мы имеем в итоге:
Для каждого шаблона подключается СВОЯ таблица модулей, что позволяет откатить сайт в случае краша через замену названия
шаблона в файле-конфигураторе (на крайний случай)
И позволяет комфортно работать над созданием своего шаблона, не боясь уронить сайт или испытывая ограничение в размещении модулей и
создании их шаблонов.
Саму переменную можно хранить в том же файле-конфигураторе, чтобы не изменять базу
---------------------
Хочется услышать мнения, особенно гуру кодинга по данному вопросу, его целесообразности и возможности реализации
Вот только с этим не согласен:
Надо 12 и без привязки к каким-то английским буквам.не больше 10 символов, только английскими буквами и цифрами
К примеру, тысячам бедных японских пользователей InstantCms 1-х что по вашему делать?
К примеру, тысячам бедных японских пользователей InstantCms 1-х что по вашему делать?
харакири...
или выучить английский :)
Напомню, на первой ветке идеология работы модулей (на пальцах) такова:
1. Движок из таблицы cms_modules выбирает все включенные модули, которые должны выводиться на текущей странице, и формирует из них массив.
2. Массив перебирается. По имени модуля вызывается тело модуля, которое получает из базы контент модуля, обрабатывает и передает шаблону модуля для отображения.
3. Движок ищет шаблон сперва в текущем шаблоне, если не находит, берет из дефолтного.
Андрей, ты предлагаешь, только для того, чтобы адаптировать единственный сайт, перекроить весь движок? На отдельно взятом сайте — плиз, флаг в руки и барабан на шею.
Но не в релизе. Тут я буду тверд и категоричен — нет.
Андрей, tсли уж тебе так приспичило иметь для модуля несколько шаблонов, курочить движок ни к чему. Достаточно в модуле ручками прописать нужный шаблон. Все.
PS. Олег Васильевич, а ты не подначивай.
Это действительно так. И причина банальна: Овчинка выделки не стоит.Андрей, твое предложение порочно и ведет в тупик.
А кнопка "добавить новый шаблон", вообще анекдот (шаблон — это каталог в папке templates).
Требуется лишь файловая идентичность шаблонов (не велики затраты).
Кроме модулей следует также обратить внимание на используемые Шаблоны статей.
К примеру: com_content_read_50%.tpl и com_content_read_01.tpl на сайте 107.icms.su
используются для вывода — 107.icms.su/stati/psihologija/yempiricheskii-kontrast-metodologija-i-osobennosti.html
и 107.icms.su/novosti/audio-i-video-na-saite.html
Все шаблоны сайта должны быть идентичны.
Успехов.