User Tools

Site Tools

Translations of this page:

ru:new_rotation_templates

New Rotation Templates

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

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

В редактировании темплейтов есть поля cols & rows. Эти поля в принципе никак не вляют на ротацию и нужны только для удобства просмотра статистики ячеек в Cell Stats.

Во всех темплейтах должен быть хоть 1 субтемплейт. Субтемплейт это то как будет выведена каждая тумба. Вот пример как он выглядит:

<a href="/gallery/<!--GALLERY_SLUG-->/index.html?<!--THUMB_LINK-->" title="<!--ALT-->">
<img   src="<!--THUMB_URL-->" class="t_img" alt="" /></a> 

Субтемплейтов может быть любое количество. Обратите внимание, что

1. Физически такого пути на серваке нет, страницы формируются на лету, при запросе самой страницы, а такой урл получается благодаря реврайтам. New Rotation FAQ

2. В данном примере скрипт считает клики по параметру <!–THUMB_LINK–>, но этот параметр не обязателен, тк новая версия умеет счииать и без него Rotation Parameter

Места для вывода тумб в темплейте указываются следующим образом. Например,

  <thumb template=default num=1></thumb> - значит вывести тут тумбу номер 1 используя сабтемпелйт default
  если не указывать сабтемплейт то по умолчанию берет темплейт default те 
  <thumb template=default num=1></thumb> равно <thumb num=1></thumb>

можно написать еще короче

  по принципу <!--subtemplatename_thumbnum-->
  например аналог предыдущего тага
  <!--default_1--> 

Можно указывать пространства номеров например

<thumb num=1-5></thumb>
аналогично
<!--default_1-5--> 

выведет 5 первых тумб.

В самом таге можно указывать фильтры например базово например у нас есть темплейт index, по дефолту у него нет никаких фильтров и если написать

<thumb num=1-10></thumb> 

то вы получите первые 10 по цтр тумб из всех категорий.

<thumb sponsor=Myspon num=1-10></thumb> 
или если есть пробел 
<thumb sponsor="My spon" num=1-10></thumb>  
или просто с ИД <thumb sponsor_id=5 num=1-10></thumb> или несколько <thumb sponsor_id=5,10 num=1-10></thumb>

Выведет первых 10 тумб соотв спонсора. Точно так же можно указывать группу (категорию)

<thumb group=Mygroup num=1-10></thumb> 
или просто с ИД <thumb group_id=5 num=1-10></thumb>
так же можно исключить группы например  <thumb skip_group=Mygroup,other_group num=1-10></thumb> 

Сортировку

<thumb order=date group=Mygroup num=1-10></thumb> 

и лимит контента

<thumb content_type=image num=1-10></thumb>  выведет только те, у которых тип контента картинки (может быть так же movie (выводит И мувики И флеш) , flash (толкьо флеш) и movie_only - только именно мувики )

И конечно их можно совмещать, например

<thumb group=Mygroup sponsor=mysponsor num=1-10></thumb> 

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

<thumb group=Mygroup sponsor=mysponsor num=1-10>  <a href='/gallery/<!--GALLERY_SLUG-->/index.html'><!--THUMB_URL--> <---  это сабтемпелйт   </thumb> 

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

Страница категории /category/super_name/  что реврайтом преобразуется в запрос /?group_name=super_name

по умолчанию там стоит просто 

<thumb num=1-10></thumb> 

тк в запросе уже есть фильтр group_name то даже несмотря на то что в таге <thumb не указан фильтр по группе, 
все равно выводятся тумбы из группы super_name (потому что этот фильтр уже есть в запросе).

Поэтому если вы напишете в темплейте 

<thumb sponsor_id=5 num=1-10></thumb> 

то в этом таге выведет тумбы с 2ми фильтрами: тумбы, которые в группе super_name И принадлежат спонсору ид = 5.

Если надо именно определенная группа, тк надо переназвачить то что уже назначено в урле (в нашем примере group_name ), надо группу явно указать в таге те 

<thumb sponsor_id=5 group=mygroup num=1-10></thumb> 

Сабтемплеты Хотелось бы напомнить немного про темплейты:

<thumb sponsor_id=5 num=1-10></thumb> 

будет выводить тумбы юзая сабтемплейт default, вы можете указать другой саб темпелйт

<thumb sponsor_id=5 num=1-10 template=my_tpl></thumb>   

или вписав сабтемплейт прямов таге

<thumb sponsor_id=5 num=1-10> <a href=...> img src=<!--THUMB_URL--> </a></thumb>     

Если у вас нет сабтемпелйта default, и саб темпелйт нигде не указан, то какие сабтемплейтом выводить тумбы ?

Ограничение по длительности

<thumb duration_min=10 duration_max=90 num=1-10> <!--ID--> <!--DURATION--> <br> </thumb>

что аналогично если в темплейте просто 

<thumb num=1-10> <!--ID--> <!--DURATION--> <br> </thumb>

но урл domain/scj/tube/?duration_min=10&duration_max=90

Обратите внимание что параметры везде можно передавать любым способом http://smartcj.com/wiki/doku.php?id=ru:new_rotation_hints#setting_get_parameters

Ограничение по ИД группы

Добавлен параметр skip_group_id в УРЛ или таг <thumb … > , смысл простой - не выводить тумбы из группых такой-то.

Ограничение по спонсору

