vpktz |
|
---|---|
Очень часто при верстке, сборке cotonti сталкиваюсь с моментом, где нужно информацию со одной странице вывести на некоторой другой, но там она уже не выводиться. Некоторые плагины или модули позволяют выводить их информацию на практически любых других страницах, плагинов и модулей, другие же плагины выводят информацию только на жестко определенных страницах определенных модулей и плагинов. Вопрос, как выводить информацию того или иного модуля/плагина плагина в том месте где это хотелось бы? Часто слышу о методе что "напиши hook" . Пытался пару раз углубится в это, но так не смог разобаться. Хотелось бы разобраться и понять это. Более подробно, в деталях, на примере какого то маленького плагина. Информацию которого нужно вывести например в header |
Kabak |
|
---|---|
на сайте есть : страницы , форумы, комментарии. Вам нужно вывести информацию из этих разделов или из каких-то других ? |
Kort |
|
---|---|
В самом простом варианте это можно сделать, например, через плагин Pagelist:
Теперь, если при правке страницы указать id страницы-донора, то конструкция из п. 1 выведет в соответствующем месте текст страницы-донора. Естественно, в шаблоне pagelist.getpagedata.tpl можно использовать любое поле или экстраполе. Если хочется в header.tpl / footer.tpl, то логика будет такая: <!-- IF {PHP.pag.page_getpagedata} --> {PHP.pag.page_getpagedata|sedby_pagelist('pagelist.getpagedata', 1, '', 'page_id = $this')} <!-- ENDIF --> Если надо вообще отвязаться от текущей страницы и глобально вставлять страничное поле/экстраполе, тогда так: {PHP|sedby_pagelist('pagelist.getpagedata', 1, '', 'page_id = 11')} Пункты 1 и 3 в этом случае не нужны, вместо 11 указать id страницы-донора, а условие (если необходимо) придумать свое. SED.by - создание сайтов, разработка плагинов и тем для Котонти
|
|
Отредактировано: Kort (23.11.2023 16:57, 11 месяцев назад) |
vpktz |
|
---|---|
#47443 Kort: На первом пункте уже не понимаю. Как создать экстраполе? (пж не ругайтесь) |
Kort |
|
---|---|
Хмм. Все страньше и страньше... Админка -> Управление -> Экстраполя -> Pages SED.by - создание сайтов, разработка плагинов и тем для Котонти
|
Argont |
|
---|---|
#47447 Kort: Kort, при всём уважении, это вам просто, как одному из отцов этого детища, а новичкам нужна инструкция с пояснениями, с примерами. сам честно создавал метом проб и ошибок, но прошел не так далеко как хотелось бы, и это не правильно. хотелось бы иметь под рукой руководство по созданию экстраполей, начиная с основ, - типы экстраполей, и что каждый из них значит и для чего лучше использовать, а там дальше в лес, взависимости от типа экстраполя - лес сгущается на параметрах полей. Экстраполя в движке котонти, это то что можно назвать "фишкой", преимуществом, но к сожалению этот потенциал уверен многими не раскрывается в полной мере в силу скудной документацией по этой теме. иногда поржать над задравшим подбородок разработчиком
|
vpktz |
|
---|---|
#47443 Kort:
А другие способы есть? Это что то я в обще не осиляю, вернее слишком много вопросов у меня, через слово вашей инструкции у меня вопрос. Это значит что я наверное точно долго буду тыкаться. Может проще еще каким нибудь способом? |
Argont |
|
---|---|
#47441 vpktz: Вы хоть пример приведите, какую именно информацию и куда конкретно нужно иногда поржать над задравшим подбородок разработчиком
|
vpktz |
|
---|---|
#47472 Argont:#47441 vpktz: В users.details.tpl есть тег {USERS_DETAILS_PROJECTS_COUNT} который выводит число сколько всего юзер сделал заказов. Этот тег срабатывает только в users.details.tpl. Я хочу сделать что бы на всех страницах где воводится изер можно было вывести и количество его заказов. Что бы было типо информативно, под ником видно сразу какой рейтинг, отзывы, заказы Я так понимаю этот тег от модуля projects
Как по моей логике мне что то подсказывает что проще маленький плагин сделать, который будет цыплять эту цифру. Это наверное и есть hook |
|
Отредактировано: vpktz (26.11.2023 09:59, 11 месяцев назад) |
Kort |
|
---|---|
В php-файле темы прописываем функцию: function sedby_user_projects_count($user_id = 1) { Cot::$db->registerTable('projects'); return Cot::$db->query("SELECT COUNT(*) FROM " . Cot::$db->projects . " WHERE item_userid = $user_id")->fetchColumn(); } Отдаем ID пользователя этой функции в качестве аргумента для получения количества проектов. Например, на странице users: <!-- BEGIN: USERS_ROW --> ... {USERS_ROW_ID|sedby_user_projects_count($this)} ... <!-- END: USERS_ROW --> SED.by - создание сайтов, разработка плагинов и тем для Котонти
|
vpktz |
|
---|---|
#47480 Kort: Отлично работат, это прекрасно. Это и есть тот самый hook? |
Kort |
|
---|---|
Это просто глобальная функция SED.by - создание сайтов, разработка плагинов и тем для Котонти
|
vpktz |
|
---|---|
Kort |
|
---|---|
Это библиотека функций, общих для pagelist и схожих плагинов. Скачивать здесь. SED.by - создание сайтов, разработка плагинов и тем для Котонти
|
vpktz |
|
---|---|
Получается мой вопрос мог быть решен 4 способами? 1 Глобальная функция 2 Через плагин pagelist 3 Написать отдельный плагин 4 Через тот самый hook |