cotonti.com : Больная тема hook https://www.cotonti.com Последние сообщения в теме Cotonti en Sun, 12 Oct 2025 12:16:10 -0000 Kort Pagelist -- это плагин, который делает функцию sedby_pagelist() глобальной через хук global. Так что путь у тебя один)

]]>
ср, 29 ноя 2023 05:30:21 -0000
vpktz Получается мой вопрос мог быть решен 4 способами?

1 Глобальная функция

2 Через плагин pagelist

3 Написать отдельный плагин

4 Через тот самый hook

]]>
вт, 28 ноя 2023 18:37:30 -0000
Kort Это библиотека функций, общих для pagelist и схожих плагинов. Скачивать здесь.

]]>
вт, 28 ноя 2023 07:31:09 -0000
vpktz #47493 Kort:

Это просто глобальная функция

скачивал у вас pagellist его установка потребовала предустановить библиотеку Cotli

Что это за библиотека? для чго она?

]]>
пн, 27 ноя 2023 19:13:33 -0000
Kort Это просто глобальная функция

]]>
пн, 27 ноя 2023 09:11:40 -0000
vpktz #47480 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 -->

Отлично работат, это прекрасно.

Это и есть тот  самый hook?

]]>
вс, 26 ноя 2023 13:12:21 -0000
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 -->
]]>
вс, 26 ноя 2023 10:05:42 -0000
vpktz #47472 Argont:
#47441 vpktz:

Очень часто при верстке, сборке cotonti сталкиваюсь с моментом, где нужно информацию со одной странице вывести на некоторой другой, но там она уже не выводиться.

Хотелось бы разобраться и понять это. Более подробно, в деталях, на примере какого то маленького плагина. Информацию которого нужно  вывести например в header

Вы хоть пример приведите, какую именно информацию и куда конкретно нужно

В users.details.tpl есть тег {USERS_DETAILS_PROJECTS_COUNT} который выводит число сколько всего юзер сделал заказов.

Этот  тег срабатывает только в  users.details.tpl.

Я хочу сделать что бы на всех страницах где воводится  изер можно было вывести и количество его заказов. 

Что бы было типо информативно, под ником видно сразу какой рейтинг, отзывы, заказы

Я так понимаю этот тег от модуля projects

 

Как по моей логике мне что то подсказывает что проще маленький плагин сделать, который будет цыплять эту цифру. Это наверное и есть hook

]]>
вс, 26 ноя 2023 09:48:04 -0000
Argont #47441 vpktz:

Очень часто при верстке, сборке cotonti сталкиваюсь с моментом, где нужно информацию со одной странице вывести на некоторой другой, но там она уже не выводиться.

Хотелось бы разобраться и понять это. Более подробно, в деталях, на примере какого то маленького плагина. Информацию которого нужно  вывести например в header

Вы хоть пример приведите, какую именно информацию и куда конкретно нужно

]]>
сб, 25 ноя 2023 20:10:22 -0000
vpktz #47443 Kort:

В самом простом варианте это можно сделать, например, через плагин Pagelist:

  1. Создаем страничное экстраполе для указания ID страницы, с которой будем брать информацию (например, page_getpagedata).В шаблон page.tpl добавляем следующую конструкцию:
    <!-- IF {PAGE_GETPAGEDATA} -->
       {PAGE_GETPAGEDATA|sedby_pagelist('pagelist.getpagedata', 1, '', 'page_id = $this')}
    <!-- ENDIF -->
  2. В папке plugins/pagelist темы создаем файл pagelist.getpagedata.tpl:
    <!-- BEGIN: MAIN -->
    <!-- BEGIN: PAGE_ROW -->
       <div>
          {PAGE_ROW_TEXT}
       </div>
    <!-- END: PAGE_ROW -->
    <!-- END: MAIN -->
  3. В файл page.edit.tpl добавляем TPL-теги для правки нашего экстраполя:
    <tr>
      <td>
        {PAGEEDIT_FORM_GETPAGEDATA_TITLE}
      </td>
      <td>
        {PAGEEDIT_FORM_GETPAGEDATA}
      </td>
    </tr>

Теперь, если при правке страницы указать 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 страницы-донора, а условие (если необходимо) придумать свое.

 

