cotonti.com : Развитие шаблонизатора (XTemplate 2.8.1) https://www.cotonti.com Останні повідомлення в темі Cotonti en Sat, 28 Feb 2026 15:16:19 -0000 Argont
{PHP|cot_url('page', 'c=news')|var_dump({PHP.L.Home}

пожалуйста, можете для примера подсказать, что здесь вэтой конструкции, в котонти может быть вместо "var_dump"

хоть пару примеров. спасибо

]]>
Ср, 08 Лис 2023 19:07:34 -0000
Alex300 В шаблонизатор добавлены операторы строго сравнения: === и !==

Например проверить на строгое соотвествие null теперь можно так:

<!-- IF {ADMIN_EXTENSIONS_DETAILS_ROW_ORDER_INSTALLED} !== null AND {ADMIN_EXTENSIONS_DETAILS_ROW_ORDER_INSTALLED} != {ADMIN_EXTENSIONS_DETAILS_ROW_ORDER} -->
    <span class="highlight_red">{ADMIN_EXTENSIONS_DETAILS_ROW_ORDER_INSTALLED}</span> /
    <span class="highlight_green">{ADMIN_EXTENSIONS_DETAILS_ROW_ORDER}</span>
<!-- ELSE -->
    {ADMIN_EXTENSIONS_DETAILS_ROW_ORDER}
<!-- ENDIF -->

 

]]>
Пн, 06 Лис 2023 08:00:58 -0000
Kabak #47184 Alex300:

не строя излишне сложных конструкций.

Именно. Фреймворк должен давать инструменты, а не накладывать ограничения.

Тогда нужно сдеать возможным выводить любую информацию в любой локации сайта на Cotonti.  Хотябы заменить старые плагины которые накладывают такие ограничения.  Тот же Recent Items не позволяет вывести некоторую информация о пользователе на  титульной странице. ( о создателе темы на форуме и о последнем ответившем )    Если он устарел, то нужно заменить его в коробочной версии Cotonti и написать статью, как можно выводить информацию из Страниц, Форумов и Коментариев в разных разделах сайта : на главной странице, в профиле пользователя.

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

Добавлено 2 минуты спустя:

#47181 Alex300:

Вот этим коммитом в мастер ветку добавлена возможность подставлять функцию любые аргументы, а не только один через $this.
Теперь можно писать и так, например:

{PHP|cot_url('page', 'c=news')|var_dump({PHP.L.Home}, $this, {PHP.cfg.mainurl}, {PHP|cot_url('page', 'c=news')}, {HEADER_TITLE})}

Нуждается в тестировании и фидбеке ).

Как только разберусь как это работает, попробую это использовать и расскажу что нравится, а что нет 

]]>
Нд, 01 Жов 2023 07:58:18 -0000
Alex300

не строя излишне сложных конструкций.

Именно. Фреймворк должен давать инструменты, а не накладывать ограничения.

]]>
Нд, 01 Жов 2023 06:39:37 -0000
Kort До этого момента вызов функции в шаблоне можно было делать или с явным указанием аргументов или с динамической подстановкой только одного:

// Явно указываем аргумент $params
{PHP|cot_url('page', 'c=docs')}

// Аргумент формируется "на лету" для "раздело-зависимого" результата
{PHP.c|cot_url('page', 'c=$this')}

cot_url() здесь только для примера, и на самом деле динамическая подстановка аргумента очень удобная на практике штука. Например, для таких вещей:

{USERS_DETAILS_ID|sedby_comlist(‘comlist’, 5, 'com_date DESC', 'com_authorid = $this'}

т.е. вывод последних пяти комментов от пользователя на его странице. Привязка к тегу со значением user_id.

Вообще, если с аргументами начинаются сложности, все можно решить плагином с хуком, соответствующим проблемной локации:

$someresult = cot_somefunction($c, $usr['id'], $pag['page_id']);

После чего вывести в шаблоне уже готовую переменную:

{PHP.someresult}

Ну или так:

$t->assign('SOME_TAG', cot_somefunction($c, $usr['id'], $pag['page_id']));

И тогда в шаблоне просто:

{SOME_TAG}

Естественно, аргументы для примера.

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

Использование плагинов и данная фича никак не связаны))

]]>
Нд, 01 Жов 2023 06:09:58 -0000
Kabak #47181 Alex300:

Вот этим коммитом в мастер ветку добавлена возможность подставлять функцию любые аргументы, а не только один через $this.
Теперь можно писать и так, например:

{PHP|cot_url('page', 'c=news')|var_dump({PHP.L.Home}, $this, {PHP.cfg.mainurl}, {PHP|cot_url('page', 'c=news')}, {HEADER_TITLE})}

Нуждается в тестировании и фидбеке ).

какие возможности это открывает ?   что конкретно можно делать такими вызовами и от каких плагинов теперь можно отказаться благодаря этому новшеству ?

]]>
Сб, 30 Вер 2023 11:52:33 -0000
Alex300 Вот этим коммитом в мастер ветку добавлена возможность подставлять функцию любые аргументы, а не только один через $this.
Теперь можно писать и так, например:

