User Tools

Site Tools


Translations of this page:
ru:tcms_update_1

Update 1

Rotation

Page_main_tag and Return 404

Есть фича “URLs with 0 result thumbs return 404” общий смысл которой заключается в том, что если у вас есть например 100 тумб, и пагинация по 20, то это 5 страниц. При запросе 6й страницы (например если вручную подправить URL), поскольку тумб для заполнения страницы не будет - скрипт выдаст 404 и покажет темпелйт content_not_found

Так же есть параметр для тага page_main_tag=true, которые показывает по какому из тагов считать навигацияю и TOTAL_ITEMS на странице, если таких тагов несколько.

Получаем следующий пример, который включает все из перечисленного.

<category order=ctr num=1-100>
category template
</category>


<thumb num=1-20 search_log=all >
search template (<!--SEARCH_QUERY-->, hits <!--HITS-->  and so on
</thumb>


<thumb num=1-20 >
regular thumb template 
</thumb>

Например, у нас 100 сохраненных поисковых запросов и 500 тумб всего.

Опция URLs with 0 result thumbs return 404 Включена.

Итак, в оригинальном варианте на 6й странице у нас возникает вопрос: запрос search_log вернул 0, а для просто <thumb еще есть тумбы. надо в данном случае 404 показывать или нет - это зависит что вы считаете главное в темпелйте. Может быть тут вы хотите выводить поисковые запросы, а может быть поисковые запросы только дополнение к тумбам.

Добавим указание какой таг основной

<thumb num=1-20 search_log=all page_main_tag=true>
search template (<!--SEARCH_QUERY-->, hits <!--SEARCH_QUERY_HITS-->  and so on
</thumb>

<thumb num=1-20 >
regular thumb template 
</thumb>

теперь скрипт будет ориентироваться на search_log и на 6й странице выдаст 404.

Если же сделать <thumb num=1-20 page_main_tag=true> то на 6й странице выдаст обычные тумбы, но тут возникает проблема с тем, что search_log не выдаст ничего (поскольку для 6й страницы уже нет данных). Тут можно добавпить в таг fixed_num=true (например <thumb num=1-20 search_log=all fixed_num=true>) - и будет на всех страницах выводить именно 1-20, без учета сдвига на номер страницы.

И еще одна ситуация в которой нужен этот таг.

<category order=ctr num=1-100>
category template
</category>


<thumb num=1-20 search_log=all >
search template (<!--SEARCH_QUERY-->, hits <!--SEARCH_QUERY_HITS-->  and so on
</thumb>

Например, мы толкьо создали сайт и у нас нет сохраненных поисковых запросов. В этой ситуации таг, когда не указан page_main_tag таг <thumb num=1-20 search_log=all > выдаст 0 тумб и сработает правило 404.

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

С другой стороны возможно search_log это только дополнение и надо выводить именно категории. В этом случае page_main_tag надо добавить в <category order=ctr num=1-100 page_main_tag=true > дабы показать что этот таг основной для этой страницы.

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-->

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

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

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

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

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

Category Boost \ Separate Thumb CTR

Тестовый вариант разделения ЦТР для каждой тумбы в категории.

Rotation Settings - Test settings - Boost gallery CTR in category, %

Смысл в том, что в каждой категории ЦТР галеры увеличивается пропорционально кол-ву кликов в категории, таким образом каждая тумба набирает как общий ЦТР так и отдельный в каждой категории, который зависит в том числе и от общего цтр. При маленьком бусте цтр в категории будет практически совпадать с общим, при большом будет сильно отличаться.

Например у тумбы 10 показов и 1 клик на индексе, 2 в категории А и 3 в категории Б. Boost = 50%, общий ЦТР при выводе тумбы на индесе либо без указания категории (1+2+3)/10 = 0.6

Для категории А (1+2*1.5(boost)+3)/10 = 0.7

Для категории Б (1+2+3*1.5(boost) )/10 = 0.75

В данный момент это работат только при использовании magic rotation parameter.

Animated Gifs

Добавлена возможность создания анимированных gif файлов для видео что нонче модно для сайтов в стиле пинтерест. Для использования надо:

  1. убедиться что у вас на сервере стоит mplayer and ffmpeg и прописать пути в rotation - settings
  2. добавить галерею с видео (URL) либо сразу урл к видео (FLV URL) и добавлять в preload
  3. после процесинга в preload 1 можно кликнуть на лубую тумбу и откроется страница редактирования тумбы с плеером и добавленным видео

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

Prefix encodehtml2js

Добавлен префикс для тагов, которые превращает любой html в закодированный JS код. Наиболее вероятное использование - кодирование ембед кода. Например,

исходный вариант 

<!--EMBED_CODE-->

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

<!--ENCODEHTML2JS_EMBED_CODE-->

Sphinx config

Тк была изменена база немного поменялся конфиг сфинкса

	sql_query				= SELECT gi.gallery_id, UNIX_TIMESTAMP(gi.activation_date) as date, alt, description, gi.duration, sponsor_id, gs.total_ctr, gi.content_type, \
							(SELECT group_concat(tag_name) FROM rot_gal2tag g2t \
							LEFT JOIN rot_tags as t on t.tag_id = g2t.tag_id \
							WHERE g2t.gallery_id = gi.gallery_id) as tags, \
							(SELECT group_concat(gss.group_id) FROM rot_gallery_stats1 as gss \
							WHERE gss.gallery_id = gi.gallery_id AND group_id != 0) as categories \
							FROM rot_gallery_info AS gi \
							JOIN rot_gallery_data1 AS gd ON gi.gallery_id = gd.gallery_id \
							JOIN rot_gallery_stats1 AS gs ON gs.gallery_id = gi.gallery_id \
							WHERE gallery_status = 'active' and gallery_type = 0 \
							and gs.best_thumb = 'yes' and gs.group_id = 0


	sql_attr_timestamp		= date
	sql_attr_uint		    = duration
	sql_attr_uint		    = sponsor_id
	sql_attr_float		    = total_ctr
	sql_attr_uint		    = content_type
	sql_attr_uint			= gallery_id
    sql_attr_multi 			= uint categories from field; 

Search Log Advanced Queries

В скрипте давно уже есть фича по выводу последних поисковых фраз

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

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

<thumb num=1-10 search_log=all filter=GET_group_name

На странице тага можно фильтровать по имени тага

<thumb num=1-10 search_log=all filter=GET_tag

На странице поиска можно фильтровать по поисковому запросу

<thumb num=1-10 search_log=all filter=GET_search

Тут надо напомнить что в параметрах то что начинается с GET_ - это переменные из запроса (из урла).

По умолчанию результаты сортируются по кол-ву поисков по конкретному запросу, но можно так еж отсортировать по кол-ву результатов по такому поиску (те у нас 2 варианта order есть )

<thumb num=1-10 search_log=all filter=GET_search order=items_found
<thumb num=1-10 search_log=all filter=GET_search order=hits

Таким образом на каждой странице создаются линки на другие страницы и общее кол-во страниц на сайте растет.

Конечно, запросы набираются очень медленно, и что бы форсировать это событие s Search Log в админке (/admin/?operation=rotation&sub=rot_tube&subsub=rot_search_log&) можно добавить любые поисковые запросы так, как будто их уже искали у вас на сайте.

Для примера, на bigbase.smartcj.com было добавлено порядка 2М запросов. Из чего выплыло несколько проблем, которые были сразу же решены.

1. тк запросы были взяты из общих источников оказалось что по части запросов в базе ничего не находит. Таким образом была вероятность получить на странице ссылку на которой было 0 результатов поиска. Что бы решить этот вопрос rotation.php, который запускается по крону проверяет, периодически проверяет новые запросы и смотрит, что бы по ним хоть что-то находилось в базе. Если ничего не находит - удаляет запрос из списка. Это событие можно форсировать в шеле

php rotation.php check_search_queries=true

2. когда в базе немного поисковых запросов то Mysql справляется без проблем с ними. Однако когда добавили 2М запросов то поиск по такой таблице стал тяжелым и для индексации решили добавить Sphinx - это сделало не только быстрым поиск, но и сам поиск более продвинутым. Что бы добавить Sphinx надо в конфиг сфинкса добавить

source search_queries 
{
	type					= mysql

	sql_host				= ........
	sql_user				= .......
	sql_pass				= ........
	sql_db					= ......
	sql_port				= 3306	# optional, default is 3306

    sql_query_pre = SET NAMES utf8

	sql_query				= SELECT sq_id, search_query, hits, items_found FROM rot_search_queries WHERE hits > 0  GROUP BY search_query

	sql_attr_uint		    = hits
	sql_attr_uint		    = items_found

}


index search_queries_index
{
	source					= search_queries
	path					= /path_where_to_store_index
	docinfo					= extern
	morphology              = stem_en
}


После этого сфинкс сможет проиндексировать имеющиеся у вас запросы.

Что бы SmartCJ смог начать использовать этот индекс надо его указать в настройках ротации Sphinx Search , поле Sphinx Search Log Index = search_queries_index

Все.

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ю

Subcategories and filter keywords

Небольшая поправка в распределении по субкатегориям (те когад категория является подкатегорией корневой категории, например 2 категории верхнего уровня cars и buses, у каждой из них есть субкатегории red и blue тк и автобусы и машины могут быть этих цветов)

Вопрос возникает когда надоо импортировать что-то, а основного кейворда нет, например фраза “red wheel” может относится как к машинам так и к автобусам.

Поэтому поправка заключается в том, что если при импорте выделено filter keywords (alt+desc) И (!!!) рут категория, например cars в нашем примере, то искать кейворды будет только в субкатегориях указанной рут категории.

те для нашего примера по кейворду red она попадает только в субкатегорию cars → red

Trade

Overclick skimming hold

Допустим у нас ситуация, когда у нореф ским 100%, а у оверклик - 0% (или какое-то другое число отличное от 100). Допустим пришел нореф и сделал 20 кликов со скимом норефа - 100%. После дефолтных 20 кликов трейдер становится оверкликом и скимминг для него становится 0%. Однако мы хотим что б именно для нореф ским оставался 100% (для оверклик траффика трейдеров - 0%) - для этого добавлен специальный флаг - в поле скимминга для норефа надо написать !100 (восклицательный знак в начале) - это значит, что скиминг остается 100% даже в случае оверклика.

Incoming TDS

Для входящего траффика можно указывать список правил, например TDS_1. Это лучше тем, что в TDS можно указать сразу набор правил, по которым траффик будет обработан. В конце схемы TDS можно указать {ORIGINAL_URL} и это будет урл, куда траффик пойдет если не сработало правило TDS (обычно это индекс сайта, но возможны вариант персональных урлов и тп)

Auto lock traffic in trade groups

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

Находится настройка в Settings - Traffic Rules

ru/tcms_update_1.txt · Last modified: 2022/12/28 12:01 by admin