* skip_href_deletion=true по дефолту скрипт удаляет a href с текущей страницы, с этой опцией - не будет удалять.
* active_link_style=act_pg и link_style=not_act_page проставляет соответствующие стили для активной и неактивной страницы
* max_pages ограничить макс кол-во страниц. Полезно если у вас очень большая база, реальные люди все равно в самый конец не ходят.
Например , наш код навигации такой:
условно мы сейчас на 2й странице, а всего старниц 3.
скрипт выведет:
Параметры:
* num какие номера выводить (в данном примере с 1й по 5ю из списка).
* min_gallery_count лимит по кол-ву галер в категории
* set - выбор сета тумб категорий, по дефолту 1 но можно сделать set=2 например
* first_letter=... вывод категорий начинающихся с такой-то буквы, # - начинается с цифры
* custom_name_first_letter = ... вывод категорий у которых кастом имя начинается с такой-то буквы
* category_custom_var1 category_custom_var2 category_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), кол-ву галер (total_items) , случайно (random)
Технически можно сортировать по любому полю из массива кажой категории, но вот список тех сортировок которые возможно пригодятся кроме 2х наиболее используемых
category_custom_name, category_description, category_id, category_custom_var1, category_custom_var2, category_custom_var3
* parent_id = ID родительской группы
* name="cat1,cat2" имя категории
* category_id= ИД категории
Доп таги для списка категорий:
* - топ тумб категории, через запятую, эти данные можно обрабатывать в темплейте как вам надо.
===== Category Pagination =====
По умолчанию если мы выводим категории, то на всех страницах надо вывести просто список категорий без сдвига, те если у вас в хедере страницы например
(тут надо обратить внимание на добавление
adjust_num_to_page)
И к этому можно добавить пагинацию именно для тумб категорий
(тут надо обратить внимание на type=pagination)
(categories total = ) ...
Предыдущая и следующая страницы
prev =
Next =
Тут везде надо обратить внимание что таги практически одинаковые, те если у вас всего 100 категорий то
Next =
выведет next на 4й старнице, а если сделать
Next =
то на 4й странице не будет next.
====== adjust_num_to_page ======
По умолчанию тумбы категорий и моделей выводятся без учета &page= в урле , например у вас темплейт index
то на первой странице выведет первые 10 категорий и первые 10 тумб. На второй странице будет опять же первые 10 категорий, а вот тумбы будут уже 11 - 20. Сделано так было в свое время тк в большинстве случаев список категорий "двигать" по страницам не надо, иначе например на 5й старнице списка категорий уже не было бы.
Но бывают варианты, когда вам надо все же "двигать" список категорий по страницам. В этом случае пригодится параметр adjust_num_to_page=true, например
в этом случае на 2й странице выведет категории 11-20
====== Language list ======
Перечислить доступные переводы можно тагом
.. ...
так же для текущего языка можно использовать таг отдельно, например линк /best_videos, у вас реврайтами сделаны языки как например domain.com/de, те польный урл получается https://domain.com/de/best_videos
Тогда в темплейте это можно указывать как
https://domain.com//best_videos
и код языка будет подставляться в темплейте
====== Include template ======
Можно подключать любой темплейт, например вынести хедер сайта в шаблон header и, дабы не дублировать начало каждой страницы, подключать его в нужном темплейте
Аналогично, можно подключать любой другой темплейт.
====== INCLUDE_FILE ======
Часто в темплейтах есть иинклуды внешних файлов, например кусок кода с обменом линками, который при этом часто бывает даже на другом домене\серваке.
Это можно делать через
это практически аналог
include('/home/user/domain.com/file.txt'); ?>
Разница в том, что в первом варианте файл инклудится 1 раз и кладется в кеш. Во 2м варианте файл инклудится каждый раз при загрузке страницы. В принципе, для локальных файлов можно сказать, что разницы нет.
Если файл на удаленном серваке то надо делать так:
**НЕЛЬЗЯ** делать так
include('http://domain.com/file.txt'); ?>
Для удобства переноса темплейтов между доменами можно пользоваться вариантом
где BASE_DIR берется из common.php и соответственно свой для каждого домена.
====== Tag Cloud ======
Так же можно лимитировать кол-во тагов
и сортировать по кол-ву галер в таге
Другие параметры тага
gallery_count_min - минимальное кол-во галер для вывода
first_letter - таг начинается с этой буквы
filter - таг содержит это слово, в дополнение можно использовать
filter_type = exact_search для точного совпадения
filter_type = fulltext_search - если добавлен FULLTEXT index
status=all по умолчанию
Вывод лучшей тумбы по данному тагу
и далее можно добавить любые таги, характерные для тумб,
например что выведет лучшую тумбу по данному тагу
По дефолту выбор лучшей тумбы для каждого тага выключен тк это в определенной мере нагружает сервак. Настройки находятся в Rotation - Tube - Settings.
====== Model List ======
Можно вывести всех доступных моделей
доступные параметры для тага моделей
модели на "а" только
минимум 20 галер
сортировка по кол-ву галер
сортировка по среднему CTR всех галер модели
- цтр тумб
вывод только тех моделей,
у которых есть фото
(загруженное мануально)
вывод только тех моделей у которых есть
выбранная автоматически тумба модели (выбирается в Rotation Settings - model
thumbs)
фильтр по кастом вар1
(model_custom_var1="asd" )
вывод тех у кого в кастомвар не пустая
===== Model Thumbs =====
Есть 2 варианта картинок моделей: фото моделей (добавляется в админке) и тумбы моделей (Так же как и для тагов для каждой модели скрипт может автоматически выбрать лучшую тумбу, включается в Rotation - Settings - System Thumbs, по умолчанию выключено что б не расходовать лишние ресурсы)
**Тумбы моделей**
что выведет лучшую тумбу модели.
Пример реврайта для моделей
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 добавлено дабы выводить только тех моделей для которых могло создать тумбу модели, а для этого надо как минимум одна галера для модели)
===== Model Photos =====
У моделей могут быть свои фото, это именно фото модели (которые добавляются в админке), а не тумбы галер, где есть это модель. Вывод фото
===== Model Pagination =====
Можно добавить пагинацию для моделей
( )
====== Sponsors List ======
Можно так же вывести список спонсоров.
Параметры
order= alphabet, ctr, sponsor_name, count_galleries
===== Sponsor URLS =====
В rotation - sponsors каждому спонсору можно добавить несоклько урлов: site_url, trial_url и join_url.
На самой галерее можно соответствующими тагами вывести эти урлы, НО тогда серфер будет видеть урл на спонсора вместе с вашей реф линкой, кроме того этот урл не всегда красивый. По дефолту есть реврайт вида http://domain/go// который пошлет на урл, прописанный в site_url.
Можно доабвить в реврайты
RewriteRule ^go/(.*)/(.*)/$ /scj/tube/?action=sponsor&sponsor_slug=$1&field=$2
[L]
и использовать урлы
http://domain/go//trial_url/
http://domain/go//join_url/
что бы посылать на другие урлы спонсора.
====== Search log ======
Если у вас на сайте есть форма поиска (domain/?search=...) то все поисковые запросы логгируются, позже можно вывести лог этих запросов.
Но можно так же вывести лог этих запросов на любой странице, например
Обратите внимание, что при логгировании поисковых запросов так же учитывается поле из сеттингов Banned words и если кто-то ищет слово из списка - оно не будет логгировано.
........
order=hits - может так же быть alphabet, date, если не указано сортируем по
кол-ву хитов.
sort=ASC (DESC) в дополнение к тагам выше для сортировки в другом порядке
date_limit=today - может быть так же yesterday, this_week, this_month
date_start=дата date_end=дата
min_results= где по результатам поисков было более чем Х результатов
min_hits= это искали минимум Х раз
search= фильтр поисковых запросов по этому слову
есть "синтаксический сахар"
search= CURRENT_CATEGORY_NAME или CURRENT_TAG_NAME
что тоже самое что и search=GET_category_name и search=GET_tag_name (те берем слова для поиска из урла)
exclude_search_query= исключить из результатов
99% будет exclude_search_query=GET_search - те исключение текущего запроса
При поиске на сайте мы логгируем сам запрос, например, "машина" и ИД галеры, которая первая по этому запросу, таким образом можно вывести не только сами запросы, но сразу и тумбы топ галер по этим запросам. Например,
Best gallery:
и тп данные галеры, которая была первой по этому запросу
Можно указать не сохранять в лог поисковые запросы
по этому запросу
====== Search log : allow_dupes ======
каждый поиск запоминает первую галеру по результатам этого поиска, вывести можно как
- Best gallery:
однако есть вероятность что по разным поискам первой галерой будет одна и та же галера, поэтому по умолчанию дубли не выводит , если вы выводите только поисковую фразу , без галеры, то вам не важно такое дублирование и можно сделать
====== Related Search log ======
Например, пользователь искал у нас на сайте "машина", а потом искал "бензин" или "прицеп", те это связанные по смыслу поисковые запросы.
Если мы это запомним то сможем в будущем выводить такие запросы, например, пользователь ищет "машина", а мы там же выводим "может быть вы хотите еще посмотреть результаты по бензин и прицеп".
Для трекинга надо поменять линки на сайте что бы запрос поиска был вида
/?search=....&ref_search_query=...
где ref_search_query= это и есть предыдущий запрос.
Например, в форме поиска
что б потом вывести связанные запросы
те в ref_search_query мы ищем кей совпадающее с GET_search
====== Search log - approved ======
По умолчанию все поисковые запросы сохраняются в базу и отмечаются как new. Так же по умолчанию таг
и будет выводить только те поисковые фразу, которые вы апрувнули в админке.
====== Syntactic Sugar ======
Для удобства в макросах можно пользоваться "синтаксическим сахаром", например
........
такой синтаксический сахар действует во всех тагах
на данный момент добавлено
CURRENT_CATEGORY_NAME
CURRENT_TAG_NAME
Планируется добавить все данные, если надо что-то больше - пишите на форуме и будет добавлено.
===== Search log pagination=====
Решается добавлением type=pagination в таг
обратите внимание что таг пагинации должен быть такой же как и "основной" таг, например основной таг
можно его отфильтровать с учетом текущего поиска Например, серфер ищет domain.com/?search=test, в темплейте у нас
вывод тумб результатов поиска
и вывод поисковых запросов
где GET_search - это параметр search из GET (те урла)
**Ньюанс фильтрации**
По умолчанию mysql ищет как полное слово, например искали "test car" оно будет фильтровать по полному вхождению. Те в данном случае если в поисковых запросах будет "test bus" то этот запрос не выведет.
Если у вас mysql версия 5.6 и выше то поле автоматически конвертируется в полнотекстовый поиск (mysql fulltext search) и в этом случае вам ничего не надо делать, скрипт будет автоматически искать и по одному слову, те в примере "test bus" тоже попадет в результаты.
Но если у вас mysql до 5.6 ЛИБО кол-во поисковых запросов очень велико (100к+), то вам надо использовать sphinx для поиска. Индексируем поисковые запросы (см Sphinx статью в вики) и прописываем Sphinx Search Log Index в сетингах. По дефолту сфинкс тоже ищет полные вхождения, но ему можно прописать флаг Sphinx Search Mod = SPH_MATCH_ANY и он будет искать даже по одному слову.
===== Search query limit =====
На сайте может быть масса вариантов лимитирования поиска, например
/?search=...
может превратиться в
/?search=...&category_id=..
или
/?search=...&tag=..
и так далее, варианты могут быть разными и комбинированными, поэтому добавлен свободный параметр &search_query_limit
Например, у нас поиск по группе teen.
Добавляем в урл search_query_limit=teen, например /?search=...&category_name=teen&search_query_limit=teen и например поиск просто без лимита по группе /?search=....&search_query_limit=empty
при выводе если мы хотим вывести поиски только которые были по группе teen то (а мы помним что там было search_query_limit=teen)
Можно подставлять &search_query_limit в зависимости от того как вы хотите потом фильтровтаь запросы. И конечно помним что это можно сделать динамичным если взять параметр из урла
**Языковой поиск**
Аналогично можно сделать разделение поиска по языкам что бы выводить на соответствующих языках. Скрипт сам не определяет на каком языке написано конкретное предложение, но это можно взять из урла например добавляем параметр с текущим языком &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
Таким образом у нас у базе для каждого поиска будет отмечено на каком языке он сделан. Добавлять параметр не составляет труда прямо в темплейте, например
В темплейте добавляем
и открываем страницу как domain/?your_param=lng_en, мы должны получить
test,test1
тк на них стоит пометка lng_en
Обратите внимание, что можно добавить руками поиски в базу (Add Search requests) в формате "search_query|search_query_limit" те сразу указать search_query_limit
====== Toplist ======
Привычная схема для многих - топлист трейдеров в отдельном файле и инклудится в темплейт. Лучше пропустить момент с созданием отдельного файла и добавлять топ трейдеров прямо в темплейт, при этом можно например подмешивать их.
тумба трейдера
еще 2 тумбы трейдеров и тд
таким образом можно не делать выделенный топлист и даже поставить ским 100.
Проблема была в том, что для того, что б вывести 1 или 2 тумбы трейдеров надо было делать большое кол-во темплейтов топа и потом их инклудить в нужном месте темпелйта. Сейчас трейдеров можно выводить прямо в темплейте в нужном кол-ве.
Можно указать рендомное кол-во тумб, например
выведет 3 трейдера от которые где-то на позиции между 1 и 10
Итого внутри тага
номер в топе
- домен
=
и так далее,
если у вас для каждого трейдера
более одной тумбы
перс декс для гурппы
- отдельные дески трейдера по группам (в
редактировании трейда)
с отдельными описаниями для групп есть небольшой ньанс. Например у нас трейдер А находится в группе 1.
Обычное описание у трейдера "тест", а в группе 1 "супер тест" Если мы выведем
макрос
выводит всех трейдеров и в том числе трейдера А. Тк тут не указана группа то выведет "тест", но если в макросе указана группа например
то выведет "супер тест".
Возможные параметры для тага
num = номер трейдера, может быть промежуток например 1-5
order = сортировка, варианты uniques, raws, priority, clicks, random по
деофлту - uniques.
group= группа трейдеров
skip_group= пропустить группу
unique_hits_limit=2-100 - ограниение по кол-ву хитов трейдеров
Вариант сортировки priority нас интерисует в первую очередь для трейда, те тумбы трейдеров которым мы должны отдать в первую очередь будут находится выше в темплейте.
**Blocked countries**
Если у вас блокируются какие-то страны для трейдера ( условно не слать IN на трейдера domain.com) то логично не выводить в топе трейдеров этого трейдера для трафика из Индии. Для этого в таг надо добавить
Это немного увеличивает нагрузку тк для каждого хита надо проверять что выводить, с другой стороны правильнее распределяет трафик.
**Тумбы трейдера**
По умолчанию тумбы трейдера создаются в scj/top/tt (можно поменять в сетингах) в виде trader.com.jpg. Фактически вам даже не надо (это просто тн синтаксический сахар), можно вывести просто
.jpg
Если вы указали перс урлы трейдера по категориям, то будут созданы тумбы название по шаблону trader.com.CATEGORY_NAME.jpg те условно trader.com.teen.jpg, соответственно что бы вывести .категория.jpg
===== Trader CRC =====
Вариант спрятать домен в линке, например
те в линке домена не будет видно
====== Rotation Settings ======
Все настройки ротации доступны в темплейтах как
например
имена переменных можно видеть в админке в названии полей (F12 в браузере)
====== 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 следующего содержания
и прописать трейдеру этот t.php как персональную страницу.
**3.** в your_domain.com/common.php добавить строку вида
после
====== Custom gallery - antibot question ======
По дефолту для защиты комментов от спама на кастом галерах используется капча. Теперь есть вариант номер два - который выбирается из вопросов которые используются при сайнапе трейдеров, те из Settings - Cjsettings - wm signup.
В этом опредленно есть смысл, так на форуме smartcj.com было много спама, потому что стандартную капчу давно уже разбирают автоматически. Разобрать автоматически вопрос намного сложнее. Результат - 99% спама пропало.
====== Tag Processing ======
Сначала обрабатываются таги, потом выполняется пхп. Например, у нас конструкция
это значит что сначала это буде разложено в
slug1
slug2
slug3
slug4
slug5
и потом выполнен пхп.
Это так же значит что нельзя всунуть пхп в сам таг, например
потому что, опять же, сначала таги, потом пхп.
Данные в таг передаются например из урла GET_ или predefined vars например CURRECT_ITEM_...
====== Global Custom Vars ======
Удобно иметь глобальные замены для всех темплейтов, например, места для баннеров, link exchange и тп. Специально для этого есть **Rotation - Tube - Tpl Custom Vars**. Добавленные там переменные будут доступны в любом темплейте, например добавляете **my_var1** и они будет доступна как **** в любом темплейте. Удобно тем, что легко поменять например баннер во всех темплейтах сразу.
Так же кастом переменная может быть с переводом для каждого языка.
Например, у вас есть основной язык (на котором вы добавляете контент) и вы добавили сколько надо языков в Rotation Settings - Multilingual. Теперь переменная на каждом языке - своя, если нет перевода для конкретного языка, то будет использован основной.
**Mobile**
Можно кастом переменную менять для мобильных пользователей добавляя _MOBILE
Например, у нас есть кастом переменная для темплейтов MY_VAR (в темплейте выводится как ), можно добавить переменную MY_VAR_MOBILE если страницу откроет пользователь с мобильного то таг будет заменен на то что указано в MY_VAR_MOBILE, а не MY_VAR
**Translation**
Можно быстро перевести с основного языка на дополнительный. Для этого в **Translation [+]** отмечаем галочками какие переменные надо перевести и указываем чем переводить например
external::http://your_domain/scj/bin/rotation.php
?action=translate_text
&text={MAIN_VALUE}
&source_lng=en
&target_lng={TRANSLATION_LNG}
&api_key=...
дефолтный вариант - google translate
Тут надо обратить внимание на
&source_lng=en - основной язык
api_key - ключ АПИ с гугла
Вы можете заменить гугл на любой свой вариант перевода.
В процессе перевода скрипт будет менять {MAIN_VALUE} на актуальный текст
и {TRANSLATION_LNG} на называние языка на который нужен перевод, например it
====== Mobile templates and Mobile Custom Vars ======
Есть 3 стратегии работы с темплейтами для мобильных пользователей.
Задача: выводить например баннер_1 для десктоп и баннер_2 для мобильных
**Вариант 0**
Который я надеюсь уже не используется, но все же: делаем 2 темплейта: index и mobile_index и в каждом в нужном месте прописываем баннер прямо в HTML
Понятно что если баннер больше чем на одной странице то отредактировать его - значит прокликать все страницы.
**Вариант 1**
Создаем 2 кастом переменных, например banner_1 (будет выводится как ) и banner_2 (будет выводится как )
Делаем 2 темплейта: index и mobile_index и в каждом указываем нужную переменную
Это вариант если у вас темплейт для мобильных кардинально отличается от десктопа
**Вариант 2**
Как надо делать:
Создаем 2 кастом переменных, например banner (будет выводится как ) и banner_mobile (его можно вывести как но это не пригодится )
В темплейте index в нужном месте добавляем только и для мобильных юзеров выведет banner_mobile
Этот вариант более правильный тк нонче считается что все темплейты должны быть "тянущимися" в зависимости от разрешения устройства
====== Developer mode ======
Темплейты находят в базе, но для некоторых удобнее редактировать темплейты через фтп, а не через админку. Для этого случая есть Developer Mode - вы можете залить темплейт в scj/tube/default_templates с именем имя_темплейта.tpl (например, content_page.tpl, index.tpl). При каждом запуске скирпт будет проверять наличие темплейтов в этом каталоге, и если они есть - будет добавлять из файла в базу (обновлять в базе).
После того как все темплейты настроены имеет смысл ее отключить дабы скрипт не делал лишних проверок = экономия ресурсов сервера.
====== User Thumbs ======
Часто большое количество тумб с одного видео надо не для ротации (и выбора лучшей тумбы), а для роллинга тумб те когда при наведении мышки на тумбу картинка начинает меняться. При этом траффика для ротации такого количества тумб просто нет и растить базу (а каждая тумба ротации - это место в базе, больше база = больше памяти она занимает). При грабе скрипт сохранит пользовательские тумбы только на диск в /thumb/user_thumbs/gallery_id/
Например, мы решили что у каждой галеры будет 10 тумб для роллинга
**Варианты работы в этом случае:**
**1. если у нас тумбы готовы то импортируем в виде**
video_url|thumbs|user_thumbs
те thumbs - это тумбы которые будут в ротации и попадут в базу, user_thumbs - это тумбы которые будут только скачаны и сохранены на диск, но в базе их не будет.
в темплейте пишем
Тут надо обратить внимание на data-rolling-thumbs-folder='' куда скрипт подставит /thumb/user_thumbs/gallery_id/ конкретной галеры.
**2. если у нас тумбы нарезаются из видео**
Добавляем как video_url и включаем опцию Make screenshots. Скрипт скачивает видео, делает скриншоты (в количестве How Many Thumbs from each gallery ? ). Далее идем в Preload и видимо все тумбы нарезанные с данного видео. Отмечаем кликом тумбы, которые надо добавить в ротацию и чекбокс Add Unchecked as User Thumbs. Отмеченные тумбы будут добавлены в ротацию (в базу) , а так же все тумбы будут добавлены как User Thumbs, те просто сохранены на диск НО не добавлены в базу, и их можно будет использовать для роллинга тумб тем же скриптом как описано в пункте 1.
====== How it works ======
Как работает система темплейтов, для продвинутых пользователей.
страница модели /?model_slug=...&force_template=model_galleries
для некоторых страниц название темплейта указано по умолчанию, например
страница категории /?category_id=5
хотя темпелйт тут не указан,
будет использован темплейт content_list,
но можно указать и свой, например
/?category_id=5&force_template=mytpl
Таким образом можно формировать через реврайты любые урлы и любые темплейты.
Разбор темпелйта идет в 2 шага: сначала заменяются макросы скрипта (например ) а потом делается eval что б выполнить ваш пхп код в темплейте.
Тут надо обратить внимание на свой пхп код, что б в нем не оказалось дыр, например, представим что вы выодите какой-то параметр из строки урла и юзер в урле указал &var=123, в этом случае в темпелйте будет выведено именно 123. После этого мы сделаем eval() этой строки 123 и получим просто 123 те там пхп кода нет.
Теперь представим что юзер передал не 123, в &var= будет заменена на эту строку и eval уже выполнит этот код. Что б такого не было есть [[new_rotation_templates#tag_prefix]], например выведет "
/?
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
====== Content search and 404 ======
В настройках ротации есть опция "URLs with 0 result thumbs return 404 (content_not_found)". Допустим она включена.
Если пользователь ищет что-то на сайте и получает 0 результатов, то теоретически ему надо вернуть 404, однако на тот момент все хотели что бы было не 404, а странице на которой было бы написано "по вашему поиску ничего не найдено", поэтому на тот момент было прописано в скрипте что эта опция не работает на странице поиска (content_search)
Но если вдруг вам надо переписать такое поведение то надо использовать **zero_items_return_404=true** , например
...
====== SCJ_VISITOR ======
Специально для темплейтов на пхп вынесена глобальная переменная $GLOBALS['SCJ_VISITOR'] в которой есть данные текущего пользователя, этим можно пользоваться если надо в темплейте что-то менять в зависимости от спараметров серфера например
====== Page track ======
Можно проследить на какую страницу приходит траффик и какие есть переходы на сайте.
В Trade - Statistics - Page Track 2 колонки: Inbound Views (если реф не наш сайт) and Local Views (если реф - наш сайт)
Есть 2 варианта
1. &page_track=... в урле
2. в темплейте таг
Например