{PHP|cot_url('page', 'c=news')|var_dump({PHP.L.Home}, $this, {PHP.cfg.mainurl}, {PHP|cot_url('page', 'c=news')}, {HEADER_TITLE})}

 

И теперь он еще понимает в функциях и условиях что TRUE или true - это true, а 'true' или "True" - с кавычками - это строка. То же самое для false,null.
1 и 10.5 - это числа, а '1', "10.5" это строки.

т.е. {PHP|cot_url('page', c={PHP.c}, '', false, true)} должно корректно работать. Т.е. он должен понять что false это именно FALSE, а не строка, содержащая 'false', которая будет преобразована в TRUE при выполнении.

Нуждается в тестировании и фидбеке ).

]]>
Сб, 30 Вер 2023 11:08:35 -0000
Kopusha У меня кстати всюду без проблем работает. И на последнем php и котонти, я все обновляю. Так что можно юзать!

]]>
Ср, 22 Кві 2020 16:33:33 -0000
Roffun #43753 Dr2005alex:

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

Алексей, а в ветку на github.com не планируется предложение улучшений ?

Одно дело дополнительная функция, другое дело шаблонизатор. Получается правка ядра, и при обновлении из репозитория, или сборки биржи, изменения перезапишутся.

]]>
Нд, 20 Січ 2019 12:56:32 -0000
Dr2005alex Спасибо за тест!

]]>
Нд, 20 Січ 2019 09:18:06 -0000
Kopusha Прошло куча времени - полет ОК. Спс!

]]>
Сб, 19 Січ 2019 10:04:21 -0000
Dr2005alex

я так понял что можно и более двух переменных закидывать?

ДА 

]]>
Thu, 25 Жов 2018 13:58:13 -0000
Kopusha #43753 Dr2005alex:

Все именно так!!! С целью сокращения костылей в этом духе что в примере.

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

 

Я уже уполовинил свой файл с кастомными функциями. С учетом того что у меня овердофига функционала и плагинов как биржи так и прочего и все работает как и прежде с новым файлом котемплейта - он нигде не конфликтует. 

Спасибо!

Added 48 minutes later:

я так понял что можно и более двух переменных закидывать? ]]>
Thu, 25 Жов 2018 12:09:01 -0000
Dr2005alex Все именно так!!! С целью сокращения костылей в этом духе что в примере.

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

]]>
Thu, 25 Жов 2018 10:29:46 -0000
Kopusha Пока все что работало со старым и с новым файлом работает. 

Added 2 weeks later:

Подскажите как использовать

Есть функция к примеру function cot_social_check_friend_plusmonth($userid, $friendid)

Как написать запрос?

{CALL|cot_social_check_friend_plusmonth('$0%','$1%')|PHP.usr.id,PHP.urr.user_id} как то так? Вроде бы так работает, но может что то усложнил?

Added 33 minutes later:

Вроде все работает идеально!

Дополню примерами

Было кастомная функция

/** Исключаем из запроса историй этого же юзера саму себя **/
function get_item_user_and_id($item_id){
   global $db, $db_folio;
        $string = '';
        
		if($item_id){
			$string = $db->query("SELECT item_id FROM $db_folio WHERE item_id=".$item_id)->fetchColumn();
			$string = (int)$string;
		}
        
		if($item_id){
			$iuser = $db->query("SELECT item_userid FROM $db_folio WHERE item_id=".$item_id)->fetchColumn();
			$string .= " AND item_userid = $iuser";
		}
		return $string;
}

{PRD_ID|get_item_user_and_id($this)|cot_getfoliolist('from-user', 4, 'item_id!=$this', "item_rating_real DESC")}

Стало одна строчка

{CALL|cot_getfoliolist('from-user', 4, 'item_id!=$0% AND item_userid=$1%', "item_rating_real DESC")|PRD_ID,PRD_OWNER_ID}

 

]]>
Пн, 08 Жов 2018 13:46:02 -0000
Dr2005alex Обновил концепцию, и обновил файл и описание в первом посте. Можно тестить.

]]>
Сб, 06 Жов 2018 21:24:47 -0000
Kopusha yes

]]>
Пт, 05 Жов 2018 06:16:43 -0000
Dr2005alex Ага понял, есть косяк. Надо менять подход. Посмотримс..

Ps Спасибо за тест.

]]>
Пт, 05 Жов 2018 05:47:01 -0000
Kopusha Скачал дистрибут и заменил котемплейтпхп - появились ссылки на предыдущее и следующее фолио. 

https://ibb.co/g2PtPK
https://ibb.co/ksLBBz

Added 4 minutes later:

