Стримротатор для умных - плагины

Наша копилка знаний

Модераторы: dushik, Slim

Ответить
Аватара пользователя
dushik
Admin
Сообщения: 2164
Зарегистрирован: Вс сен 03, 2006 4:51 pm

Стримротатор для умных - плагины

Сообщение dushik » Чт май 08, 2014 2:27 pm

В стриме есть система плагинов, позволяющая расширить функциональность тэгов темплейта. Говоря проще, умея немного програмировать на php, вы можете сами добавлять в стрим свои кастомные тэги. Плагины это функции php, которые находятся в файле plugins/template.inc в директории стрима. Вызов функции происходит через тэг #PLUGIN_имя#, где имя - имя функции в plugins.inc. Функция получает 1 или 2 параметра (1 при вызове из темплейта, 2 - из сабтемплейта). Оба параметра - массивы.

Первый, который передается всегда - $page_arr имеет следующие элементы:

Код: Выделить всё

array
{
'tag_name'=>…, 'tag_id'=>…, 'site_name'=>..., 'site_id'=>..., 'search'=>..., 'page'=>..., 'content'=>..., 'rotator'=>..., 'has_res'=>...
}
Второй, $gal_arr:

Код: Выделить всё

array
{
'desc'=>…, 'added'=>…, 'pub_date'=>…, 'paysite'=>…, 'rotator'=>…, 'gallery_id'=>…, 'url'=>…
}
То что вернет функция плагина по return, то и будет отображено на морде.

Пример.
файл template.inc:

Код: Выделить всё

<?php
function my_upper($page_arr,$gall_arr)
{
	return strtoupper($gall_arr['desc']);
}
?>
в сабтемплейте #PLUGIN_MY_UPPER# выведет description заглавными буквами.

Это простейший пример, в template.inc может быть неограниченное количество функций.

Также хочу обратить внимание на несколько моментов.
1. Приемущество плагинов по сравнению с php-вставками заключается в том, что плагин отрабатывает 1 раз при при формировании морды, а php-вставка - при каждом показе.
2. В плагинах нельзя использовать массив $_GET, так как часть морд генерится кроном, и в этом случае $_GET будет пустым.
3. Если в результате работы плагина происходят регулярные ошибки, стрим начнет вместо морд выводить сообщение "sorry, the server is overloaded". Будьте внимательны, обкатывайте свои плагины на пробных сайтах.


Если вам необходим свой плагин, но не хватает навыков для его реализвации, я рекомендую подыскать специалиста (не меня), который за вознаграждение поможет воплотить в жизнь ваши пожелания.
Специалист 1: Nikso (аська two-696-326-three) 8)

Если у Вас тоже есть желание оказывать помочь пользователям стрима, стучите, я добавлю Ваши контакты сюда.
Последний раз редактировалось dushik Чт июн 05, 2014 7:55 am, всего редактировалось 1 раз.

Nikso
Сообщения: 37
Зарегистрирован: Пт июл 20, 2007 9:13 am

Сообщение Nikso » Вт июн 03, 2014 10:31 am

Идея супер!
Но почему так мало элементов в массивах?
Где тумбы, где параметры ротации? Да вообще хорошо бы всеми имеющимися данными для страниц, галер и тумб располагать.
С текущим функционалом можно только что и поменять регистр деска.

что такое 'has_res'?

Как передать параметр в тег/функцию как тут например
#CONTENT_TAGLIST2_NNN_XXX#

Аватара пользователя
dushik
Admin
Сообщения: 2164
Зарегистрирован: Вс сен 03, 2006 4:51 pm

Сообщение dushik » Вт июн 03, 2014 2:58 pm

мало, потому что писал только то, что мне лично было необходимо, добавлял по просьбам тех кто тестировал. Если что еще нужно - пиши.

has_res - есть ли на морде хоть одна галя
Как передать параметр в тег/функцию как тут например
вопроса не понял

Nikso
Сообщения: 37
Зарегистрирован: Пт июл 20, 2007 9:13 am

Сообщение Nikso » Ср июн 04, 2014 10:06 am

1. Параметр в функцию:
Например как сделать чтобы инклюдить топ только на первой странице:
Типа такого
#PLUGIN_INCLUDEREALTIME_ONCE_/usr/home/user/domain.com/public_html/ftt2/top/top.html#

я конечно могу сделать просто функцию #PLUGIN_INCLUDEREALTIME_ONCE# и в ее результате возвращать топ или нет в зависимости от 'page'=, но тогда путь к топу нужно будет указывать не в темплейте, а лезть в шелл, и редактировать файл plugins.inc.

2. Пригодилась бы тумба для саба
$gal_arr {
'thumb'="stream/thumbs/5/3838.jpg"
еще лучше если так, чтобы не делать дополнительные замены
'thumb'="5/3838.jpg"}

Это чтобы раскидывать тумбы по сабдоменам(алиасам).
Хотя вариант уже придумался. Сделать тег который выведет рандом сабдомен и к нему уже клеить тумбу
img src="#PLUGIN_RND_SUBDOMAIN##THUMB#" !!

Можно и все тумбы тоже подключить (который #THUMBS_LIST#), для реализации ротации тумб явой под курсором мыши.

Аватара пользователя
dushik
Admin
Сообщения: 2164
Зарегистрирован: Вс сен 03, 2006 4:51 pm

Сообщение dushik » Ср июн 04, 2014 10:33 am

#INCLUDEREALTIME_ONCE_/usr/home/user/domain.com/public_html/ftt2/top/top.html#
(тут наверное мысль была не о плагине, а о тэге?) - как мне кажется слишком "нишево" и маловостребовано, лучше это через плагин, как ты и написал.

Чтобы разбрасывать тумбы по сабдоменам можно вообще ничего не мудрить, а просто прописать в script folder (в settings):
http://sub1.domain.com/str,http://sub2. ... in.com/str
и т.д. столько, сколько нужно, через запятую. более того, в этом случае одна тумба всегда будет показываться только на одном каком-то сабдомене (что хорошо для кеширования)

Nikso
Сообщения: 37
Зарегистрирован: Пт июл 20, 2007 9:13 am

Re: Стримротатор для умных - плагины

Сообщение Nikso » Сб окт 19, 2019 10:56 am

#plugin_some,letter:a#
выводит некий список на букву A

Внутри есть проверка, если есть get[letter] то он приоритетный
если при вызове шаблона указана другая буква in.php?letter=z
то список выводит на букву Z

Как-то странно работает. Есть два шаблона: один основной, второй для ajax подгрузки блоков, плагин на них один и тотже
На основном шаблоне #plugin_some,letter:a# не реагирует на get[letter]
На ajax шаблоне все работает.

Как так?

Аватара пользователя
dushik
Admin
Сообщения: 2164
Зарегистрирован: Вс сен 03, 2006 4:51 pm

Re: Стримротатор для умных - плагины

Сообщение dushik » Вс окт 20, 2019 3:50 pm

не забыл что морды могут генериться по крону, и там никакого get нету?

Nikso
Сообщения: 37
Зарегистрирован: Пт июл 20, 2007 9:13 am

Re: Стримротатор для умных - плагины

Сообщение Nikso » Пн окт 21, 2019 3:59 am

Это я помню, и похоже это будет непреодолимой проблемой для плагина,
Но почему второй шаблон на get живо реагирует?

Аватара пользователя
dushik
Admin
Сообщения: 2164
Зарегистрирован: Вс сен 03, 2006 4:51 pm

Re: Стримротатор для умных - плагины

Сообщение dushik » Пн окт 21, 2019 7:49 am

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

Ответить