Форуми / National / Russian / Модули и плагины / Новый хук для pages

cot_page_import

Roffun
#41900 07.07.2016 08:00
#41898 Macik:
  1. Хочу услышать подробней про сценарий использования, что будет вызываться по хуку (имею в виду алгоритм той части что будет вызвана в конкретно вашем случае). 

Задача была следующая:

Написать плагин, который после установки создает N количество дополнительных ячеек в таблице cot_pages, на данный момент их 4, потом будет больше 10. Содержимое должно заполняться в добавлении, правиться в редактировании, выводиться на страницах модуля page. В приоритете использовать по максимуму возможности движка, а дописывать по минимуму. Плагин будет расширяться по мере развития. С содержимым потом будут работать функции, например слаживать результат вывода 2 полей и выводить готовый параметр и тд. 

Добавление проблем не вызвало, в setup папке файлы install и uninstall своё дело сделали, в Hooks=page.add.tags  создались теги.

Редактирование тоже проблем не вызвало Hooks=page.edit.tags.

Вывод на страницу тоже проблем не вызывает Hooks=page.tags.

Для того чтобы всё вышеперечисленное работало, осталось параметры скидывать в нужном направлении. Просмотрел весь код файла page.functions.php, код аналогичных модулей / плагинов, и пришел к выводу что во многих функциях есть хуки, а в этой нет. Так как в функцию нужно передать идентичные данные , например:

$rpage['page_myone'] = (int)cot_import('rpage_page_myone', $source, 'INT');

$rpage['page_mytwo'] = (int)cot_import('rpage_page_mytwo', $source, 'INT');

 

Попробовал вариант с добавлением хука, и всё стало работать как часики. Если есть более продвинутые варианты решения подобной задачи, с удовольствием почерпну опыт, пригодится не один раз еще, и другим будет полезно почитать.

 

#41898 Macik:   Мое мнение таково, что расширение функций хуками не очень хорошая практика (не смотря на то, что много где используется в нашем движке). 

Если есть более оптимальный способ решения подобных задач, то можно конечно и без этого хука обойтись, просто я исходил из того, что в других подобных функциях он есть.

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts

Відредаговано: Roffun (08.07.2016 09:28, 8 років тому)