на час отойду

]]>
Thu, 04 Жов 2018 17:39:02 -0000
Dr2005alex Тогда еще один тест. Скачиваем последнюю версию котонти и берем оттуда шаблонизатор на свой сайт. (заменяем файл шаблонизатора) Смотрим все ли работает? Если работает то я постараюсь найти в чем проблема в моих правках. Если нет, то ваша версия движка несовместима.

]]>
Thu, 04 Жов 2018 17:34:57 -0000
Kopusha PHP engine version 5.6.37

2 пункт сделал кеш почистил и не помогло

Нет функционала этого плагина и нет ошибок. При этом все остальное вроде как норм.

Added 2 minutes later:

Котонти и биржа самое последнее что есть. 

Added 1 minute later:

PHP engine version	5.6.37
Zend engine version	2.6.0
Interface between webserver and PHP	litespeed
Cotonti Version 0.9.19

 

]]>
Thu, 04 Жов 2018 17:29:48 -0000
Dr2005alex #43736 Kopusha:

кеш я чистил - не помогает

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

По идее правки были тока по вызову функции.

1) Есть просьба. Скажите какая версия PHP в у вас используется.

2) Откройте плиз файл шаблонизатора и поменяйте в 404 строке this на $this

return $var->evaluate($this);

Вот так будет. Отпишитесь, появилось ли все.

Ах да, версия движка какая?

 

]]>
Thu, 04 Жов 2018 17:22:22 -0000
Kopusha кеш я чистил - не помогает

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

]]>
Thu, 04 Жов 2018 17:06:08 -0000
Dr2005alex Как вариант почистите кеш. 

]]>
Thu, 04 Жов 2018 10:45:57 -0000
Kopusha просто перестал генерировать в тпл https://github.com/Freecer/freecer.net/blob/9ed2a2b190bafed2a02388785fee9d4d6ffe9eea/plugins/folioPagiButton/folioPagiButton.setup.main.php#L11

 

вообще ничего. кода там 3 строчки и странно что перестало работать... вроде не должно... остальное пока что пашет.

]]>
Thu, 04 Жов 2018 09:56:30 -0000
Dr2005alex #43732 Kopusha:

То есть ничего старого не прекратит работать а просто появятся новые возможности?

Added 13 minutes later:

Сразу же отвалилась работа этого плагина (ошибки не бьет, но перестали кнопки показываться, я не рылся пока в коде, просто констатация) https://github.com/Freecer/freecer.net/tree/9ed2a2b190bafed2a02388785fee9d4d6ffe9eea/plugins/folioPagiButton

Было бы полезно узнать от чего отвалилось. Я естественно повторить ваш код не могу. Это биржа..

]]>
Thu, 04 Жов 2018 05:58:23 -0000
Kopusha То есть ничего старого не прекратит работать а просто появятся новые возможности?

Added 13 minutes later:

Сразу же отвалилась работа этого плагина (ошибки не бьет, но перестали кнопки показываться, я не рылся пока в коде, просто констатация) https://github.com/Freecer/freecer.net/tree/9ed2a2b190bafed2a02388785fee9d4d6ffe9eea/plugins/folioPagiButton

]]>
Ср, 03 Жов 2018 20:02:52 -0000
prostogorod Спасибо! Интересная идея! Буду тестировать...

]]>
Ср, 03 Жов 2018 10:12:04 -0000
Dr2005alex И пришла идея начать доработку текущего XTemplate.

И так, если коротко, выкладываю для тестов обновленный в некоторых местах XTemplate

Что изменилось:

  • PHP 7 не выдает ошибку  Using $this when not in object context (на 2.8.0  версии это есть)
  • Есть возможность передавать в вызов функции более одного динамического аргумента.

Для нового функционала и поддержки старого, пришлось ввести новый вид тега.

{CALL | функция | динамические аргументы через запятую | дополниельные функции}

Пример

{CALL|cot_url('page','id=$0%&alias=$1%')|PAGE_ID,PAGE_ALIAS|htmlspecialchars}

Как из примера видно, я отказался от метки $this.(но старый вариан с $this я оставил и он тоже работает через {PHP.MYTAG|function($this)})

В данном примере создается ссылка, где параметр $0% будет заменен на значение тега PAGE_ID, а $1% на значение тега PAGE_ALIAS. Далее, результат выполнения функции передается в дополнительную функцию htmlspecialchars

В динамических аргументах могут быть Теги и Глобальные переменные.

Пример

{CALL|cot_url('page','id=$0%&c=$1%')|PHP.pag.page_id,PHP.pag.page_cat}

$0% или $1% это порядковый номер динамического аргумента начиная с нуля. 

  • $0% - заменится значением PHP.pag.page_id
  • $1% - заменится значением PHP.pag.page_cat

Для тестов, просто разархивируйте файл. И замените текущий файл шаблонизатора cotemplate.php на файл из архива.

Удачных тестов! И может еще идеи у кого будут... милости просим делиться.

Файл: cotemplate_2.8.1.rar

 

]]>
Вт, 02 Жов 2018 18:14:26 -0000