This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
ru:new_rotation_templates [2019/05/11 10:59] admin [Global Custom Vars] |
ru:new_rotation_templates [2024/02/25 17:00] (current) admin [Search log] |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== New Rotation Templates ====== | ||
+ | |||
+ | Темплейт – это обыкновенный html со специальными тагами, | ||
+ | |||
+ | В редактировании темплейтов есть поля cols & rows. Эти поля в принципе никак не вляют на ротацию и нужны только для удобства просмотра статистики ячеек в [[Cell Stats]]. | ||
+ | |||
+ | |||
+ | Имя темплейта никак не связано с тем какие таги там можно использовать, | ||
+ | |||
+ | |||
+ | Во всех темплейтах должен быть хоть 1 субтемплейт. Субтемплейт это то как будет выведена каждая тумба. Вот пример как он выглядит: | ||
+ | |||
+ | <a href="/ | ||
+ | < | ||
+ | |||
+ | Субтемплейтов может быть любое количество. Обратите внимание, | ||
+ | |||
+ | 1. Физически пути / | ||
+ | |||
+ | 2. В данном примере скрипт считает клики по параметру < | ||
+ | |||
+ | Места для вывода тумб в темплейте указываются следующим образом. | ||
+ | Например, | ||
+ | |||
+ | < | ||
+ | <thumb template=default num=1></ | ||
+ | если не указывать сабтемплейт то по умолчанию берет темплейт default те | ||
+ | <thumb template=default num=1></ | ||
+ | </ | ||
+ | |||
+ | Можно указывать пространства номеров например | ||
+ | |||
+ | <thumb num=1-5></ | ||
+ | |||
+ | выведет 5 первых тумб. | ||
+ | |||
+ | В самом таге можно указывать фильтры например базово например у нас есть темплейт index, по дефолту у него нет никаких фильтров и если написать | ||
+ | |||
+ | <thumb num=1-10></ | ||
+ | | ||
+ | то вы получите первые 10 по цтр тумб из всех категорий. | ||
+ | |||
+ | <thumb sponsor=Myspon num=1-10></ | ||
+ | или если есть пробел | ||
+ | <thumb sponsor=" | ||
+ | или просто с ИД <thumb sponsor_id=5 num=1-10></ | ||
+ | | ||
+ | Выведет первых 10 тумб соотв спонсора. Точно так же можно указывать группу (категорию) | ||
+ | |||
+ | <thumb category=Mycategory num=1-10></ | ||
+ | или просто с ИД <thumb category_id=5 num=1-10></ | ||
+ | так же можно исключить группы например | ||
+ | | ||
+ | |||
+ | Сортировку | ||
+ | |||
+ | <thumb order=date category=Mycategory num=1-10></ | ||
+ | |||
+ | и лимит контента | ||
+ | |||
+ | <thumb content_type=image num=1-10></ | ||
+ | | ||
+ | |||
+ | И конечно их можно совмещать, | ||
+ | |||
+ | <thumb category=Mycategory sponsor=mysponsor num=1-10></ | ||
+ | | ||
+ | Обратите внимание, | ||
+ | |||
+ | <thumb category=Mycategory sponsor=mysponsor num=1-10> | ||
+ | |||
+ | |||
+ | |||
+ | C этими фильтрами в тагах есть ньюанс: | ||
+ | |||
+ | по умолчанию в темпелйте стоит только | ||
+ | |||
+ | <thumb num=1-10></ | ||
+ | |||
+ | тк в запросе уже есть фильтр category_name то даже несмотря на то что в таге <thumb не указан фильтр по группе, | ||
+ | все равно выводятся тумбы из группы super_name (потому что этот фильтр уже есть в запросе). | ||
+ | |||
+ | Поэтому если вы напишете в темплейте | ||
+ | |||
+ | <thumb sponsor_id=5 num=1-10></ | ||
+ | |||
+ | то в этом таге выведет тумбы с 2ми фильтрами: | ||
+ | |||
+ | Если надо именно определенная группа, | ||
+ | |||
+ | <thumb sponsor_id=5 category=mycategory num=1-10></ | ||
+ | |||
+ | |||
+ | |||
+ | **Сабтемплеты** | ||
+ | Хотелось бы напомнить немного про темплейты: | ||
+ | |||
+ | <thumb sponsor_id=5 num=1-10></ | ||
+ | | ||
+ | будет выводить тумбы юзая сабтемплейт default, вы можете указать другой саб темпелйт | ||
+ | |||
+ | <thumb sponsor_id=5 num=1-10 template=my_tpl></ | ||
+ | | ||
+ | или вписав сабтемплейт прямов таге | ||
+ | |||
+ | <thumb sponsor_id=5 num=1-10> | ||
+ | | ||
+ | Если у вас нет сабтемпелйта | ||
+ | |||
+ | |||
+ | **Ограничение по длительности** | ||
+ | |||
+ | <thumb duration_min=10 duration_max=90 num=1-10> | ||
+ | |||
+ | что аналогично если в темплейте просто | ||
+ | |||
+ | <thumb num=1-10> | ||
+ | |||
+ | но урл domain/ | ||
+ | |||
+ | |||
+ | Обратите внимание что параметры везде можно передавать любым способом http:// | ||
+ | |||
+ | |||
+ | **Ограничение по ИД группы** | ||
+ | |||
+ | Добавлен параметр skip_category_id в УРЛ или таг <thumb ... > , смысл простой - не выводить тумбы из группых такой-то. | ||
+ | |||
+ | |||
+ | **Ограничение по спонсору** | ||
+ | |||
+ | <thumb sponsor_id=5 num=1-10> | ||
+ | <thumb sponsor=" | ||
+ | <thumb sponsor_slug=" | ||
+ | | ||
+ | |||
+ | |||
+ | Включение всех сайтов одного спонсора. В спонсорах есть 2 поля Sponsor name and Sponsor Site, те у одного спонсора - может быть несколько сайтов (в Rotation - Sponsor они комбинируются в меню). Можно вывести все сайты одного спонсора | ||
+ | |||
+ | <thumb sponsor_name=" | ||
+ | |||
+ | |||
+ | Исключение спонсоров | ||
+ | |||
+ | <thumb skip_sponsor_id =5 num=1-10> | ||
+ | <thumb skip_sponsor=" | ||
+ | |||
+ | |||
+ | |||
+ | **Ограничение по дате** | ||
+ | |||
+ | < | ||
+ | & | ||
+ | </ | ||
+ | |||
+ | соответственно выведет тумбы из данного временного промежутка. Можно использовать и только 1 парамтер начала и конца. | ||
+ | |||
+ | А так же несколько пресетов | ||
+ | < | ||
+ | & | ||
+ | </ | ||
+ | |||
+ | ** | ||
+ | И по продолжительности мувика (в секундах)** | ||
+ | |||
+ | < | ||
+ | & | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | **Общие таги для темплейтов** | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | **Повторяемость галер - allow_dupes** | ||
+ | |||
+ | Если у вас условно есть таг | ||
+ | <thumb num=1-10></ | ||
+ | |||
+ | и вы впишете где-то в темплейте <thumb num=1-5></ | ||
+ | |||
+ | Однако, | ||
+ | |||
+ | <thumb num=1-10 order=date></ | ||
+ | <thumb num=1-10 sponsor_id=5></ | ||
+ | |||
+ | и тп то при выборке для этого тага галеры, | ||
+ | |||
+ | Такое поведение можно избежать если добавить в таг <thumb allow_dupes=true num=1-10></ | ||
+ | |||
+ | **Num modifiers** | ||
+ | |||
+ | обычно номер задается в таге <thumb num=1-10 но в определенных ситуациях можно добавлять параметры, | ||
+ | |||
+ | |||
+ | **num_range_shift** - например <thumb num=1-10 num_range_shift=1-5 | ||
+ | |||
+ | |||
+ | |||
+ | **zero_items_return_404** | ||
+ | |||
+ | В настройках есть опция "URLs with 0 result thumbs return 404", те если таг вернул 0 галер на странице то редиректим на темплейт content_not_found. Но бывают случаи когда надо переписать это поведение для конкретной страницы: | ||
+ | |||
+ | <thumb num=1-10 zero_items_return_404=off ... | ||
+ | |||
+ | |||
+ | **skip_test_thumbs** | ||
+ | |||
+ | Бывает что по каким-то причинам в блоке не надо выводить тестовые тумбы, например у вас указано выводить тестовые на местах 10-15, а вы хотите вывести просто 15 тумб по цтр без тестовых | ||
+ | |||
+ | <thumb skip_test_thumbs=true num=1-15 | ||
+ | |||
+ | ===== Inline thumbs ===== | ||
+ | |||
+ | Полезный таг для нативной рекламы. | ||
+ | |||
+ | Например, | ||
+ | |||
+ | < | ||
+ | <thumb num=1-100> | ||
+ | </ | ||
+ | |||
+ | и мы хотим подмешать как рекламу спонсора. В обычном случае это выглядело бы как | ||
+ | |||
+ | < | ||
+ | <thumb num=1-50> | ||
+ | |||
+ | <a href=' | ||
+ | |||
+ | <thumb num=51-100> | ||
+ | |||
+ | </ | ||
+ | |||
+ | те нам надо руками указать где именно разрыв в настоящих тумбах и линк на спонсора. | ||
+ | |||
+ | |||
+ | в новым тагом сделать это намного удобнее | ||
+ | |||
+ | 1. создаем сабтемплейт например sponsor_thumbs | ||
+ | |||
+ | < | ||
+ | <a href=' | ||
+ | </ | ||
+ | |||
+ | 2. в странице прописываем как | ||
+ | |||
+ | < | ||
+ | <thumb num=1-100 **inline_thumbs=5 inline_thumbs_subtemplate=sponsor_thumbs**> | ||
+ | <a href='/ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | те из 100 тумб на рендомных местах будет выведено не <a href='/ | ||
+ | |||
+ | |||
+ | Обратите внимание, | ||
+ | |||
+ | |||
+ | |||
+ | **Inline** так же работает для моделейб спонсоров, | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Thumb status ===== | ||
+ | |||
+ | По умолчанию | ||
+ | |||
+ | |||
+ | ===== Thumb sort ===== | ||
+ | |||
+ | По дефолту тумбы сортируютс по ЦТР. Но вы можете сортировать в другом порядке: | ||
+ | |||
+ | < | ||
+ | date | ||
+ | date_asc | ||
+ | duration | ||
+ | rating | ||
+ | total_shows | ||
+ | gallery_id | ||
+ | no_order (как выдаст база так и выводит, | ||
+ | random , обратите внимание что random медленный на больших базах | ||
+ | easy_random - псевдо рендом, | ||
+ | comments_count - по кол-ву комментов | ||
+ | </ | ||
+ | |||
+ | Как уже было отмечено выше параметры из урла переходят в таг, если не указано обратного. | ||
+ | |||
+ | Те & | ||
+ | |||
+ | так же можно сортировать по кастом вар галер например | ||
+ | |||
+ | <thumb num=1-10 order=custom_var1 sort=desc (или asc) > | ||
+ | | ||
+ | но тут надо помнить что по умолчанию на этих полях нет индекса, | ||
+ | |||
+ | |||
+ | Так же можно ставить промежуток для кастом полей, добавляя слова from & to , например | ||
+ | |||
+ | <thumb num=1-10 custom_var1_from=10 custom_var_to=20 | ||
+ | | ||
+ | | ||
+ | Тут надо будет обратить внимание что цифры и буквы mysql может сортировать по-разному и для разных вариантов есть свои ньюансы. Поэтому если выборка будет работать не так как предполагаетеся, | ||
+ | |||
+ | ====== fixed_num ====== | ||
+ | |||
+ | Как было указано выше тумбы выводятся с учетом страницы, | ||
+ | |||
+ | Если надо вывести один и тот же сет тумб на всех страницах, | ||
+ | |||
+ | <thumb num=1-10 fixed_num=true | ||
+ | |||
+ | и на всех страницах будет выводить именно 1-10 | ||
+ | ===== Unset parameter ===== | ||
+ | |||
+ | В параметрах работает наследование: | ||
+ | |||
+ | <thumb num=1-10 | ||
+ | | ||
+ | |||
+ | но на странице категории выводит 10 тумб из категории, | ||
+ | |||
+ | <thumb num=1-10 category_id=.. (из урла) | ||
+ | | ||
+ | а например на странице модели тот же таг выводит тумбы модели тк получается | ||
+ | |||
+ | <thumb num=1-10 model_id=.. (из урла) | ||
+ | |||
+ | |||
+ | Это удобно, | ||
+ | |||
+ | |||
+ | <thumb num=1-10 order=easy_random | ||
+ | | ||
+ | |||
+ | то как было описано выше получится | ||
+ | |||
+ | <thumb num=1-10 order=easy_random category_id=... | ||
+ | |||
+ | поэтому именно для этого тага надо убрать параметр категории и он будет выглядеть как | ||
+ | |||
+ | <thumb num=1-10 order=easy_random category_id="" | ||
+ | |||
+ | те мы убрали параметр category_id который в таг попал бы из урла. | ||
+ | |||
+ | Еще пример: | ||
+ | |||
+ | <thumb num=1-10 | ||
+ | который по факту | ||
+ | | ||
+ | <thumb num=1-10 search=... (из урла) | ||
+ | | ||
+ | что бы вывести 10 рендомных на этой странице надо сделать | ||
+ | |||
+ | <thumb num=1-10 search="" | ||
+ | |||
+ | |||
+ | ===== GET parameters ===== | ||
+ | |||
+ | Иногда в самом таге надо выставить параметр в зависимостри от страницы. Обычно для этого используются переменные из УРЛа, которые по правильному называются GET переменными. Например, | ||
+ | |||
+ | <models first_letter=a | ||
+ | | ||
+ | выведет фиксированно моделей на букву А. но создавать темпелйт на каждую букву неудобно, | ||
+ | |||
+ | <models first_letter=GET_someletter | ||
+ | | ||
+ | что значит первую букву взять из переменной урла someletter например | ||
+ | |||
+ | /? | ||
+ | | ||
+ | | ||
+ | **Для тагов** есть есть небольшой ньюянс. Обычно в урле таг указывается как & | ||
+ | |||
+ | Иногда надо сделать уточнение для поиска, | ||
+ | |||
+ | Аналогично если наоборот, | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Cache parameter ===== | ||
+ | |||
+ | По умолчанию мы кешируем страницу сайта на время указанное в сеттингах (Cache time, seconds) по дефолту 600, это значит что страница сгенерится 1 раз и потом будет показываться в этом виде 600 секунд, | ||
+ | |||
+ | Далее можно регулировать кеширование для каждой страницы: | ||
+ | |||
+ | Но можно регулировать еще глубже - в таге например <thumb num=1-100 cache_time=100 - тут кашерование тага будет 100 секеунд. | ||
+ | |||
+ | Но есть еще один более глубокий параметр - count_total_cache_time | ||
+ | |||
+ | Смысл следующий: | ||
+ | |||
+ | Но есть момент гдеправильный подсчет важнее чем экономия - например для favorites темплейта: | ||
+ | |||
+ | Для этого мы можем сделать <thumb num=1-10 count_total_cache_time=1 | ||
+ | |||
+ | И этот запрос будет кешироваться на 1 секунду, | ||
+ | |||
+ | ===== Custom cache ===== | ||
+ | |||
+ | Note - это только для тех, кто понимает в пхп. | ||
+ | |||
+ | Может быть ситуация вы в темплейте выполняете какие-то действия на пхп и эти действия - тяжелые для процессора. В этом случае вы можете кешить свои результаты используя кеш скрипта, | ||
+ | |||
+ | < | ||
+ | if (false === ($cache_result = Cache:: | ||
+ | $cache_result | ||
+ | |||
+ | Cache:: | ||
+ | |||
+ | } | ||
+ | |||
+ | выводим $cache_result | ||
+ | |||
+ | </ | ||
+ | ===== Page main tag ===== | ||
+ | |||
+ | Проблема: | ||
+ | |||
+ | <thumb category=A num=1-10 | ||
+ | and | ||
+ | <thumb category=B num=1-10 | ||
+ | | ||
+ | Возникает проблема с навигацией, | ||
+ | |||
+ | Вторая проблема, | ||
+ | |||
+ | < | ||
+ | and | ||
+ | <thumb category=B num=1-10 | ||
+ | |||
+ | |||
+ | при этом search_log - пустой, | ||
+ | |||
+ | |||
+ | < | ||
+ | and | ||
+ | <thumb category=B num=1-10 page_main_tag=true | ||
+ | |||
+ | ===== do_not_count_shows ===== | ||
+ | |||
+ | Если по какой-то причине для каких-то тумб на странице не надо считать показы, | ||
+ | |||
+ | <thumb do_not_count_shows=true | ||
+ | | ||
+ | Обратите внимание что показ тумбы считается 1 раз. Например, | ||
+ | |||
+ | <meta ... <thumb num=1-10> | ||
+ | |||
+ | а позже в странице опять | ||
+ | <thumb num=1-10>< | ||
+ | |||
+ | несмотря на то что выведено 2 раза - будет посчитан только 1 показ. | ||
+ | |||
+ | |||
+ | Также это работает для системных тумб, например тумб категорий. Это надо например когда вы просто выводите лист категорий, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Mobile Templates ===== | ||
+ | |||
+ | Если вы хотите отдельный дизайн для мобильных устройств то любой темплейт может быть продублирован темплейтом с таким же именем, | ||
+ | Серфер мобильный пришел на индекс - ему покажет темпелейт mobile_index. | ||
+ | Далее он попал на галерею - ему покажет content_custom_pic, | ||
+ | |||
+ | |||
+ | **NOTE** Если по какой-то причине вы хотите дать возможность пользователю выключить этот функционал - есть параметр & | ||
+ | |||
+ | |||
+ | |||
+ | ===== Related Galleries | ||
+ | |||
+ | Для кастом галер есть возможно вывести тн related galleries, по дефолту это гадеры из той же категории, | ||
+ | |||
+ | < | ||
+ | |||
+ | Примеры | ||
+ | |||
+ | <thumb category=CURRENT_ITEM_GROUP num=1-5> | ||
+ | some template | ||
+ | </ | ||
+ | |||
+ | |||
+ | <thumb sponsor=CURRENT_ITEM_SPONSOR category="" | ||
+ | some template | ||
+ | </ | ||
+ | |||
+ | <thumb model=CURRENT_ITEM_MODEL category="" | ||
+ | some template | ||
+ | </ | ||
+ | |||
+ | |||
+ | <thumb tag=CURRENT_ITEM_TAG num=1-5> | ||
+ | some template | ||
+ | </ | ||
+ | |||
+ | <thumb tag=CURRENT_ITEM_TAGS_COMBINED num=1-5> | ||
+ | some template | ||
+ | </ | ||
+ | |||
+ | |||
+ | Эти варианты более комплексные (больше грузят базу) чем варианты выше | ||
+ | |||
+ | <thumb tag=CURRENT_ITEM_TAGS_INTERSECTION num=1-5> | ||
+ | выводим в порядке сортировки по кол-ву совпадающих тагов (условно если совпало 4 тага, это лучше чем когда совпало 3 тага) | ||
+ | </ | ||
+ | |||
+ | <thumb category=CURRENT_ITEM_GROUPS_INTERSECTION num=1-5> | ||
+ | выводим в порядке сортировки по кол-ву совпадающих групп | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | можно так же пропускать | ||
+ | |||
+ | <thumb num=1-10 skip_sponsor_id=THIS_ITEM_SPONSOR_ID> | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | Обратите внимание, | ||
+ | |||
+ | |||
+ | ====== Special Parameters ====== | ||
+ | |||
+ | ===== THIS_CATEGORY_BEST_THUMB_ID ===== | ||
+ | |||
+ | <thumb first_thumb_id=THIS_CATEGORY_BEST_THUMB_ID order=ctr num=1-10> | ||
+ | | ||
+ | | ||
+ | По умолчанию тумба категории - это лучшая тумба в категории. Но например, | ||
+ | |||
+ | Тестовый параметр, | ||
+ | |||
+ | ====== Subtemplate tags ====== | ||
+ | |||
+ | Таки которые можно использовать в сабтемпелйтах | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | | ||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | | ||
+ | < | ||
+ | | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | | ||
+ | < | ||
+ | | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | | ||
+ | < | ||
+ | | ||
+ | | ||
+ | < | ||
+ | | ||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | </ | ||
+ | |||
+ | Подробнее про видеопревью - [[ru: | ||
+ | |||
+ | | ||
+ | Например, | ||
+ | |||
+ | |||
+ | **Вывод переменных категорий** | ||
+ | |||
+ | |||
+ | Например, | ||
+ | |||
+ | |||
+ | |||
+ | **Небольшой уточнение про параметр THUMB_LINK.** | ||
+ | |||
+ | Смысл следующий: | ||
+ | |||
+ | Потом появилась ротация - и этот параметр стали использовать для ротации в виде images/ | ||
+ | |||
+ | Потом появились реврайты и галинки начали выглядеть как / | ||
+ | |||
+ | Итого урл вида / | ||
+ | |||
+ | Из-за того что исторически сложилось так, что ротация использует параметр линктрекинга &link= стало невозможно ставить трекнг на тумбы , если юзается ротация. Те в урле out.php? | ||
+ | |||
+ | |||
+ | ===== category_list separator | ||
+ | |||
+ | Для тагов < | ||
+ | |||
+ | < | ||
+ | Смысл проблемы в том что если вы выводили например группы как | ||
+ | |||
+ | < | ||
+ | |||
+ | то могли получить что то вроде " | ||
+ | |||
+ | и вот эта последняя запятая портила вид. | ||
+ | |||
+ | Теперь можно сделать | ||
+ | |||
+ | < | ||
+ | |||
+ | и выведет без нее " | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== category_list ===== | ||
+ | |||
+ | Представим, | ||
+ | |||
+ | Получается, | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | <thumb num=1-5 order=ctr category_id=1> | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | в этом случае < | ||
+ | |||
+ | В случае если по каким-то причинам мы хотим вывести только подкатегории надо указать | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | ===== tag_list ===== | ||
+ | |||
+ | В темплейтах есть возможноть вывести циклом все таги галеры < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | дополнительные параметры | ||
+ | |||
+ | order=alphabet, | ||
+ | search=" | ||
+ | separator="," | ||
+ | tag_status=wait \ active | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | **Tag languages** | ||
+ | |||
+ | Если у вас несколько языков, | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | обычно таги линкуются на страницу в листингом галер по этому тагу например | ||
+ | |||
+ | < | ||
+ | <a href='/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ясно что в этом случае в урле таг будет написан на немецком. В случае если вы хотите что бы в линках был основной язык (условно английский) | ||
+ | |||
+ | < | ||
+ | <a href='/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== Language Modifiers ====== | ||
+ | |||
+ | Если у вас насколько языков на сайте, то к любым данным на другом языке можно обратиться если добавить в конце тага ::LNG, например на странице /de | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ===== Comments ===== | ||
+ | |||
+ | На странице галереи можно вывести комменты к ней | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | И пагинация комментов | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | ====== Page tags ====== | ||
+ | |||
+ | Для каждой страницы есть ряд собственных тагов. | ||
+ | |||
+ | |||
+ | **Актуальные для всех** | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | **Для страницы категории** | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | **Для страницы модели** | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | |||
+ | </ | ||
+ | |||
+ | **Для поиска** | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | **Страница спонсора** | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | **Для кастом галерей** | ||
+ | |||
+ | Базово для каждой кастом гали доступны все теже таги, что и в сабе. Те если у нас есть тумба 1 с деском "super pic" который в сабе выводится тагом < | ||
+ | |||
+ | Это же относится и к тагам по спонсору, | ||
+ | |||
+ | Но есть несколько тагов, которые актуальны именно для страниц кастом галер. | ||
+ | |||
+ | **Для эмбед галер та же актуально** | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | **Для flv галер актуально** | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | **Для picture\movie galleries** | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | Можно лимитировать по типу контента | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | | ||
+ | < | ||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | Поддерживается старый вариант вывода контента, | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | | ||
+ | IMG_2_ IMG_3... и тд | ||
+ | | ||
+ | Обратите внимание, | ||
+ | Для первой пикчи будет < | ||
+ | Для первого мувика будет < | ||
+ | Для первого флеш мувика будет < | ||
+ | | ||
+ | а так же < | ||
+ | | ||
+ | И общие переменные для кастом гали | ||
+ | | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | | ||
+ | |||
+ | | ||
+ | а так же пример проверки наличия картинки | ||
+ | |||
+ | <? if ('< | ||
+ | <a href='< | ||
+ | <? } ?> | ||
+ | |||
+ | |||
+ | Для комментов | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | Для single_page_item | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | |||
+ | </ | ||
+ | | ||
+ | |||
+ | ====== Tag prefix ====== | ||
+ | |||
+ | Для стандартных модификаций переменных существуют префиксы. Например, | ||
+ | |||
+ | < | ||
+ | <?php ucfirst('< | ||
+ | </ | ||
+ | |||
+ | Если в опиании окажется ковычка то такой код в вашем темплейте выдаст ошибку. Например описание " | ||
+ | | ||
+ | <?php ucfirst(' | ||
+ | | ||
+ | как не сложно заметить тут возникает проблема с ковычками. Что бы этого избежать надо использовать префиксы например | ||
+ | |||
+ | <?php ucfirst('< | ||
+ | |||
+ | Те выглядит это как замена тага обычного на таг с префиксом | ||
+ | |||
+ | Например, | ||
+ | | ||
+ | <?php ucfirst(' | ||
+ | | ||
+ | который будет выполнен без ошибок. | ||
+ | | ||
+ | |||
+ | На данный момент существуют следующие префиксы: | ||
+ | |||
+ | **1. Экранирование ковычек** | ||
+ | |||
+ | Например, | ||
+ | |||
+ | **2. HTMLENTITY для | ||
+ | |||
+ | < | ||
+ | '&' | ||
+ | '"' | ||
+ | ''' | ||
+ | '<' | ||
+ | '>' | ||
+ | |||
+ | |||
+ | Например, | ||
+ | </ | ||
+ | |||
+ | **3. URLENCODE для спецсимволов в урлах, например пробел на + и тп ** | ||
+ | |||
+ | < | ||
+ | Например, | ||
+ | </ | ||
+ | |||
+ | Фактически http:// | ||
+ | |||
+ | **4. RAWURLENCODE для спецсимволов в урлах, например пробел на %20 и тп ** | ||
+ | |||
+ | < | ||
+ | Например, | ||
+ | </ | ||
+ | |||
+ | Фактчиески http:// | ||
+ | |||
+ | А так же < | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | **5. STRIP_SPECIAL_CHARS_ для удаления всех спецсимволов !$@ и тп ** | ||
+ | |||
+ | В данный момент replace выглядит как trim(preg_replace(' | ||
+ | |||
+ | |||
+ | Например < | ||
+ | | ||
+ | **6. URLSAFE_ ** | ||
+ | |||
+ | заменяет пробелы и прочее на тире для красоты урла | ||
+ | |||
+ | ** More ** | ||
+ | |||
+ | UPPERCASE_ - все большими буквами | ||
+ | |||
+ | UCFIRST_ первая буква каждого слова - большая | ||
+ | |||
+ | CUT20_ - обрезать оставив только первые 20 символов | ||
+ | |||
+ | WORDCUT20_ - обрезать оставив только первые 20 символов с учетом окончания слов, те не обрезать слово на половине | ||
+ | ====== Tag prefix - why important ====== | ||
+ | |||
+ | Как вы вероятно знаете, | ||
+ | |||
+ | меняем < | ||
+ | | ||
+ | Однако тут есть нюанс: если в деске окажется кавычка, | ||
+ | |||
+ | < | ||
+ | Пример, | ||
+ | |||
+ | <?php echo strtoupper('< | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | **Пример с SEARCH_QUERY** | ||
+ | |||
+ | Юзер ищет /? | ||
+ | |||
+ | |||
+ | У вас например | ||
+ | |||
+ | Search was <? | ||
+ | | ||
+ | получается код | ||
+ | |||
+ | Search was <? | ||
+ | | ||
+ | который падает с ошибкой | ||
+ | |||
+ | |||
+ | еще хуже если в урл предается | ||
+ | |||
+ | /? | ||
+ | |||
+ | |||
+ | и он выполняется у вас в темплейте. | ||
+ | |||
+ | Поэтому очень важно весь пользовательский ввод эскейпить | ||
+ | |||
+ | |||
+ | Search was <? | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | |||
+ | ====== Pagination ====== | ||
+ | |||
+ | Поскольку тумб много обычно, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | * skip_href_deletion=true по дефолту скрипт удаляет a href с текущей страницы, | ||
+ | * active_link_style=act_pg и link_style=not_act_page проставляет соответствующие стили для активной и неактивной страницы | ||
+ | * max_pages ограничить макс кол-во страниц. Полезно если у вас очень большая база, реальные люди все равно в самый конец не ходят. | ||
+ | |||
+ | |||
+ | < | ||
+ | Например , наш код навигации такой: | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | условно мы сейчас на 2й странице, | ||
+ | |||
+ | скрипт выведет: | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | |||
+ | |||
+ | |||
+ | без skip_href_deletion=true | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | еще примеры: | ||
+ | |||
+ | 1. явное задание атрибута style html-тэгам | ||
+ | |||
+ | условно мы сейчас на 2й странице, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | скрипт выведет: | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | 2. установка значений data-атрибутов в зависимости от текущей страницы: | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <li data-page-ptr="< | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | для запроса ?page=**2** сформирует html-разметку вида: | ||
+ | |||
+ | < | ||
+ | <li data-page-ptr=" | ||
+ | <li data-page-ptr=" | ||
+ | <li data-page-ptr=" | ||
+ | </ | ||
+ | |||
+ | 3. задание отдельного css-класса для текущей страницы: | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | <li class=" | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | для запроса ?page=**3** сформирует html-разметку вида: | ||
+ | < | ||
+ | |||
+ | <li class=" | ||
+ | <li class=" | ||
+ | <li class=" | ||
+ | </ | ||
+ | |||
+ | 4. задание отдельного css-класса для текущей страницы с заменой тэга: | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | <li class=" | ||
+ | <?php if ('< | ||
+ | <?php else : ?><a href="/? | ||
+ | </li> | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | для запроса ?page=**2** сформирует html-разметку вида: | ||
+ | < | ||
+ | |||
+ | <li class=" | ||
+ | <li class=" | ||
+ | <li class=" | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | **List all the pages** | ||
+ | |||
+ | Если надо вывести все страницы пагинации | ||
+ | |||
+ | < | ||
+ | | ||
+ | те мы выведем не 1 2 3 ... 70 71, а именно весь лист 1 2 3 4 5 6 7 и тд до конца | ||
+ | | ||
+ | |||
+ | |||
+ | |||
+ | **Так же есть вариант с Prev Next** | ||
+ | если вы не истользуете < | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Обратите внимание, | ||
+ | |||
+ | Для тумб категорий, | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | </ | ||
+ | |||
+ | добавляем линки | ||
+ | |||
+ | <a href=" | ||
+ | <a href=" | ||
+ | |||
+ | и тп | ||
+ | |||
+ | думаю не сложно вычислить сколько вам надо линков в зависимости от кол-ва категорий у вас. | ||
+ | И получается навигация для категорий. | ||
+ | ====== Category Thumbs ====== | ||
+ | |||
+ | Cкрипт автоматически создает тумбы категорий, | ||
+ | |||
+ | Для вывода списка категорий | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | Параметры: | ||
+ | * num какие номера выводить (в данном примере с 1й по 5ю из списка). | ||
+ | * min_gallery_count лимит по кол-ву галер в категории | ||
+ | * set - выбор сета тумб категорий, | ||
+ | * 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, | ||
+ | * sort_order - относительно sort_field (asc, desc) | ||
+ | * order - сортировка списка категорий по алфавиту (alphabet), по популярности (clicks), кол-ву галер (total_items) , случайно (random) | ||
+ | Технически можно сортировать по любому полю из массива кажой категории, | ||
+ | category_custom_name, | ||
+ | * parent_id = ID родительской группы | ||
+ | * name=" | ||
+ | * category_id= ИД категории | ||
+ | |||
+ | Доп таги для списка категорий: | ||
+ | |||
+ | * < | ||
+ | |||
+ | |||
+ | ===== Category Pagination ===== | ||
+ | |||
+ | По умолчанию если мы выводим категории, | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | то надо вывести 20 первых категорий, | ||
+ | |||
+ | Для этого сам таг категорий выводится как | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | И к этому можно добавить пагинацию именно для тумб категорий | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | | ||
+ | | ||
+ | Предыдущая и следующая страницы | ||
+ | | ||
+ | < | ||
+ | |||
+ | < | ||
+ | prev = < | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | Next = < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | Тут везде надо обратить внимание что таги практически одинаковые, | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | Next = < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | выведет next на 4й старнице, | ||
+ | |||
+ | < | ||
+ | Next = < | ||
+ | </ | ||
+ | |||
+ | то на 4й странице не будет next. | ||
+ | ====== adjust_num_to_page ====== | ||
+ | |||
+ | По умолчанию тумбы категорий и моделей выводятся без учета &page= в урле , например у вас темплейт index | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | <thumb num=1-10 | ||
+ | |||
+ | </ | ||
+ | |||
+ | то на первой странице выведет первые 10 категорий и первые 10 тумб. | ||
+ | |||
+ | Но бывают варианты, | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | | ||
+ | в этом случае на 2й странице выведет категории 11-20 | ||
+ | |||
+ | |||
+ | |||
+ | ====== Language list ====== | ||
+ | |||
+ | Перечислить доступные переводы можно тагом | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | </ | ||
+ | ====== Include template ====== | ||
+ | |||
+ | |||
+ | Можно подключать любой темплейт, | ||
+ | |||
+ | < | ||
+ | | ||
+ | Аналогично, | ||
+ | |||
+ | |||
+ | ====== INCLUDE_FILE ====== | ||
+ | |||
+ | Часто в темплейтах есть иинклуды внешних файлов, | ||
+ | |||
+ | Это можно делать через | ||
+ | |||
+ | < | ||
+ | |||
+ | это практически аналог | ||
+ | |||
+ | <? include('/ | ||
+ | | ||
+ | Разница в том, что в первом варианте файл инклудится 1 раз и кладется в кеш. Во 2м варианте файл инклудится каждый раз при загрузке страницы. В принципе, | ||
+ | |||
+ | |||
+ | Если файл на удаленном серваке то надо делать так: | ||
+ | |||
+ | < | ||
+ | | ||
+ | |||
+ | **НЕЛЬЗЯ** делать так | ||
+ | | ||
+ | <? include(' | ||
+ | |||
+ | |||
+ | |||
+ | Для удобства переноса темплейтов между доменами можно пользоваться вариантом | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | где BASE_DIR берется из common.php и соответственно свой для каждого домена. | ||
+ | ====== Tag Cloud ====== | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <a href="/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | Так же можно лимитировать кол-во тагов | ||
+ | |||
+ | < | ||
+ | <a href="/ | ||
+ | </ | ||
+ | |||
+ | и сортировать по кол-ву галер в таге | ||
+ | |||
+ | < | ||
+ | <a href="/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | Другие параметры тага < | ||
+ | < | ||
+ | |||
+ | gallery_count_min - минимальное кол-во галер для вывода | ||
+ | first_letter - таг начинается с этой буквы | ||
+ | filter - таг содержит это слово | ||
+ | status=all по умолчанию < | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Вывод лучшей тумбы по данному тагу | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | По дефолту выбор лучшей тумбы для каждого тага выключен тк это в определенной мере нагружает сервак. Настройки находятся в Rotation - Tube - Settings. | ||
+ | |||
+ | |||
+ | |||
+ | ====== Model List ====== | ||
+ | |||
+ | Можно вывести всех доступных моделей | ||
+ | |||
+ | < | ||
+ | |||
+ | <models num=1-10> | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | доступные параметры для тага моделей | ||
+ | |||
+ | <models first_letter=a> | ||
+ | <models min_gallery_count=20> | ||
+ | <models order=count_galleries> | ||
+ | <models order=model_ctr> | ||
+ | <models order=ctr >- цтр тумб | ||
+ | <models order=random > | ||
+ | <models model_has_photos=true > вывод только тех моделей у которых есть фото (загруженное мануально) | ||
+ | <models model_has_thumb=true > вывод только тех моделей у которых есть | ||
+ | выбранная автоматически тумба модели (выбирается в Rotation Settings - model thumbs) | ||
+ | <models model_custom_var1=" | ||
+ | <models model_custom_var1=not_empty > вывод тех у кого в кастомвар не пустая | ||
+ | |||
+ | <models model_name=" | ||
+ | <models model_id=" | ||
+ | |||
+ | skip_model_id - пропустить ид, через запятую перечисление если надо пропустить несколько ид | ||
+ | |||
+ | </ | ||
+ | |||
+ | Так же как и для тагов для каждой модели скрипт может автоматически выбрать лучшую тумбу (включается в Rotation - Settings - System Thumbs) , а вы ее можете вывести потом в цикле | ||
+ | |||
+ | < | ||
+ | <models num=1-10> | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Пример реврайта для моделей | ||
+ | |||
+ | < | ||
+ | RewriteCond %{QUERY_STRING} ^(.+)$ | ||
+ | RewriteRule ^model/ | ||
+ | RewriteRule ^model/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | Выводим тумбы моделей (gallery_count_min=1 добавлено дабы выводить только тех моделей для которых могло создать тумбу модели, | ||
+ | |||
+ | < | ||
+ | |||
+ | <models num=1-10 gallery_count_min=1 order=ctr> | ||
+ | <a href='/ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | У моделей могут быть свои фото, это именно фото модели а не тумбы галер, где есть это модель, | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <br> | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Можно добавить пагинацию для моделей | ||
+ | |||
+ | < | ||
+ | <models num=1-12 type=pagination> | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | ====== Sponsors List ====== | ||
+ | |||
+ | Можно так же вывести список спонсоров. | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | Параметры | ||
+ | |||
+ | order= alphabet, ctr, sponsor_name, | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Sponsor URLS ===== | ||
+ | |||
+ | В rotation - sponsors каждому спонсору можно добавить несоклько урлов: site_url, trial_url и join_url. | ||
+ | |||
+ | На самой галерее можно соответствующими тагами вывести эти урлы, НО тогда серфер будет видеть урл на спонсора вместе с вашей реф линкой, | ||
+ | |||
+ | Можно доабвить в реврайты | ||
+ | |||
+ | < | ||
+ | RewriteRule ^go/ | ||
+ | |||
+ | и использовать урлы | ||
+ | http:// | ||
+ | http:// | ||
+ | |||
+ | что бы посылать на другие урлы спонсора. | ||
+ | </ | ||
+ | |||
+ | ====== Search log ====== | ||
+ | |||
+ | Если у вас на сайте есть форма поиска (domain/? | ||
+ | |||
+ | Но можно так же вывести лог этих запросов на любой странице, | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | Обратите внимание, | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | order=hits - может так же быть alphabet, date, если не указано сортируем по кол-ву хитов. | ||
+ | |||
+ | sort=ASC | ||
+ | |||
+ | 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: < | ||
+ | и тп данные галеры, | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | Можно указать не сохранять в лог поисковые запросы | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | < | ||
+ | по этому запросу | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ====== Syntactic Sugar ====== | ||
+ | |||
+ | Для удобства в макросах можно пользоваться " | ||
+ | |||
+ | < | ||
+ | |||
+ | такой синтаксический сахар действует во всех тагах | ||
+ | |||
+ | на данный момент добавлено | ||
+ | |||
+ | CURRENT_CATEGORY_NAME | ||
+ | CURRENT_TAG_NAME | ||
+ | |||
+ | |||
+ | Планируется добавить все данные, | ||
+ | |||
+ | ===== Search log pagination===== | ||
+ | |||
+ | Решается добавлением type=pagination в таг | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | обратите внимание что таг пагинации должен быть такой же как и " | ||
+ | |||
+ | < | ||
+ | | ||
+ | значит и пагинация должна быть | ||
+ | |||
+ | < | ||
+ | | ||
+ | таким образом можно сделать например 2 тага < | ||
+ | ===== Search log filter ===== | ||
+ | |||
+ | Так же можно выводить лог поисковых запросов, | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | можно его отфильтровать с учетом текущего поиска Например, | ||
+ | |||
+ | < | ||
+ | вывод тумб результатов поиска | ||
+ | <thumb num=1-10> | ||
+ | |||
+ | и вывод поисковых запросов | ||
+ | |||
+ | < | ||
+ | |||
+ | где GET_search - это параметр search из GET (те урла) | ||
+ | |||
+ | </ | ||
+ | |||
+ | **Ньюанс фильтрации** | ||
+ | |||
+ | По умолчанию mysql ищет как полное слово, например искали "test car" оно будет фильтровать по полному вхождению. Те в данном случае если в поисковых запросах будет "test bus" то этот запрос не выведет. | ||
+ | |||
+ | Если у вас mysql версия 5.6 и выше то поле автоматически конвертируется в полнотекстовый поиск (mysql fulltext search) и в этом случае вам ничего не надо делать, | ||
+ | |||
+ | Но если у вас mysql до 5.6 ЛИБО кол-во поисковых запросов очень велико (100к+), то вам надо использовать sphinx для поиска. Индексируем поисковые запросы (см Sphinx статью в вики) и прописываем Sphinx Search Log Index в сетингах. | ||
+ | ===== Search query limit ===== | ||
+ | |||
+ | На сайте может быть масса вариантов лимитирования поиска, | ||
+ | |||
+ | /? | ||
+ | может превратиться в | ||
+ | /? | ||
+ | или | ||
+ | /? | ||
+ | | ||
+ | и так далее, варианты могут быть разными и комбинированными, | ||
+ | |||
+ | Например, | ||
+ | Добавляем в урл search_query_limit=teen, | ||
+ | |||
+ | при выводе < | ||
+ | |||
+ | < | ||
+ | | ||
+ | Можно подставлять & | ||
+ | |||
+ | < | ||
+ | | ||
+ | **Языковой поиск** | ||
+ | Аналогично можно сделать разделение поиска по языкам что бы выводить на соответствующих языках. Скрипт сам не определяет на каком языке написано конкретное предложение, | ||
+ | |||
+ | |||
+ | domain/? | ||
+ | domain/? | ||
+ | domain/? | ||
+ | domain/? | ||
+ | |||
+ | |||
+ | Таким образом у нас у базе для каждого поиска будет отмечено на каком языке он сделан. Добавлять параметр не составляет труда прямо в темплейте, | ||
+ | |||
+ | В темплейте добавляем | ||
+ | |||
+ | < | ||
+ | | ||
+ | и открываем страницу как domain/? | ||
+ | |||
+ | test,test1 | ||
+ | |||
+ | |||
+ | тк на них стоит пометка | ||
+ | |||
+ | |||
+ | Обратите внимание, | ||
+ | ====== Toplist ====== | ||
+ | |||
+ | Привычная схема для многих - топлист трейдеров в отдельном файле и инклудится в темплейт. Лучше пропустить момент с созданием отдельного файла и добавлять топ трейдеров прямо в темплейт, | ||
+ | |||
+ | < | ||
+ | <thumb num=1-3></ | ||
+ | тумба трейдера | ||
+ | <thumb num=3-6></ | ||
+ | еще 2 тумбы трейдеров и тд | ||
+ | </ | ||
+ | |||
+ | таким образом можно не делать выделенный топлист и даже поставить ским 100. | ||
+ | |||
+ | Проблема была в том, что для того, что б вывести 1 или 2 тумбы трейдеров надо было делать большое кол-во темплейтов топа и потом их инклудить в нужном месте темпелйта. Сейчас трейдеров можно выводить прямо в темплейте в нужном кол-ве. | ||
+ | |||
+ | < | ||
+ | <thumb num=1-3></ | ||
+ | |||
+ | <trader num=1> < | ||
+ | |||
+ | <thumb num=3-6></ | ||
+ | |||
+ | <trader num=2-3> < | ||
+ | </ | ||
+ | |||
+ | |||
+ | Можно указать рендомное кол-во тумб, например | ||
+ | < | ||
+ | <trader num=random random_start=1 random_end=10 random_items=3 | ||
+ | </ | ||
+ | |||
+ | выведет 3 трейдера от которые где-то на позиции между 1 и 10 | ||
+ | |||
+ | |||
+ | |||
+ | Итого внутри тага <trader можно использовать | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | с отдельными описаниями для групп есть небольшой ньанс. Например у нас трейдер А находится в группе 1. | ||
+ | Обычное описание у трейдера " | ||
+ | |||
+ | макрос | ||
+ | |||
+ | <trader num=1-10> | ||
+ | | ||
+ | выводит всех трейдеров и в том числе трейдера А. Тк тут не указана группа то < | ||
+ | |||
+ | | ||
+ | <trader group=new num=1-10> | ||
+ | |||
+ | то < | ||
+ | |||
+ | |||
+ | |||
+ | Возможные параметры для тага | ||
+ | |||
+ | < | ||
+ | <trader num=1 .... > | ||
+ | num = номер трейдера, | ||
+ | |||
+ | order = сортировка, | ||
+ | |||
+ | group= группа трейдеров | ||
+ | |||
+ | skip_group= пропустить группу | ||
+ | |||
+ | unique_hits_limit=2-100 - ограниение по кол-ву хитов трейдеров | ||
+ | |||
+ | </ | ||
+ | |||
+ | Вариант сортировки priority нас интерисует в первую очередь для трейда, | ||
+ | |||
+ | |||
+ | **Blocked countries** | ||
+ | |||
+ | Если у вас блокируются какие-то страны для трейдера ( условно | ||
+ | |||
+ | <trader num=1-20 **skip_blocked_countries=true**> | ||
+ | |||
+ | |||
+ | Это немного увеличивает нагрузку тк для каждого хита надо проверять что выводить, | ||
+ | |||
+ | **Тумбы трейдера** | ||
+ | |||
+ | По умолчанию тумбы трейдера создаются в scj/top/tt (можно поменять в сетингах) в виде trader.com.jpg. Фактически вам даже < | ||
+ | < | ||
+ | |||
+ | Если вы указали перс урлы трейдера по категориям, | ||
+ | |||
+ | ===== Trader CRC ===== | ||
+ | |||
+ | Вариант спрятать домен в линке, например | ||
+ | |||
+ | < | ||
+ | |||
+ | <trader num=1-2> | ||
+ | <a href=" | ||
+ | </ | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | те в линке домена не будет видно | ||
+ | ====== Default templates ====== | ||
+ | |||
+ | По дефолту в скрипте есть предустановленные шаблоны. В большинстве случаев их названия и описания ясны. | ||
+ | Эти шаблоны не удаляются из админки. дабы не удалить чего нечаянно. | ||
+ | |||
+ | content_single_item - это темпелйт для вывода большой картинки с пиксовой гали на отдельной странице. | ||
+ | |||
+ | ====== Custom Templates ====== | ||
+ | |||
+ | Вы можете добавить неограниченное кол-во своих темплейтов и вызывать их используя ? | ||
+ | |||
+ | Например, | ||
+ | Для начала создаем шаблон trd_personal и в нем создаем шаблон конкретно для этого трейдера. | ||
+ | |||
+ | Вот несколько вариантов, | ||
+ | |||
+ | **1.** трейдер может слать на урл http:// | ||
+ | |||
+ | **2.** вы можете создать файл your_domain.com/ | ||
+ | |||
+ | < | ||
+ | <?php | ||
+ | $_GET[' | ||
+ | include(' | ||
+ | </ | ||
+ | |||
+ | и прописать трейдеру этот t.php как персональную страницу. | ||
+ | |||
+ | **3.** в your_domain.com/ | ||
+ | |||
+ | < | ||
+ | после | ||
+ | <?php | ||
+ | добавить | ||
+ | |||
+ | if (strstr($_SERVER[' | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== Custom gallery - antibot question ====== | ||
+ | |||
+ | По дефолту для защиты комментов от спама на кастом галерах используется капча. Теперь есть вариант номер два - < | ||
+ | |||
+ | В этом опредленно есть смысл, так на форуме smartcj.com было много спама, потому что стандартную капчу давно уже разбирают автоматически. Разобрать автоматически вопрос намного сложнее. Результат - 99% спама пропало. | ||
+ | |||
+ | ====== Tag Processing ====== | ||
+ | |||
+ | Сначала обрабатываются таги, потом выполняется пхп. Например, | ||
+ | |||
+ | <thumb num=1-5> | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | это значит что сначала это буде разложено в | ||
+ | |||
+ | < | ||
+ | slug1 <?php $count++; ?> | ||
+ | slug2 <?php $count++; ?> | ||
+ | slug3 <?php $count++; ?> | ||
+ | slug4 <?php $count++; ?> | ||
+ | slug5 <?php $count++; ?> | ||
+ | </ | ||
+ | |||
+ | и потом выполнен пхп. | ||
+ | |||
+ | Это так же значит что нельзя всунуть пхп в сам таг, например | ||
+ | |||
+ | <thumb num=$my_var> | ||
+ | |||
+ | потому что, опять же, сначала таги, потом пхп. | ||
+ | |||
+ | Данные в таг передаются например из урла GET_ или predefined vars например CURRECT_ITEM_... | ||
+ | ====== Global Custom Vars ====== | ||
+ | |||
+ | Удобно иметь глобальные замены для всех темплейтов, | ||
+ | |||
+ | Так же кастом переменная может быть с переводом для каждого языка. | ||
+ | |||
+ | Например, | ||
+ | |||
+ | Можно быстро перевести с основного языка на дополнительный. Для этого в **Translation [+]** отмечаем галочками какие переменные надо перевести и указываем чем переводить например | ||
+ | |||
+ | < | ||
+ | |||
+ | external:: | ||
+ | |||
+ | |||
+ | дефолтный вариант - google translate | ||
+ | |||
+ | Тут надо обратить внимание на | ||
+ | |||
+ | & | ||
+ | api_key - ключ АПИ с гугла | ||
+ | |||
+ | |||
+ | Вы можете заменить гугл на любой свой вариант перевода. | ||
+ | В процессе перевода скрипт будет менять {MAIN_VALUE} на актуальный текст | ||
+ | и {TRANSLATION_LNG} на называние языка на который нужен перевод, | ||
+ | |||
+ | |||
+ | </ | ||
+ | ====== Developer mode ====== | ||
+ | |||
+ | Темплейты находят в базе, но для некоторых удобнее редактировать темплейты через фтп, а не через админку. Для этого случая есть Developer Mode - вы можете залить темплейт в scj/ | ||
+ | |||
+ | После того как все темплейты настроены имеет смысл ее отключить дабы скрипт не делал лишних проверок = экономия ресурсов сервера. | ||
+ | |||
+ | |||
+ | |||
+ | ====== User Thumbs ====== | ||
+ | |||
+ | Часто большое количество тумб с одного видео надо не для ротации (и выбора лучшей тумбы), | ||
+ | |||
+ | Например, | ||
+ | |||
+ | **Варианты работы в этом случае: | ||
+ | |||
+ | **1. если у нас тумбы готовы то импортируем в виде** | ||
+ | |||
+ | video_url|thumbs|user_thumbs | ||
+ | | ||
+ | те thumbs - это тумбы которые будут в ротации и попадут в базу, user_thumbs - это тумбы которые будут только скачаны и сохранены на диск, но в базе их не будет. | ||
+ | |||
+ | |||
+ | в темплейте пишем | ||
+ | |||
+ | < | ||
+ | <script src="// | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | var amount_of_rolling_thumbs = 10; | ||
+ | |||
+ | $(document).ready(function() { | ||
+ | |||
+ | $(" | ||
+ | $(this).attr(' | ||
+ | StartSlide($(this)); | ||
+ | }).mouseleave(function() { | ||
+ | $(this).attr(' | ||
+ | if ($(this).attr(' | ||
+ | }); | ||
+ | |||
+ | }); | ||
+ | |||
+ | |||
+ | function StartSlide(thumb) { | ||
+ | |||
+ | if (!thumb.attr(' | ||
+ | |||
+ | if (!thumb.attr(' | ||
+ | |||
+ | var cur = parseInt(thumb.attr(' | ||
+ | |||
+ | cur = (!cur || cur == 0) ? 1 : (cur+1); | ||
+ | |||
+ | if (cur > amount_of_rolling_thumbs) cur = 1; | ||
+ | |||
+ | thumb.attr(' | ||
+ | |||
+ | var preload = new Image(); | ||
+ | preload.src = thumb.attr(' | ||
+ | |||
+ | if (thumb.attr(' | ||
+ | |||
+ | } | ||
+ | |||
+ | function ChangeSRC(id, | ||
+ | if (!$('#' | ||
+ | $('#' | ||
+ | StartSlide($('#' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | <thumb num=1-10> | ||
+ | |||
+ | <a href='/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Тут надо обратить внимание на data-rolling-thumbs-folder='< | ||
+ | |||
+ | |||
+ | |||
+ | **2. если у нас тумбы нарезаются из видео** | ||
+ | |||
+ | |||
+ | Добавляем как video_url и включаем опцию Make screenshots. Скрипт скачивает видео, делает скриншоты (в количестве How Many Thumbs from each gallery ? ). Далее идем в Preload и видимо все тумбы нарезанные с данного видео. Отмечаем кликом тумбы, которые надо добавить в ротацию и чекбокс Add Unchecked as User Thumbs. Отмеченные тумбы будут добавлены в ротацию (в базу) , а так же все тумбы будут добавлены как User Thumbs, те просто сохранены на диск НО не добавлены в базу, и их можно будет использовать для роллинга тумб тем же скриптом как описано в пункте 1. | ||
+ | |||
+ | ====== | ||
+ | |||
+ | Как работает система темплейтов, | ||
+ | |||
+ | < | ||
+ | страница модели /? | ||
+ | |||
+ | для некоторых страниц название темплейта указано по умолчанию, | ||
+ | |||
+ | страница категории | ||
+ | |||
+ | хотя темпелйт тут не указан, | ||
+ | |||
+ | /? | ||
+ | |||
+ | </ | ||
+ | |||
+ | Таким образом можно формировать через реврайты любые урлы и любые темплейты. | ||
+ | |||
+ | |||
+ | Разбор темпелйта идет в 2 шага: сначала заменяются макросы скрипта (например <thumb ... < | ||
+ | |||
+ | Тут надо обратить внимание на свой пхп код, что б в нем не оказалось дыр, например, | ||
+ | |||
+ | Теперь представим что юзер передал не 123, в & | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | **Custom galleries** - по дефолту грабится весь контент с гали (но при грабе можно так же указать только определнный тип контента - картинки, | ||
+ | |||
+ | При добавлении контента можно форсировать определенный темплейт. Обычно это не надо, тк в 99% случаев темпелйт из стандартных определяется как надо (если не так как - велкам в суппорт). 1% случаев - это когда вы заводите кастом темпелйты для спонсоров. Например, | ||
+ | |||
+ | Базовые параметры в скрипте | ||
+ | |||
+ | < | ||
+ | /? | ||
+ | page=... | ||
+ | order= (ctr - по умолчанию, | ||
+ | force_template | ||
+ | slug= саг галереи | ||
+ | sponsor_slug= | ||
+ | model_slug= | ||
+ | search= | ||
+ | date_start= , date_end= | ||
+ | и predefined dates date_limit=today, | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ====== | ||
+ | |||
+ | Специально для темплейтов на пхп вынесена глобальная переменная $GLOBALS[' | ||
+ | |||
+ | < | ||
+ | <? | ||
+ | |||
+ | if ($GLOBALS[' | ||
+ | |||
+ | print_r($GLOBALS[' | ||
+ | |||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ====== Page track ====== | ||
+ | |||
+ | Можно проследить на какую страницу приходит траффик и какие есть переходы на сайте. | ||
+ | |||
+ | В Trade - Statistics - Page Track 2 колонки: | ||
+ | |||
+ | Есть 2 варианта | ||
+ | |||
+ | 1. & | ||
+ | |||
+ | 2. в темплейте таг < | ||
+ | |||
+ | Например | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | | ||
+ | |||
+ | |||
+ | |||