Для тага <thumb добавлся фильтр skip_sponsor_id и skip_sponsor (в первом случае ИД, во 2м имя спонсора.

Ограничение по дате

&date_start=2012-01-01&date_end=2013-01-02

соответственно выведет тумбы из данного временного промежутка. Можно использовать и только 1 парамтер начала и конца.

А так же несколько пресетов

&date_limit=today (yesterday, this_week, this_month) - что автоматически подставит нужные даты

И по продолжительности мувика (в секундах)

&duration_min=60&duration_max=120

Общие таги для темпелейтов

<!--TEMPLATE_NAME--> имя текущего темплейта

Повторяемость галер

Если у вас условно есть таг <thumb num=1-10></thumb>

и вы впишете где-то в темпелйте <thumb num=1-5></thumb> или <thumb num=1-10></thumb> , те когда параметры тага точно совпадают, то скрипт выведете теже тумбы.

Однако, если таги отличаются, например следующий таг

<thumb num=1-10 order=date></thumb>

<thumb num=1-10 sponsor_id=5></thumb>

и тп то при выборке для этого тага галеры, которые были найдены в первом таге, будут исключены.

Такое поведение можно избежать если добавить в таг <thumb allow_dupes=true num=1-10></thumb>

Thumb sort

По дефолту тумбы сортируютс по ЦТР. Но вы можете сортировать в другом порядке:

date date_asc duration rating random total_shows no_order (фактически по ИД)

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

Те &order=date в урле это тоже самое что <thumb order=date

Unset parameter

Проблема: если вы хотите добавить в темпелйт content_search снизу несколько тумб то работало провило наследования, те <thumb group=test num=1-10 ></thumb> выводило 10 тумб из категории test, НО в которых есть результаты поиска. В большинстве случае это удобно, однако если надо просто вывести из опредленной группы - это была проблема. Сейчас можно “убрать” параметр поиска например <thumb group=test num=1-10 search=“”></thumb>

GET parameters

Иногда в самом таге надо выставить параметр в зависимостри от страницы. Обычно для этого используются переменные из УРЛа, которые по правильному называются GET переменными. Например, мы хотим вывести моделей

<models first_letter=a

выведет фиксированно моделей на букву А. но создавать темпелйт на каждую букву неудобно, и мы можем сделать

<models first_letter=GET_someletter

что значит первую букву взять из переменной урла someletter например

/?force_template=...&someletter=...

Cache parameter

По умолчанию мы кешируем страницу сайта на время указанное в сеттингах (Cache time, seconds) по дефолту 600, это значит что страница сгенерится 1 раз и потом будет показываться в этом виде 600 секунд, даже если данные изменятся, это позволяет разгрузить сервак и не генерить страницу на каждый заход.

Далее можно регулировать кеширование для каждой страницы: в редактировании страницы так же есть поле Cache time, seconds, этот параметр более важен чем общий.

Но можно регулировать еще глубже - в таге например <thumb num=1-100 cache_time=100 - тут кашерование тага будет 100 секеунд.

Но есть еще один более глубокий параметр - count_total_cache_time

Смысл следующий: когда мы вычисляем выводим тумбы из категории А, то нам надо 2 параметра - условно первые 100 тумб и, если есть пагинация, сколко всего тумб с учетом выключенных спонсоров, групп и тп. Посчитать сколько всего всего тумб - это определенная нагрузка. Поэтому когда юзер заходит в категорию мы выбираем топ 100 и общее кол-во тумб в категории. Когда он заходит на страницу 2 в этой категории, мы уже выбираем топ 100-200, но уже не считаем общее кол-во тумб - это экономит ресурсы.

Но есть момент гдеправильный подсчет важнее чем экономия - например для favorites темплейта: тут надо бы показывать сразу актуальное кол-во после добавления новых видео.

Для этого мы можем сделать <thumb num=1-10 count_total_cache_time=1

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

Page main tag

Проблема: у нас есть какая то страница на которой 2 тага: <thumb group=A num=1-10 and <thumb group=B num=1-10 Возникает проблема с навигацией, поскольку не ясно по какому из тагов считать максимальное кол-во страниц. Для того что б пофиксить это введен параметр page_main_tag те <thumb group=B num=1-10 page_main_tag=true в данном варианте посчитает навигацию по этому тагу.

Mobile Templates

Если вы хотите отдельный дизайн для мобильных устройств то любой темплейт может быть продублирован темплейтом с таким же именем, но с mobile_ в начале, и мобильный траффик получит темплейт с mobile. Например, у нас есть index, mobile_index и content_custom_pic (условно mobile_content_custom_pic не создавали). Серфер мобильный пришел на индекс - ему покажет темпелейт mobile_index. Далее он попал на галерею - ему покажет content_custom_pic, тк mobile_content_custom_pic нету.

NOTE Если по какой-то причине вы хотите дать возможность пользователю выключить этот функционал - есть параметр &skip_mobile_templates=yes в этом случае скрипт не будет подставлять мобильные темпелйты. Если надо включить снова функционал - skip_mobile_templates=no

Для кастом галер есть возможно вывести тн related galleries, по дефолту это гадеры из той же категории, но можно менять в таге

Примеры 

<thumb group=CURRENT_ITEM_GROUP num=1-5>
some template
</thumb>


<thumb sponsor=CURRENT_ITEM_SPONSOR group="" num=1-5>
some template
</thumb>


<thumb tag=CURRENT_ITEM_TAG num=1-5>
some template
</thumb>

<thumb tag=CURRENT_ITEM_TAGS_COMBINED num=1-5>
some template
</thumb>


Эти варианты более комплексные (больше грузят базу) чем варианты выше

<thumb tag=CURRENT_ITEM_TAGS_INTERSECTION num=1-5>
выводим в порядке сортировки по кол-ву совпадающих тагов (условно если совпало 4 тага, это лучше чем когда совпало 3 тага)
</thumb>

<thumb tag=CURRENT_ITEM_GROUPS_INTERSECTION num=1-5>
выводим в порядке сортировки по кол-ву совпадающих групп
</thumb>

Обратите внимание, что CURRENT_ITEM_TAG and CURRENT_ITEM_GROUP берут для выборки рендомную группу\таг если их несколько. CURRENT_ITEM_TAGS_COMBINED - берет сразу все таги.

Subtemplate tags

Таки которые можно использовать в сабтемпелйтах

  <!--URL--> оно же <!--GAL_URL--> - УРЛ галереи.
  <!--THUMB_URL--> УРЛ тумбы
  <!--EXTRA_THUMB_URL--> - экстра тумба
  <!--THUMB_LINK--> ИД тумбы для подсчета кликов (так называемый параметр ротации, если его не будет - клики по тумбе в цтр не засчитаются)
  <!--DESCRIPTION-->  Описание
  <!--DESCRIPTION_40-->  Описание с ограниением по кол-ву символов
  <!--SAFE_DESC--> описание для урлов (удалены всякие "сложные" символы)
  <!--GALLERY_SLUG--> SEO видное описание гали
  <!--ID--> ИД тумбы в базе
  <!--ACTIVATION_DATE--> <!--ACTIVATION_DATETIME--> время добавления 
  <!--ALT--> альтернативное описание 
  <!--ALT_30--> - ограничение в 30 символов, 30 меняется на нужное кол-во
  <!--TAG1--> - первый таг
  <!--TAG2--> - второй таг и тп
  <tag_list ><!--TAG--> </tag_list> - вывести все доступные таги в цикле
  <!--ALL_THUMBS--> - если у гали есть несколько тумб для ротации то этот таг выведет их все через запятую
  <!--MAIN_GROUP-->
  <!--MAIN_GROUP_ID-->
  <!--GROUP_1_NAME--> <!--GROUP_2_NAME--> и тп
  <!--GROUP_1_ID--> <!--GROUP_2_ID--> те все переменные группы можно так же вывести в виед GROUP_1_переменнаягруппы
  <group_list ><!--GROUP_NAME--> </group_list> вывести циклом все группы галереи
  <!--CASTS--> = <!--SHOWS--> = <!--VIEWS-->
  <!--RATING-->
  <!--RATING_VOTES--> - общее кол-во голосов 
  <!--RATING_1-->, <!--RATING_2--> - кол-во проголоовавших 1, 2 и тд
  <!--CLICKS-->
  <!--CUSTOM_VAR1-->
  <!--CUSTOM_VAR2-->
  <!--CUSTOM_VAR3-->
  <!--IMAGE_COUNT-->, <!--MOVIE_COUNT--> и <!--FLASH_COUNT-->
  <!--CONTENT_TYPE--> побитно 1 - images, 2 movie , 4 - flash. 
  <!--THUMB_WIDTH--> <!--THUMB_HEIGHT-->

В апдейте 48 были добавлены модели 
для галеры добавили таги

<!--MODEL_1_NAME-->
<!--MODEL_1_SLUG-->

<!--MODEL_2_NAME-->
<!--MODEL_2_SLUG-->

и так далее либо можно вывести циклом все модели галереи <model_list ><!--MODEL_NAME--> </model_list>

Небольшой уточнение про параметр THUMB_LINK.

Смысл следующий: изначально &link= это параметр трекинга линков. Например, у вас страница на которой разные блоки с линками на аут и вы хотите проследить, на что больше кликают. Вы делаете в одном блоке &link=block1? а в другом &link=block2, через какое-то время идете в trade - stats - links и смотрите на что сколько кликали.

Потом появилась ротация - и этот параметр стали использовать для ротации в виде images/12x34x45. Такой вид был выбран для того, что б не путать линки вида block1 с линками, которые скрипт юзает для ротации. Те линки вида images/12x34x45 в статистике просто не показываются. Урлы получались вида /out.php?url=http://gallery/&link=images/12x34x45 - по такому линку скрипт понимал что 1) кликнули по тумбе такой то 2) этот link не надо выводить в trade - stats - links, а надо только учитывать в статистике тумб.

Потом появились реврайты и галинки начали выглядеть как /gallery/cool/index.html?images/12x34x45 что выглядело не совсем красиво, и решили укоротить до /gallery/cool/index.html?12x34x45 Как ни сложно заметить пропало “images/” - его перенесли в реврайты, а что б скрипт выводил просто 12x34x45 , а не images/12x34x45, добавлися таг THUMB_LINK.

Итого урл вида /gallery/cool/index.html?12x34x45 реврайтом преображается в что-то вида out.php?link=images/12x34x45&url=content&slug=cool, где все так же есть параметр линк трекинга link= , и url=content&slug=cool указывает на то что надо взять из базы галеру со слагом cool.

Из-за того что исторически сложилось так, что ротация использует параметр линктрекинга &link= стало невозможно ставить трекнг на тумбы , если юзается ротация. Те в урле out.php?link=images/12x34x45&url=content&slug=cool параметр &link уже использован и мы не можем поставить &link=block1 например для того, что б трекить в каком блоке больше кликают. Для этого появился праметр &link2= смысл которого в том же что и &link= , но наличие его позволяет делать out.php?link=images/12x34x45&url=content&slug=cool&link2=block1

group_list separator

Для тагов <group_list <model_list и <tag_list появился доп параметр - separator.

Смысл проблемы в том что если вы выводили например группы как 

<group_list ><!--GROUP_NAME--> </group_list>

то могли получить что то вроде "group1,group2,group3,"

и вот эта последняя запятая портила вид.

Теперь можно сделать 

<group_list separator="," ><!--GROUP_NAME--> </group_list>

и выведет без нее "group1,group2,group3"

<tag_list

В темплейтах есть возомжноть вывести циклом все таги галеры <tag_list ><!–TAG–> </tag_list>, но иногда их довольно много (особенно при автогенерации из десков и без whitelist) и надо вывести не все. Сейчас этом vожно сделать так:

<tag_list num=1-3><!--TAG--> </tag_list>

аналогично для групп 

<group_list num=1-3><!--GROUP_NAME--> </group_list>

Page tags

Для каждой страницы есть ряд собственных тагов.

Для страницы категории

<!--CATEGORY_NAME--> = <!--GROUP_NAME--> 
<!--CATEGORY_CUSTOM_NAME-->
<!--CATEGORY_ID--> = <!--GROUP_ID--> 
<!--CATEGORY_DESCRIPTION-->
<!--CATEGORY_KEYWORDS-->
<!--TOTAL_ITEMS--> общее кол-во галер в категории

<!--CATEGORY_CUSTOM_VAR1-->
<!--CATEGORY_CUSTOM_VAR2-->
<!--CATEGORY_CUSTOM_VAR3-->

Для страницы модели

<!--MODEL_ID-->
<!--MODEL_NAME-->
<!--MODEL_SLUG-->
<!--MODEL_DESCRIPTION-->
<!--MODEL_CUSTOM_VAR1-->
<!--MODEL_CUSTOM_VAR2-->
<!--MODEL_CUSTOM_VAR3-->
<!--MODEL_PHOTO-->
<!--MODEL_PHOTO2-->

Для поиска

<!--SEARCH_QUERY-->
<!--SEARCH_TYPE-->

Страница спонсора

  <!--SPONSOR_NAME-->
  <!--SPONSOR_SITE-->
  <!--SPONSOR_SITE_URL-->
  <!--SPONSOR_TRIAL_URL-->
  <!--SPONSOR_JOIN_URL-->
  <!--SPONSOR_TITLE-->
  <!--SPONSOR_DESCRIPTION-->
  <!--SPONSOR_PAYMENT_OPTIONS-->
  <!--SPONSOR_SEO_NAME-->
  <!--SPONSOR_LOGO-->  
  
  <!--SPONSOR_BANNER1-->
  <!--SPONSOR_BANNER2-->

Для кастом галерей

Базово для каждой кастом гали доступны все теже таги, что и в сабе. Те если у нас есть тумба 1 с деском “super pic” который в сабе выводится тагом <!–DESCRIPTION–>, то и на кастом галере этот же таг выведет тоже самое.

Это же относится и к тагам по спонсору, те если галя спонсора 1, то все таги спонсорские, например <!–SPONSOR_NAME–>, выведут данные по этому спонсору.

Но есть несколько тагов, которые актуальны именно для страниц кастом галер.

Для эмбед галер та же актуально

<!--EMBED_CODE-->

Для flv галер актуально

<!--FLV_WIDTH-->
<!--FLV_HEIGHT-->
<!--FLV_THUMB_URL-->
<!--FLV_URL-->

Для picture\movie galleries

  <!--IMG_1_IMAGE--> урл первой большой картинки
  <!--IMG_1_THUMB--> урл первой тумбы
  <!--IMG_1_THUMB_X--> соотв размеры
  <!--IMG_1_THUMB_Y-->
  
  IMG_2_ IMG_3... и тд 
  
  Обратите внимание, что начиная с версии 49 идет разделение контента кастом галер, те вы можете сделать кастом галю с миксованным контентом, например пикчи и мувики
  Для первой пикчи будет <!--IMAGE_1_THUMB--> <!--IMAGE_1_IMAGE-->  <!--IMAGE_1_THUMB_X--> <!--IMAGE_1_THUMB_Y-->
  Для первого мувика будет <!--MOVIE_1_THUMB--> <!--MOVIE_1_IMAGE-->  <!--MOVIE_1_THUMB_X--> <!--MOVIE_1_THUMB_Y-->
  Для первого флеш мувика будет <!--FLASH_1_THUMB--> <!--FLASH_1_PREVIEW_THUMB--> <!--FLASH_1_IMAGE-->  <!--FLASH_1_THUMB_X--> <!--FLASH_1_THUMB_Y-->
  
  а так же <!--GALLERY_TEXT--> - это весь текст с галеры с которой делался кастом галя. Вы можете редактировать этот текст в Edit любой галереи.
  
  И общие переменные для кастом гали 
  
  <!--GALLERY_TOTAL_SHOWS-->
  <!--GALLERY_TOTAL_ITEMS-->
  <!--GALLERY_TOTAL_IMAGES-->
  <!--GALLERY_TOTAL_MOVIES-->
  <!--GALLERY_TOTAL_FLASH-->
    


Для кастом галер в версии 2.х появилась возможность выводить в цикле например 

  <gallery_content num=1-10>
  <!--ITEM_NUM-->  <!--IMAGE--> <!--THUMB-->  <!--THUMB_X-->  <!--THUMB_Y--> <!--IMAGE_X--> <!--IMAGE_Y--><br>
  </gallery_content>




  <!--SPONSOR_NAME-->
  <!--SPONSOR_SITE-->
  <!--SPONSOR_SITE_URL-->
  <!--SPONSOR_TRIAL_URL-->
  <!--SPONSOR_JOIN_URL-->
  <!--SPONSOR_TITLE-->
  <!--SPONSOR_DESCRIPTION-->
  <!--SPONSOR_PAYMENT_OPTIONS-->
  <!--SPONSOR_SEO_NAME-->
  <!--SPONSOR_LOGO-->  
  
  <!--SPONSOR_BANNER1-->
  <!--SPONSOR_BANNER2-->

  <!--CUSTOM_VAR1-->
  <!--CUSTOM_VAR2-->
  <!--CUSTOM_VAR3-->
  
а так же пример проверки наличия картинки

<!--IF IMG_6-->
<a href='<!--IMG_6_IMAGE-->'><img src='<!--IMG_6_THUMB-->'></a>
<!--END IF-->


Для комментов 

<!--TOTAL_COMMENTS-->

<comments num=1-10>
<!--DATE--> <!--USERNAME--> : <!--COMMENT-->
</comments>


Для single_page_item

<!--ITEM_THUMB-->
<!--ITEM_IMAGE--> 

Tag prefix

Для стандартных модификаций переменных существуют префиксы. Например, вы хотите сделать

<?php ucfirst('<!--DESCRIPTION-->'); ?>

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

<?php ucfirst('<!--ESCAPED_DESCRIPTION-->'); ?>

Те выглядит это как замена тага обычного на таг с префиксом

Например, так <!--ALT--> становится <!--ESCAPED_ALT--> и так со всеми тагам.

На данный момент существуют следующие префиксы:

1. Экранирование ковычек

Например, так <!--ALT--> становится <!--ESCAPED_ALT--> и так со всеми тагам.

2. HTMLENTITY для замены html спецсимволов например & на &amp;

'&' (ampersand) becomes '&amp;' 
'"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set. 
''' (single quote) becomes '&#039;' only when ENT_QUOTES is set. 
'<' (less than) becomes '&lt;' 
'>' (greater than) becomes '&gt;' 


  Например, так <!--ALT--> становится <!--HTMLENTITY_ALT--> и так со всеми тагам. 

3. URLENCODE для спецсимволов в урлах, например пробел на + и тп

  Например, так <!--TAG_1--> становится <!--URLENCODE_TAG_1--> и так со всеми тагам. 

Фактически http://www.php.net/manual/en/function.urlencode.php

4. RAWURLENCODE для спецсимволов в урлах, например пробел на %20 и тп

  Например, так <!--TAG_1--> становится <!--RAWURLENCODE_TAG_1--> и так со всеми тагам. 

Фактчиески http://www.php.net/manual/en/function.rawurlencode.php

А так же <!–GET.. который представляет собой все переданные переменные те если передается переменная ?search=… например то она будет в <!–GET_SEARCH–>, комбинируя ее с <!–ESCAPED_ можно получить удобный вариант вывода переданных переменных

<!--ESCAPED_GET_SEARCH-->

5. STRIP_SPECIAL_CHARS_ для удаления всех спецсимволов !$@ и тп

В данный момент replace выглядит как trim(preg_replace('|[\\\,\|\,<\.>\/\?;:\'\“\[\{\]\}\`~@#\$%\^&\*\(\)\-_=\+]*|i', ”“, $var))

Например <!--STRIP_SPECIAL_CHARS_DESCRIPTION_30-->

Навигация

Поскольку тумб много обычно, нам нужна навигация по страницам. Пример:

<navigation>
<li><a href="/category/<!--CATEGORY_ID-->/<!--CATEGORY_NAME-->/<!--SORT_ORDER-->/<!--PAGE_NUM-->/" title="<!--PAGE_NUM-->"><!--PAGE_NUM--></a></li>
</navigation>

В апдейте 48 в таге навигации появилось несколько полезных для дизайна фич:

  • skip_href_deletion=true по дефолту скрипт удаляет a href с текущей страницы, с этой опцией - не будет удалять.
  • active_link_style=act_pg и link_style=not_act_page проставляет соответствующие стили для активной и неактивной страницы
Например , наш код навигации такой:

<navigation skip_href_deletion=true active_link_style=act_page link_style=not_act_page>
<li><a href="/?page=<!--PAGE_NUM-->" title="<!--PAGE_NUM-->" style='<!--LINK_STYLE-->' ><!--PAGE_NUM--></a></li>
</navigation>

условно мы сейчас на 2й странице, а всего старниц 3.

скрипт выведет:

<li><a href="/?page=1" title="1" style='not_act_page' >1</a></li>
<li><a href="/?page=2" title="2" style='act_page' >2</a></li>
<li><a href="/?page=3" title="3" style='not_act_page' >3</a></li>



без skip_href_deletion=true  это выглядело бы так

<li><a href="/?page=1" title="1" style='not_act_page' >1</a></li>
<li>2</li>
<li><a href="/?page=3" title="3" style='not_act_page' >3</a></li>

Так же есть вариант с Prev Next

<?php if ('<!--PREV_PAGE-->') { ?>
<li><a href="/category/<!--CATEGORY_ID-->/<!--CATEGORY_NAME-->/<!--SORT_ORDER-->/<!--PREV_PAGE-->/" title="<!--PREV_PAGE-->"><!--PREV_PAGE--></a></li>
<?php } ?>

<?php if ('<!--NEXT_PAGE-->') { ?>
<li><a href="/category/<!--CATEGORY_ID-->/<!--CATEGORY_NAME-->/<!--SORT_ORDER-->/<!--NEXT_PAGE-->/" title="<!--NEXT_PAGE-->"><!--NEXT_PAGE--></a></li>
<?php } ?>

Category Thumbs

Cкрипт автоматически создает тумбы категорий, которые по умолчанию равны лучшим тумбам из каждой категории. Может быть 2 набора тумб категорий. Настраивается в Rotation - Tube - Settings.

Для вывода списка категорий

<category order=alphabet num=1-5>
<li><a href="/category/<!--CATEGORY_ID-->/<!--CATEGORY_NAME-->/ctr/1/"><!--CATEGORY_NAME--></a> (<!--TOTAL_ITEMS-->) (<!--THUMB_URL-->) </li>
</category>

Параметры:

  • num какие номера выводить (в данном примере с 1й по 5ю из списка).
  • min_gallery_count лимит по кол-ву галер в категории
  • set - выбор сета тумб категорий, по дефолту 1 но можно сделать set=2 например <category order=alphabet num=1-5 set=2>
  • first_letter=… вывод категорий начинающихся с такой-то буквы
  • custom_name_first_letter = … вывод категорий у которых кастом имя начинается с такой-то буквы
  • group_custom_var1 group_custom_var2 group_custom_var3 - по кастом полям
  • filter_field= и сразу filter_value - унифицированно для указанного выше например filter_field=custom_name filter_value=GET_somevar где GET_somevar - это somevar взятая из урла
  • sort_field = сортировка по определенному полю (category_name, category_custom_name, category_custom_var1 (2, 3) )
  • sort_order - относительно sort_field (asc, desc)
  • order - сортировка списка категорий по алфавиту (alphabet) и по популярности (clicks)

Технически можно сортировать по любому полю из массива кажой категории, но вот список тех сортировок которые возможно пригодятся кроме 2х наиболее используемых category_custom_name, category_description, category_id, group_custom_var1, group_custom_var2, group_custom_var3

  • parent_id = ID родительской группы

Include template

Можно подключать любой темплейт, например вынести хедер сайта в шаблон header и, дабы не дублировать начало каждой страницы, подключать его в нужном темплейте

<!--INCLUDE_TEMPLATE_header-->

Аналогично, можно подключать любой другой темплейт.

INCLUDE_FILE

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

Это можно делать через

<!--INCLUDE_FILE_/home/user/domain.com/file.txt-->

это практически аналог

<? include('/home/user/domain.com/file.txt'); ?>

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

Если файл на удаленном серваке то надо делать так:

<!--INCLUDE_FILE_http://domain.com/file.txt-->

НЕЛЬЗЯ делать так

  <? include('http://domain.com/file.txt'); ?>

Облако тагов

	<tag_cloud order=alphabet>
      <a href="/tag/<!--TAG_NAME-->/"><font size='<!--TAG_RANK-->'><!--TAG_NAME-->  <!--TAG_HITS--></font></a>  
	</tag_cloud>


Так же можно лимитировать кол-во тагов 

	<tag_cloud order=alphabet num=1-10>
      <a href="/tag/<!--TAG_NAME-->/"><font size='<!--TAG_RANK-->'><!--TAG_NAME-->  <!--TAG_HITS--></font></a>  
	</tag_cloud>

и сортировать не по алфавиту, апо кол-во галер в таге

	<tag_cloud order=tag_hits num=1-10>
      <a href="/tag/<!--TAG_NAME-->/"><font size='<!--TAG_RANK-->'><!--TAG_NAME-->  <!--TAG_HITS--></font></a>  
	</tag_cloud>

Обратите внимание, что облако тагов создается раз в 30 минут и кладется в кеш. Если очистить кеш - облако тагов пропадет.

Начиная с апдейта 49 скрипт может создавать лучшую тумбу по каждому тагу например

	<tag_cloud order=tag_hits (или clicks) num=1-10>

<!--TAG_NAME--> и далее можно добавить любые таги, характерные для тумб, например <!--THUMB_URL--> что выведет лучшую тумбу по данному тагу

	</tag_cloud>

ПО дефолту выбор лучшей тумбы для каждого тага выключен тк это в определенной мере нагружает сервак. Настройки находятся в Rotation - Tube - Settings.

Model List

Можно вывести всех доступных моделей

<models num=1-10>
<!--MODEL_NAME--> 
</models>

доступные параметры для тага моделей

<models num=1-10 first_letter=a> модели на "а" только
<models num=1-10 min_gallery_count=20> минимум 20 галер
<models num=1-10 order=count_galleries> сортировка по кол-ву галер
<models num=1-10 order=model_ctr> сортировка по среднему CTR всех галер модели
<models num=1-10 order=ctr> сортировка по CTR самой тумбы модели (по аналогии с тумбой категории)


Так же как и для тагов для каждой модели скрипт может автоматически выбрать лучшую тумбу, а вы ее можете вывести потом в цикле
<models num=1-10>
<!--MODEL_NAME--> и далее можно добавить любые таги, характерные для тумб, например <!--THUMB_URL--> что выведет лучшую тумбу модели.
</models>

Дефолтный .htaccess не содержит реврайтов для ротации моделей (реврайт будет доабвлен в новый инсталл). Для ротации тумб моделей надо добавить в .htaccess правила для подсчета цтр.

дефолтный 

RewriteRule ^model/(.*)/$ /scj/tube/?model_slug=$1&force_template=model_galleries [L]

надо заменить на 

RewriteCond %{QUERY_STRING} ^(.+)$ 
RewriteRule ^model/(.*)/$ /scj/cgi/out.php?link=images/%{QUERY_STRING}&url=content&p=100&skip_to_cookie=true&skip_sell=true&model_slug=$1&force_template=model_galleries [L]
RewriteRule ^model/(.*)/$ /scj/tube/?model_slug=$1&force_template=model_galleries [L]

Выводим тумбы моделей (gallery_count_min=1 добавлено дабы выводить только тех моделей для которых могло создать тумбу модели, а для этого надо как минимум одна галера для модели)

<models num=1-10 gallery_count_min=1 order=ctr>
<a href='/model/<!--MODEL_SLUG-->/?<!--THUMB_LINK-->'> <!--THUMB_URL--> <!--MODEL_NAME--> </a> <br>
</models>

Sponsors List

Можно так же вывести список спонсоров.

<sponsors num=1-10>
<!--SPONSOR_NAME--> 
</sponsors>

В rotation - sponsors каждому спонсору можно добавить несоклько урлов: site_url, trial_url и join_url.

На самой галерее можно соответствующими тагами вывести эти урлы, НО тогда серфер будет видеть урл на спонсора вместе с вашей реф линкой, кроме того этот урл не всегда красивый. По дефолту есть реврайт вида http://domain/go/<!–SPONSOR_SLUG–>/ который пошлет на урл, прописанный в site_url.

Можно доабвить в реврайты

RewriteRule ^go/(.*)/(.*)/$ /scj/tube/?action=sponsor&sponsor_slug=$1&field=$2 [L]

и использовать урлы
http://domain/go/<!--SPONSOR_SLUG-->/trial_url/
http://domain/go/<!--SPONSOR_SLUG-->/join_url/

что бы посылать на другие урлы спонсора.

Search log

Если у вас на сайте есть форма поиска (domain/?search=…) то все поисковые запросы логгируются, позже можно вывести лог этих запросов. По умолчанию урл выглядит как http://domain/scj/tube/?search_log=all и будет использован темпелйт search_log. С дефолтными реврайтами урл http://domain/search_log/1/

Но можно так же вывести лог этих запросов на любой странице, например

<thumb search_log=all num=1-10> <!--SEARCH_QUERY--> </thumb>

Кроме all других значений пока нет, оставлено на будущее.

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

В версии 50 в таг для вывода лога поисковых запросов на сайте добавлены следующие возможности

<thumb search_log=all num=1-10 > ........ </thumb>

order=hits - может так же быть alphabet, date, если не указано сортируем по кол-ву хитов.

date_limit=today - может быть так же yesterday, this_week, this_month

date_start=дата date_end=дата 

min_results=  где по результатам поисков было более чем Х результатов

min_hits= это искали минимум Х раз

Search query limit

На сайте может быть масса вариантов лимитирования поиска, например

/?search=... 
может превратиться в 
/?search=...&group_id=..
или
/?search=...&tag=..

и так далее, варианты могут быть разными и комбинированными, поэтому добавлен свободный параметр &search_query_limit

Например, у нас поиск по группе teen. Добавляем в урл search_query_limit=teen, например /?search=…&group_name=teen&search_query_limit=teen и например поиск просто без лимита по группе /?search=….&search_query_limit=empty

при выводе <thumb search_log=all num=1-20> если мы хотим вывести поиски только которые были по группе teen то (а мы помним что там было search_query_limit=teen)

<thumb search_log=all num=1-20 search_query_limit=teen>

Можно подставлять &search_query_limit в зависимости от того как вы хотите потом фильтровтаь запросы. И конечно помним что это можно сделать динамичным если взять параметр из урла

<thumb search_log=all num=1-20 search_query_limit=GET_your_param>

Языковой поиск Аналогично можно сделать разделение поиска по языкам что бы выводить на соответствующих языках. Скрипт сам не определяет на каком языке написано конкретное предложение, но это можно взять из урла например добавляем параметр с текущим языком &search_query_limit=lng_en в строку поиска

domain/?search=test&force_lng=en&search_query_limit=lng_en
domain/?search=test1&force_lng=en&search_query_limit=lng_en
domain/?search=blabla&force_lng=de&search_query_limit=lng_de
domain/?search=blabla2&force_lng=de&search_query_limit=lng_de

Таким образом у нас у базе для каждого поиска будет отмечено на каком языке он сделан. Добавлять параметр не составляет труда прямо в темплейте, например <input type=hidden name=search_query_limit value='lng_<!–GET_force_lng–>'>

В темплейте добавляем

<thumb search_log=all num=1-20 search_query_limit=GET_your_param>

и открываем страницу как domain/?your_param=lng_en, мы должны получить

test,test1

тк на них стоит пометка lng_en

Toplist

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

<thumb num=1-3></thumb>
тумба трейдера
<thumb num=3-6></thumb>
еще 2 тумбы трейдеров и тд

таким образом можно не делать выделенный топлист и даже поставить ским 100.

Проблема была в том, что для того, что б вывести 1 или 2 тумбы трейдеров надо было делать большое кол-во темплейтов топа и потом их инклудить в нужном месте темпелйта. Сейчас трейдеров можно выводить прямо в темплейте в нужном кол-ве.

<thumb num=1-3></thumb>

<trader num=1> <!--DOMAIN--> </trader>

<thumb num=3-6></thumb>

<trader num=2-3> <!--DOMAIN--> </trader>

Итого внутри тага <trader можно использовать

<!--DOMAIN--> - домен 
<!--DESCRIPTION--> = <!--DESC--> 
<!--IMAGE--> <!--IMAGE2--> и так далее если у вас для каждого трейдера более одной тумбы
<!--URL--> 
<!--TOTAL_UNI-->
<!--TOTAL_ROW-->
<!--TOTAL_CLICKS-->
<!--TOTAL_OUT-->
<!--TOPLIST_COMMENT-->
<!--GROUP_1_NAME--> <!--GROUP_2_NAME--> and so on

Возможные параметры для тага

<trader num=1 .... >
num = номер трейдера, может быть промежуток например 1-5

order = сортировка, варианты uniques, raws, priority, clicks по деофлту - uniques.

Вариант сортировки priority нас интерисует в первую очередь для трейда, те тумбы трейдеров которым мы должны отдать в первую очередь будут находится выше в темплейте.

Default templates

По дефолту в скрипте есть предустановленные шаблоны. В большинстве случаев их названия и описания ясны. Эти шаблоны не удаляются из админки. дабы не удалить чего нечаянно.

content_single_item - это темпелйт для вывода большой картинки с пиксовой гали на отдельной странице.

Custom Templates

Вы можете добавить неограниченное кол-во своих темплейтов и вызывать их используя ?force_template=…

Например, вы хотите отдельный дизайн для ваших трейдера trd.com Для начала создаем шаблон trd_personal и в нем создаем шаблон конкретно для этого трейдера.

Вот несколько вариантов, как можно сделать это. Смысл всех этих операций в одном и том же - передать параметр force_template=

1. трейдер может слать на урл http://your_domain.com/?force_template=trd_personal

2. вы можете создать файл your_domain.com/t.php следующего содержания

<?php
$_GET['force_template'] = 'trd_personal';
include('./scj/tube/index.php');

и прописать трейдеру этот t.php как персональную страницу.

3. в your_domain.com/common.php добавить строку вида

после
<?php
добавить

if (strstr($_SERVER['HTTP_REFERER'], 'trd.com')) $_GET['force_template'] = 'trd_personal';

Custom gallery - antibot question

По дефолту для защиты комментов от спама на кастом галерах используется капча. Теперь есть вариант номер два - <!–ANTIBOT_QUESTION–> который выбирается из вопросов которые используются при сайнапе трейдеров, те из Settings - Cjsettings - wm signup.

В этом опредленно есть смысл, так на форуме smartcj.com было много спама, потому что стандартную капчу давно уже разбирают автоматически. Разобрать автоматически вопрос намного сложнее. Результат - 99% спама пропало.

Global Custom Vars

Удобно иметь глобальные замены для всех темплейтов, например, места для баннеров, link exchange и тп. Специально для этого есть Rotation - Tube - Tpl Custom Vars. Добавленные там переменные будут доступны в любом темплейте, например добавляете my_var1 и они будет доступна как <!–CUSTOM_VAR_MY_VAR1–> в любом темплейте. Удобно тем, что легко поменять например баннер во всех темплейтах.

Developer mode

Темплейты находят в базе, но для некоторых удобнее редактировать темплейты через фтп, а не через админку. Для этого случая есть Developer Mode - вы можете залить темплейт в scj/tube/default_templates с именем имя_темплейта.tpl (например, content_page.tpl, index.tpl). При каждом запуске скирпт будет проверять наличие темплейтов в этом каталоге, и если они есть - будет добавлять из файла в базу (обновлять в базе).

После того как все темплейты настроены имеет смысл ее отключить дабы скрипт не делал лишних проверок = экономия ресурсов сервера.

How it works

Как работает система темплейтов - для продвинутых пользователей. За формирование страницы отвечает скрипт /scj/tube/index.php соответственно без реврайтов все урлы выглядят примрено так

страница модели /scj/tube/index.php?model_slug=...&force_template=model_galleries

для некоторых страниц название темпелйта указано по умолчанию, например

страница категории  /scj/tube/index.php?group_id=5

хотя темпелйт тут не указан, будет использован темплейт content_list, но можно указать и свой например

/scj/tube/index.php?group_id=5&force_template=mytpl

Таким образом можно формировать через реврайты любые урлы и любые темплейты.

Кастом гали - по дефолту грабится весь контент с гали (но при грабе можно так же указать только определнный тип контента - картинки, мувики, флеш). При грабе парсер смотрит какой тип контента имеется, если тип конетнта только 1 - гале назначется соотв темпелейт (например content_custom_pic или content_custom_mov). Если разные типа контента - назначается content_custom_mix. Технически скрипту не имеет значения каким темпелейтом выводить какую галю - разделение сделано исключительно для удобства пользования, так например в дефолтном pic темплейте просто тумба линкуется на картинку, в mov стилизовано под плеер, а в flash сразу выведен код для ембеда.

При добавлении контента можно форсировать определенный темплейт. Обычно это не надо, тк в 99% случаев темпелйт из стандартных определяется как надо (если не так как - велкам в суппорт). 1% случаев - это когда вы заводите кастом темпелйты для спонсоров. Например, для галер опр спонсора вы делаете альтернативный пиксовый темпелйт с каким то дизайном под этого спона - это тот случай когда в импорте надо руками выбирать темплейт.

Базовые параметры в скрипте

/scj/tube/index.php?
page=...
order= (ctr - по умолчанию, date, duration)
force_template
slug= саг галереи
sponsor_slug=
model_slug=
search=
date_start= , date_end=
и predefined dates date_limit=today, yesterday, this_week, this_month

По дефолту в скрипте 2 реврайта для галер:

  1. для урлов вида /gallery/asd/index.html?123x123x123
  2. и для урлов вида /gallery/asd/index.html

как видно они отличаются наличием в конце параметра ротации

в варианте 1 оно будет засчитано как клик, в варианте 2 - нет. Это сделано для того что бы можно было линковать на галеры с других сайтов. Например, у вас есть сайт 2, и вы с него хотитте слать на галеры на сайте 1. Пусть урл галеры на сайте 1 - http://domain1/gallery/asd/index.html, если бы все переходы на http://domain1/gallery/asd/index.html считались как клики то была бы проблема - все переходы с сайта 2 сразу бы считались как клики. Поэтому и сделано 2 реврайта - без параметра ротации просто показывает галеру и не считает клик, с параметром роатции - считает клик и показывает галеру.

ru/new_rotation_templates.txt · Last modified: 2018/09/28 06:58 by admin