А другие способы есть? Это что то я в обще не осиляю, вернее слишком много вопросов у меня, через слово вашей инструкции у меня вопрос. Это значит  что я наверное точно долго буду тыкаться. Может проще еще каким нибудь способом?  

]]>
сб, 25 ноя 2023 19:42:47 -0000
Argont #47447 Kort:

Хмм. Все страньше и страньше...

Админка -> Управление -> Экстраполя -> Pages

Kort, при всём уважении, это вам просто, как одному из отцов этого детища, а новичкам нужна инструкция с пояснениями, с примерами. сам честно создавал метом проб и ошибок, но прошел не так далеко как хотелось бы, и это не правильно. хотелось бы иметь под рукой руководство по созданию экстраполей, начиная с основ, - типы экстраполей, и что каждый из них значит и для чего лучше использовать, а там дальше в лес, взависимости от типа экстраполя - лес сгущается на параметрах полей. Экстраполя в движке котонти, это то что можно назвать "фишкой", преимуществом, но к сожалению этот потенциал уверен многими не раскрывается в полной мере в силу скудной документацией по этой теме.

]]>
чт, 23 ноя 2023 19:31:06 -0000
Kort Хмм. Все страньше и страньше...

Админка -> Управление -> Экстраполя -> Pages

]]>
чт, 23 ноя 2023 19:10:49 -0000
vpktz #47443 Kort:

В самом простом варианте это можно сделать, например, через плагин Pagelist:

  1. Создаем страничное экстраполе для указания ID страницы, с которой будем брать информацию (например, page_getpagedata).В шаблон page.tpl добавляем следующую конструкцию:
    <!-- IF {PAGE_GETPAGEDATA} -->
       {PAGE_GETPAGEDATA|sedby_pagelist('pagelist.getpagedata', 1, '', 'page_id = $this')}
    <!-- ENDIF -->

 На первом пункте уже не понимаю. 

Как создать экстраполе? (пж не ругайтесь)

]]>
чт, 23 ноя 2023 18:51:09 -0000
Kort В самом простом варианте это можно сделать, например, через плагин Pagelist:

  1. Создаем страничное экстраполе для указания ID страницы, с которой будем брать информацию (например, page_getpagedata).В шаблон page.tpl добавляем следующую конструкцию:
    <!-- IF {PAGE_GETPAGEDATA} -->
       {PAGE_GETPAGEDATA|sedby_pagelist('pagelist.getpagedata', 1, '', 'page_id = $this')}
    <!-- ENDIF -->
  2. В папке plugins/pagelist темы создаем файл pagelist.getpagedata.tpl:
    <!-- BEGIN: MAIN -->
    <!-- BEGIN: PAGE_ROW -->
       <div>
          {PAGE_ROW_TEXT}
       </div>
    <!-- END: PAGE_ROW -->
    <!-- END: MAIN -->
  3. В файл page.edit.tpl добавляем TPL-теги для правки нашего экстраполя:
    <tr>
      <td>
        {PAGEEDIT_FORM_GETPAGEDATA_TITLE}
      </td>
      <td>
        {PAGEEDIT_FORM_GETPAGEDATA}
      </td>
    </tr>

Теперь, если при правке страницы указать 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 страницы-донора, а условие (если необходимо) придумать свое.

]]>
чт, 23 ноя 2023 16:23:01 -0000
Kabak на сайте есть : страницы , форумы, комментарии.   Вам нужно вывести информацию из этих разделов или из каких-то других ?

]]>
чт, 23 ноя 2023 16:22:18 -0000
vpktz Очень часто при верстке, сборке cotonti сталкиваюсь с моментом, где нужно информацию со одной странице вывести на некоторой другой, но там она уже не выводиться.

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

Вопрос, как выводить информацию того или иного модуля/плагина плагина в том месте где это хотелось бы?

Часто слышу о методе что "напиши hook" . Пытался пару раз углубится в это, но так не смог разобаться.

Хотелось бы разобраться и понять это. Более подробно, в деталях, на примере какого то маленького плагина. Информацию которого нужно  вывести например в header

]]>
чт, 23 ноя 2023 15:34:47 -0000