Page 1 of 1

Копия модуля

Posted: Tue Jan 15, 2013 9:09 am
by ehaldur
Здравствуйте.

Интересует, каким образом можно установить копию модуля News, чтобы изменив функционал, получить второй аналогичный модуль с другим названием и работающий параллельно?

Насколько это вообще реально? ??? ???

Дело в том, что требуется собрать свой модуль, и за основу хочу взять готовый (news очень подходит).

Заранее спасибо за отклик.

Re: Копия модуля

Posted: Tue Jan 15, 2013 6:39 pm
by von-hamster
Это сделать можно, но займет некоторое время.

Если вкратце - то для того, чтобы создать копию модуля нужно изменить следующие моменты:
1. Название папки
2. Название основного файла модуля
3. Название класса
4. Названия таблиц базы (а соответственно - прошерстить весь код модуля на предмет запросов).
5. Проверить, чтобы не пересекались названия функций, классов, маршрутов для ЧПУ если такие есть.
6. Для новостей есть упрощенный вызов модуля, тоесть для нового нужно либо писать свой smarty тэг либо вызывать через cms_module

Возможно забыл еще что.

Кстати - я начал писать статью про особенности написания модуля для данной системы - посмотри, может что интересного найдешь: http://von-hamster.ru/programmizm/php/c ... a-modulya/

Re: Копия модуля

Posted: Tue Jan 15, 2013 7:19 pm
by ehaldur
Спасибо.

По 4. и 5. пунктам требуется разъяснение.

Статья твоя как никогда актуальна!

Re: Копия модуля

Posted: Tue Jan 15, 2013 8:16 pm
by von-hamster
По четвертому пункту:
Если не менялась стандартная структура таблиц модуля и планируется использовать именно ее, то можно ничего не менять. Но в этом случае оба модуля будут работать с одними и теми-же данными.
Вообще текущее состояние модулей таково, что практически все запросы написаны вручную, каждый раз вычисляется название таблиц как в момент установки, так и во время выборок данных. Тоесть не достаточно поменять названия таблицы в одном месте - нужно просмотреть весь код и поправить все названия. Это для того, чтобы создать полностью автономный модуль. К сожалению, система пока (надеюсь, что именно пока :) ) не достигла того уровня, когда можно создавать модули при помощи наследования (ну тоесть теоретически можно, но не все, и это не удобно).

По пятому:
Если подключить 2 файла с одинаковыми названиями функций или классов - генерируется ошибка. Тоесть если установить оба модуля есть вероятность как раз запросить файлы с одинаковыми названиями.
По маршрутам - в модуле есть возможность создания шаблонов для чпу, если будет создано 2 одинаковых шаблона - то будет вызван первый попавшийся в списке (так было раньше, в новой версии пока до этого не дошел). Например, если задать два маршрута с шаблоном /news/, один для стандартного модуля, второй для своего - будет обработан первый в списке, причем как определен порядок в списке - я не очень понял.