This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
ru:new_rotation_hints [2018/08/09 12:38] admin [Кастомизация линков] |
ru:new_rotation_hints [2024/02/11 08:35] (current) admin [Suggestions Based on logged searches] |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== New Rotation Hints ====== | ||
+ | |||
+ | ===== Setting GET parameters | ||
+ | |||
+ | Это один из важных пунктов, | ||
+ | Как уже было сказано в [[New Rotation Templates# | ||
+ | |||
+ | В данном примере / | ||
+ | |||
+ | Основная суть которую надо понять в этом пункте: | ||
+ | |||
+ | **Вариант 1** | ||
+ | |||
+ | Прямой когда вы так и пишете / | ||
+ | Тут единственный нюанс, который как мне кажется знают все кто работает в интернете больше 3х дней, это как перечислять парамтеры. Конкретно после имени файла ( в данном случае) идет "?" | ||
+ | |||
+ | **Вариант 2 - Через реврайты ** | ||
+ | |||
+ | Например мы хотим вывести группу phones опредленныv темплейтом. В варианте 1 это выглядело бы как / | ||
+ | |||
+ | RewriteRule ^super_phones\.html$ / | ||
+ | |||
+ | и урл будет красивым - http:// | ||
+ | |||
+ | **Вариант 3 - через файл ** | ||
+ | |||
+ | Вариант с реврайтами хороший, | ||
+ | |||
+ | Кроме того в реврайтах тяжелее делать гибкие условия, | ||
+ | |||
+ | Та же задача: | ||
+ | |||
+ | < | ||
+ | <?php | ||
+ | $_GET[' | ||
+ | $_GET[' | ||
+ | include(' | ||
+ | </ | ||
+ | |||
+ | и получаем красивый урл http:// | ||
+ | |||
+ | Но плюс этого варианта еще и в том, что параметры можно гибко менять прямо на пхп под какие то условия, | ||
+ | |||
+ | < | ||
+ | <?php | ||
+ | $_GET[' | ||
+ | |||
+ | // тут меняем темпелйт в зависимости от рефера | ||
+ | if ($_SERVER[' | ||
+ | | ||
+ | } else { | ||
+ | | ||
+ | } | ||
+ | |||
+ | include(' | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Как сделать по умолчанию сортировку по дате, те фактически без ротации на морде, как обычный туб ===== | ||
+ | |||
+ | * Создайте на корне домена файл main.php вида | ||
+ | < | ||
+ | <?php | ||
+ | $_GET[' | ||
+ | include(' | ||
+ | </ | ||
+ | * Пропишите ПУТЬ (НЕ УРЛ !!!) к этому файлу в Settings - CJPages (до этого у вас там скорее dcuj был прописан путь к scj/ | ||
+ | * Все. | ||
+ | |||
+ | |||
+ | ===== Как организовать трейд по группам с использованием новой ротации (реврайтами) ===== | ||
+ | |||
+ | Для начала как траффик попадает от трейдера к вам: | ||
+ | |||
+ | **У трейдера многонишевый сайт: | ||
+ | * Проще всего настроить редирект в нужную нишу по реферу (это в [[Tube CMS Pages# | ||
+ | * Там же можно настроить и кастом слова если называния ниш трейдера сильно не совпадают с вашими | ||
+ | |||
+ | **У трейдера однонишевый сайт** | ||
+ | * либо у него домен содержит кейворд ниши, что довольно частая ситуаиця и его будет и так редиректить в нужную нишу | ||
+ | * либо добавьте его домен в кастом редиректы по нишам | ||
+ | |||
+ | Все. Больше ничего для простых вариантов делать не надо. | ||
+ | |||
+ | **Если по каким-то неизвестным причинам авторедирект вам не походит и вы хотите old-style с настраиванием каждого трейдера отдельно то варианты следующие: | ||
+ | - создаете реврайт например | ||
+ | RewriteRule ^niche\.php$ /? | ||
+ | и просите трейдера слать http:// | ||
+ | - вариант 2 это создать файлик например niche.php вида | ||
+ | < | ||
+ | <?php | ||
+ | $_GET[' | ||
+ | include(' | ||
+ | </ | ||
+ | и далее либо трейдер сразу шлет на http:// | ||
+ | |||
+ | |||
+ | Если вы используете какой-то из сложных вариантов - опишите плз почему. Надо добавить пример зачем это может быть надо. | ||
+ | |||
+ | |||
+ | **Теперь раздача по группам на ауте.** | ||
+ | |||
+ | |||
+ | **Вариант 1** | ||
+ | |||
+ | * Создайте группы для трейда, | ||
+ | * добавьте реврайт. Как видите в нем в линке к ауту учтена группа | ||
+ | < | ||
+ | RewriteRule ^gal/ | ||
+ | </ | ||
+ | * и поменяйте сабтемплейт которым выводятся тумбы, что бы линки были примерно такие | ||
+ | < | ||
+ | a href='/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | Как не сложно заметить тут через реврайт передается имя группы. | ||
+ | |||
+ | **Вариант 2** | ||
+ | |||
+ | В апдейте 48 появилась фича Trade by groups | ||
+ | |||
+ | У нас классический мультинишевый сидж, мы хотим трейдить по группам. Для этого надо добавить & | ||
+ | |||
+ | Если вы используете дефолтные реврайты значит у вас страницы категорий имеют урл типа / | ||
+ | |||
+ | Итого, дабы заюзать эту функцию надо: | ||
+ | |||
+ | - Если у вас еще не созданы, | ||
+ | - Распределить трейдеров по группам | ||
+ | - Rotation - CMS - Tube settings включить опцию Niche trade | ||
+ | - все :) | ||
+ | |||
+ | |||
+ | |||
+ | **Вариант 3** | ||
+ | |||
+ | Обычно на мультинишевом сидже довольно много ниш, больше чем ниш в которых хотелось бы распределить трейдеров, | ||
+ | |||
+ | * Создайте группы для трейда, | ||
+ | * в группах ротации найдите поле custom var1 и для каждой группы ротации пропишите имя трейд группы которая будет использована | ||
+ | * добавьте реврайт. Как видите в нем в линке к ауту учтена группа | ||
+ | < | ||
+ | RewriteRule ^gal/ | ||
+ | </ | ||
+ | * и поменяйте сабтемплейт которым выводятся тумбы, что бы линки были примерно такие | ||
+ | < | ||
+ | a href='/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Thumbs' | ||
+ | |||
+ | Ролинг тумб - с одной гали мы берем например 5 тумб в ротацию, | ||
+ | |||
+ | Сделать очень просто: | ||
+ | * в темплейт добавляем JS код, который устраивает ролинг для всех картинок, | ||
+ | < | ||
+ | |||
+ | <script src='/ | ||
+ | |||
+ | < | ||
+ | $(document).ready(function() { | ||
+ | |||
+ | $(" | ||
+ | $(this).attr(' | ||
+ | StartSlide($(this).attr(' | ||
+ | }).mouseleave(function() { | ||
+ | $(this).attr(' | ||
+ | if ($(this).attr(' | ||
+ | }); | ||
+ | |||
+ | }); | ||
+ | |||
+ | |||
+ | function StartSlide(id) { | ||
+ | if (!$('#' | ||
+ | |||
+ | if (!$('#' | ||
+ | |||
+ | var images = $('#' | ||
+ | images = images.split(',' | ||
+ | var cur = $('#' | ||
+ | |||
+ | cur = parseInt(cur); | ||
+ | cur = (!cur || cur == 0) ? 1 : (cur+1); | ||
+ | |||
+ | cur = (!images[cur]) ? 0 : cur; | ||
+ | $('#' | ||
+ | |||
+ | var preload = new Image(); | ||
+ | |||
+ | if (cur == 0) { | ||
+ | preload.src = $('#' | ||
+ | } else { | ||
+ | preload.src = images[cur]; | ||
+ | } | ||
+ | |||
+ | if ($('#' | ||
+ | |||
+ | } | ||
+ | |||
+ | function ChangeSRC(id, | ||
+ | if (!$('#' | ||
+ | $('#' | ||
+ | StartSlide(id); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | * тут ролинг для тумб, ИД которых начинается с ' | ||
+ | < | ||
+ | |||
+ | <a href="/ | ||
+ | <img id=' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | тут 2 момент, | ||
+ | < | ||
+ | id=' | ||
+ | rel="< | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Custom pagination ===== | ||
+ | |||
+ | В mysql есть 2 варианта выборки из базы: когда считается общее кол-во результатов по запросу и когда нет. Второй вариант быстрее. Соответственно, | ||
+ | |||
+ | Поэтому если надо своя навигация и точное число TOTAL_ITEMS - надо вставить что-то вроде | ||
+ | |||
+ | < | ||
+ | |||
+ | <!-- | ||
+ | < | ||
+ | . | ||
+ | </ | ||
+ | --> | ||
+ | |||
+ | </ | ||
+ | |||
+ | те навигация есть, но в html комменте, | ||
+ | |||
+ | Вы можете сделать любую на свой вкус. Например | ||
+ | |||
+ | < | ||
+ | |||
+ | $total_pages = ceil(< | ||
+ | for ($i = 1; $i <= $total_pages; | ||
+ | echo "<a href='/? | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | где 100 - это кол-во тумб у вас на странице (его вы занете, | ||
+ | |||
+ | |||
+ | **Вариант 2** | ||
+ | |||
+ | В большинстве случаев серферам 25я страница совершенно не нужна и люди туда в большинстве случаев не ходят, поэтому имеет смысл ограничить их например 5 иил 10ю страницами и просто вписать их в темплейт как есть | ||
+ | |||
+ | < | ||
+ | <ul class=" | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ul> | ||
+ | |||
+ | Для красоты можно выделять текущую страницу например | ||
+ | |||
+ | < | ||
+ | добавляем код и получается | ||
+ | < | ||
+ | и тоже самое для остальных страниц. | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Separate page for a list of categories | ||
+ | **Варианта 2 | ||
+ | |||
+ | Первый | ||
+ | ** | ||
+ | |||
+ | 1. Создаем кастом темпелйт, | ||
+ | < | ||
+ | < | ||
+ | <a href="/ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | 2. эта страница будет видна по ссылке / | ||
+ | |||
+ | 3. что бы получить красивую ссылку добавим реврайт | ||
+ | < | ||
+ | RewriteRule ^categories$ /? | ||
+ | </ | ||
+ | |||
+ | и страница будет открываться по ссылке domain.com/ | ||
+ | |||
+ | |||
+ | **Вариант 2** | ||
+ | |||
+ | 1. Создаем кастом темпелйт, | ||
+ | < | ||
+ | < | ||
+ | <a href="/ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 2. созадем файл categories.php на корне домена в котором | ||
+ | < | ||
+ | <?php | ||
+ | $_GET[' | ||
+ | include(' | ||
+ | </ | ||
+ | |||
+ | |||
+ | 3. страница доступна по ссылке domain.com/ | ||
+ | |||
+ | |||
+ | ===== Sitemap ===== | ||
+ | |||
+ | По дефолту сайтмап у вас есть в scj/ | ||
+ | |||
+ | 1. Создайте темплейт sitemap (начиная с апдейта 46 он есть в дефолтных темплейтах) с содержимым вроде | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | и сабтемплейтом в соответствии с форматом сайтмап. | ||
+ | |||
+ | 2. на корне домена создайте файл sitemap.php | ||
+ | < | ||
+ | <?php | ||
+ | |||
+ | define(' | ||
+ | $_GET[' | ||
+ | $_GET[' | ||
+ | // $_GET[' | ||
+ | header(' | ||
+ | include(' | ||
+ | </ | ||
+ | |||
+ | |||
+ | Обратите внимание, | ||
+ | |||
+ | __Учитывая что этот пункт доки мог быть написан довольно давно относительно момента когда вы его прочтете, | ||
+ | Кроме того, в правила гугла написано, | ||
+ | |||
+ | ===== Как сделать RSS ===== | ||
+ | |||
+ | 1. Создайте темплейт rss (начиная с апдейта 47 он есть в дефолтных темплейтах) с содержимым вроде | ||
+ | < | ||
+ | <thumb num=1-100> | ||
+ | </ | ||
+ | |||
+ | и сабтемплейтом в соответствии с форматом rss. | ||
+ | |||
+ | 2. на корне домена создайте файл rss.php | ||
+ | < | ||
+ | <?php | ||
+ | |||
+ | define(' | ||
+ | $_GET[' | ||
+ | $_GET[' | ||
+ | include(' | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Custom title for each template ===== | ||
+ | |||
+ | Например вы инклудите темплейт header во всех темпелйтах, | ||
+ | |||
+ | Вариант в зависимости от темплейта | ||
+ | |||
+ | < | ||
+ | |||
+ | <? | ||
+ | if ('< | ||
+ | This is index | ||
+ | <? } elseif ('< | ||
+ | This is category | ||
+ | <? } elseif ('< | ||
+ | this is search | ||
+ | <? } else { ?> | ||
+ | some other page | ||
+ | <? } ?> | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | В зависимости от переданных в урле переменных | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <?php if ($_GET[' | ||
+ | < | ||
+ | <?php } elseif ($_GET[' | ||
+ | < | ||
+ | <?php } else { ?> | ||
+ | < | ||
+ | <?php } ?> | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Как сделать разделение по типу контента ===== | ||
+ | |||
+ | Например, | ||
+ | |||
+ | < | ||
+ | http:// | ||
+ | http:// | ||
+ | |||
+ | Так же можно использовать image и flash | ||
+ | </ | ||
+ | |||
+ | Все это так же работает через файл | ||
+ | |||
+ | < | ||
+ | <?php | ||
+ | $_GET[' | ||
+ | $_GET[' | ||
+ | include(' | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Отдельный темплейт для опредленной категории ===== | ||
+ | |||
+ | Прежде чем делать отдельный темплейт - подумайте, | ||
+ | |||
+ | - Rotation - CMS pages - создаем новый темплейт например cat_new.tpl | ||
+ | - в common.php пишем следующее (после <? ) | ||
+ | < | ||
+ | if ($_GET[' | ||
+ | где 1 и group_name это соотв ИД и имя нужной вам категории | ||
+ | </ | ||
+ | |||
+ | ===== Блог на субдомене ===== | ||
+ | |||
+ | - Создаем субдомен, | ||
+ | - В базовой админке создаем темплейты, | ||
+ | - У нас получилось 3 комон, дабы не путаться делаем во всех 3х сделаем одинаково | ||
+ | < | ||
+ | После <? добавляем | ||
+ | |||
+ | if ($_SERVER[' | ||
+ | $_GET[' | ||
+ | } elseif (isset($_GET[' | ||
+ | $_GET[' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Скимминг на кастом галерах ===== | ||
+ | |||
+ | В версии 46 добавлена новая опция - скимминг на галерах. | ||
+ | |||
+ | Rotation - CMS - Tube Settings можно поставить **custom gallery skimming** например в виде | ||
+ | < | ||
+ | 100%, | ||
+ | |||
+ | первый клик на контент (100 и 100% одно и тоже, можно пистаь как удобнее) | ||
+ | второй: | ||
+ | 3й : 70% контенкт 30% спонсор ( на урл который прописан у спона в site url) | ||
+ | 4й : 50% контента 50% спонсор ( урл - join url), | ||
+ | 5 и далее - 100% контент | ||
+ | </ | ||
+ | |||
+ | Обратите внимание, | ||
+ | |||
+ | < | ||
+ | <a href='/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Нишевая продажа трафа ===== | ||
+ | |||
+ | Многие продают траф на биржах. При покупке биржа учитывает только домен и для мультмнишевых доменов цена трафа обычно ниже, чем для нишевых, | ||
+ | |||
+ | < | ||
+ | Например, | ||
+ | В этом случае, | ||
+ | Но биржа предоставляет возможность слать траф как http:// | ||
+ | </ | ||
+ | |||
+ | Для этого мы добавляем в урл продажи параметр {GROUP}те урл получается вида http:// | ||
+ | |||
+ | tube_asian=Japanese, | ||
+ | | ||
+ | где tube_asian это ниша у брокера , а Japanese, | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== PHP in navigation ===== | ||
+ | |||
+ | Как изветсно в темпелйтах можно использовать пхп. И конечно его можно использовать в навигации дабы вывести например какую то категорию другим цветом, | ||
+ | |||
+ | < | ||
+ | |||
+ | дефолтно это выглядит примерно так | ||
+ | < | ||
+ | <a href="/ | ||
+ | </ | ||
+ | |||
+ | допустим нам надо категорию girls выделить цветом | ||
+ | |||
+ | < | ||
+ | <? if ('< | ||
+ | <a href="/ | ||
+ | <? } else { ?> | ||
+ | <a href="/ | ||
+ | <? } ?> | ||
+ | </ | ||
+ | |||
+ | |||
+ | допустим нам надо пропустить категорию girls в этом списке | ||
+ | |||
+ | < | ||
+ | <? if ('< | ||
+ | <a href="/ | ||
+ | <? } ?> | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Extra Thumb ===== | ||
+ | |||
+ | Для дизайна иногда удобно иметь 2 размера тумб ротации, | ||
+ | |||
+ | Для того что бы скрипт создавал большие картинки для индекса в Rotation - Settings - Crop Profile создаем кроппрофайл с бОльшими размерами, | ||
+ | |||
+ | Использовать это в темплейте можно так: обычно выводим тумбу как | ||
+ | |||
+ | <img src='< | ||
+ | |||
+ | Если вы делали экстра тумбу, то вывести ее можно как | ||
+ | |||
+ | <img src='< | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Как сделать персональный темплейт трейдеру в новой ротации ===== | ||
+ | - Создайте темплейт в Rotation - CMS pages, например trd_tpl | ||
+ | - Создайте файл например trd_tpl.php на корне домена следующего содержания | ||
+ | |||
+ | < | ||
+ | <?php | ||
+ | $_GET[' | ||
+ | include(' | ||
+ | </ | ||
+ | |||
+ | и пропишите ПУТЬ (!НЕ УРЛ!!!) к этому файлу в редактировании трейдера. | ||
+ | |||
+ | ===== Как убрать параметр ротации из линков (1x23x456) ===== | ||
+ | |||
+ | Актуально только для скрипта версии 1.х | ||
+ | |||
+ | В версии 2.х есть magic rotation parameter, когда в линках не надо ничего | ||
+ | |||
+ | Обычно линки выглядят следующим образом: | ||
+ | |||
+ | / | ||
+ | |||
+ | 12x34x56 - это параметры ротации, | ||
+ | |||
+ | Можно сделать следующим образом: | ||
+ | |||
+ | 1. В сабе ссылки у вас выглядят примертно так: | ||
+ | |||
+ | < | ||
+ | <a href="/ | ||
+ | |||
+ | заменяем на | ||
+ | |||
+ | <a href="/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | как ни сложно заметить мы вынести < | ||
+ | |||
+ | |||
+ | 2. в < | ||
+ | |||
+ | < | ||
+ | <script type=" | ||
+ | <script type=" | ||
+ | $(document).ready(function(){ | ||
+ | $(' | ||
+ | $(this).bind(' | ||
+ | if ($(this).attr(' | ||
+ | }); | ||
+ | }); | ||
+ | }); | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Мне не нравится линк вида / | ||
+ | |||
+ | |||
+ | Тут "не нравится" | ||
+ | |||
+ | 2й вариант - не нравится, | ||
+ | |||
+ | Тут варианты: | ||
+ | |||
+ | 1. Если не нравится, | ||
+ | |||
+ | 2. Для СЕ - http:// | ||
+ | |||
+ | 3. Для СЕ так же есть другой вариант - сделать линки вида | ||
+ | |||
+ | / | ||
+ | |||
+ | и в GWT объявить, | ||
+ | |||
+ | Для этого в .htaccess заменяем места вида | ||
+ | |||
+ | out.php? | ||
+ | на | ||
+ | out.php? | ||
+ | В темплейте там же меняем на | ||
+ | http:// | ||
+ | |||
+ | |||
+ | |||
+ | **Вариант 2 изменения окончания линков** | ||
+ | |||
+ | В реврайтах меняем | ||
+ | |||
+ | < | ||
+ | RewriteCond %{QUERY_STRING} ^(.+)$ | ||
+ | RewriteRule ^gallery/ | ||
+ | </ | ||
+ | |||
+ | на | ||
+ | |||
+ | < | ||
+ | RewriteCond %{QUERY_STRING} ^param=(.+)$ | ||
+ | RewriteRule ^gallery/ | ||
+ | </ | ||
+ | |||
+ | как видно тут добавлен param который и можно отключить в GWT | ||
+ | |||
+ | линки соответственно надо делать вида | ||
+ | |||
+ | href="/ | ||
+ | |||
+ | |||
+ | |||
+ | **Вариант 3 если вы хотите совершенно другой вид** | ||
+ | |||
+ | В данный момент таг < | ||
+ | |||
+ | < | ||
+ | |||
+ | в сабе делаете | ||
+ | |||
+ | $my_var = explode(' | ||
+ | |||
+ | получаете массив | ||
+ | |||
+ | Array | ||
+ | ( | ||
+ | [0] => 12 | ||
+ | [1] => 34 | ||
+ | [2] => 56 | ||
+ | ) | ||
+ | |||
+ | </ | ||
+ | |||
+ | и можете из него формироваль линк как угодно | ||
+ | |||
+ | например вариант с a b с | ||
+ | |||
+ | < | ||
+ | |||
+ | out.php? | ||
+ | |||
+ | а в common.php складывается параметр назад | ||
+ | |||
+ | if (isset($_GET[' | ||
+ | $_GET[' | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | Таким образом можно сделать пармтеры с любыми именами или точками, | ||
+ | |||
+ | |||
+ | ===== Как вывести в навигации все страницы ===== | ||
+ | |||
+ | Обычно навигация (она же пагинация) выглядит примерно так 1 2 3 ... 40 41 42. | ||
+ | |||
+ | Если надо вывести все 42 без ... надо навигацию заменить примерно на следующее | ||
+ | |||
+ | < | ||
+ | |||
+ | Было | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | заменим на | ||
+ | |||
+ | <!-- | ||
+ | закоментили текущую навигацию, | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | --> | ||
+ | |||
+ | <?php | ||
+ | $thumbs_per_page = 200; | ||
+ | $total_pages = ceil(< | ||
+ | |||
+ | for ($i = 1; $i <= $total_pages; | ||
+ | ?> | ||
+ | < | ||
+ | <?php }?> | ||
+ | |||
+ | |||
+ | |||
+ | где $thumbs_per_page = 200; соотв кол-во тумб на старницу в вашем темплейте. | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Рейтинг ===== | ||
+ | |||
+ | Что бы добавить рейтинг кастом галер надо (на примере content_custom_pic) | ||
+ | |||
+ | Добавляем стили что б звездочки были красивые | ||
+ | |||
+ | < | ||
+ | < | ||
+ | div.rating-cancel, | ||
+ | div.rating-cancel, | ||
+ | div.star-rating, | ||
+ | div.rating-cancel a, | ||
+ | div.star-rating-on a{background-position: | ||
+ | div.star-rating-hover a{background-position: | ||
+ | /* Read Only CSS */ | ||
+ | div.star-rating-readonly a{cursor: | ||
+ | /* Partial Star CSS */ | ||
+ | div.star-rating{background: | ||
+ | /* END jQuery.Rating Plugin CSS */ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | Добавляем JS скрипт который будет красиво делает mouseover для звездочек | ||
+ | |||
+ | < | ||
+ | <script src='/ | ||
+ | <script src='/ | ||
+ | < | ||
+ | $(function(){ | ||
+ | $(' | ||
+ | callback: function(value, | ||
+ | $('# | ||
+ | |||
+ | $.get('/ | ||
+ | { | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | }, | ||
+ | function(data) { | ||
+ | $('# | ||
+ | } | ||
+ | ); | ||
+ | } | ||
+ | }); | ||
+ | }); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | Добавляем конкретно сами звездочки | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <input class=" | ||
+ | <input class=" | ||
+ | <input class=" | ||
+ | <input class=" | ||
+ | <input class=" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | Все. | ||
+ | |||
+ | PS Вывести рейтинг можно где угодно тагом < | ||
+ | простейший пример в сабе | ||
+ | < | ||
+ | <? if(< | ||
+ | <? if(< | ||
+ | <? if(< | ||
+ | <? if(< | ||
+ | <? if(< | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Рейтинг +1\-1 like\dislike ===== | ||
+ | |||
+ | И прочие 2хвариантные рейтинги. | ||
+ | Смысл очень простой: | ||
+ | |||
+ | Техническая реализация: | ||
+ | |||
+ | Добавляем JS скрипт, | ||
+ | < | ||
+ | |||
+ | <script src='/ | ||
+ | |||
+ | < | ||
+ | function post_rating(value) { | ||
+ | |||
+ | $.get('/ | ||
+ | { | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | }, | ||
+ | function(data) { | ||
+ | | ||
+ | } | ||
+ | ); | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Добавляем сами кнопки голосования и вывод рейтинга | ||
+ | |||
+ | < | ||
+ | |||
+ | <div id=' | ||
+ | current rating = <? | ||
+ | rate it: | ||
+ | |||
+ | <span onclick=' | ||
+ | <span onclick=' | ||
+ | |||
+ | </ | ||
+ | |||
+ | +1 и -1 заменяются на пальчики, | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Все. | ||
+ | |||
+ | ===== PHP code in template ===== | ||
+ | |||
+ | Как вы вероятно знаете, | ||
+ | |||
+ | меняем < | ||
+ | | ||
+ | Однако тут есть ньанс: если в деске окажется ковычка, | ||
+ | |||
+ | < | ||
+ | Пример, | ||
+ | |||
+ | <?php echo strtoupper('< | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Comments ===== | ||
+ | |||
+ | Комменты так же просто добавить | ||
+ | |||
+ | Добавляем код, который будет постить коммент без перезагрузки старницы (AJAX) | ||
+ | |||
+ | < | ||
+ | |||
+ | <script src='/ | ||
+ | |||
+ | |||
+ | < | ||
+ | function post_comment() { | ||
+ | |||
+ | $.post( | ||
+ | '/ | ||
+ | { | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | }, | ||
+ | function(data) { | ||
+ | if (data != ' | ||
+ | $('# | ||
+ | } else { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | } | ||
+ | ); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Добавляем html форму комментов | ||
+ | |||
+ | < | ||
+ | |||
+ | <div id=' | ||
+ | <div id=' | ||
+ | <div class=" | ||
+ | < | ||
+ | |||
+ | <FORM name=" | ||
+ | |||
+ | <div class=" | ||
+ | < | ||
+ | </ | ||
+ | <div class=" | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | <? if ($rot_settings[' | ||
+ | <div class=" | ||
+ | < | ||
+ | <input id=' | ||
+ | </ | ||
+ | <div class=" | ||
+ | <input type=' | ||
+ | </ | ||
+ | <? } ?> | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | и добавляем вывод уже имеющихся комментов | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Все. | ||
+ | |||
+ | |||
+ | ===== Geo targeting ===== | ||
+ | |||
+ | Фактически это пример пхп кода в шаблонах | ||
+ | |||
+ | < | ||
+ | <? | ||
+ | if ($_SERVER[' | ||
+ | ?> | ||
+ | |||
+ | код баннера 1 | ||
+ | |||
+ | <? } else { ?> | ||
+ | |||
+ | код баннера 2 | ||
+ | |||
+ | <? } ?> | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Два индекса с разным типом контента ===== | ||
+ | |||
+ | Условно надо 2 страницы с мувисным и пикчевым контентом. Например, | ||
+ | |||
+ | Варианта 2 | ||
+ | |||
+ | 1. Делаем все на одном темпелейте | ||
+ | |||
+ | * создаем 2 файла вида | ||
+ | < | ||
+ | <?php | ||
+ | $_GET[' | ||
+ | include(' | ||
+ | </ | ||
+ | * любую из этих страниц прописываем в CJ Pages - это и будет индекс сайта | ||
+ | * поскольку темпелйт тут не указан - будет использован index | ||
+ | * если в дизайне вы как-то работаете по-разному с разными размерами мувисных и пикчевых тумб то для обработки используйте код вида | ||
+ | < | ||
+ | <?php | ||
+ | if ($_GET[' | ||
+ | ?> | ||
+ | текст 1 | ||
+ | <? | ||
+ | } else | ||
+ | ?> | ||
+ | тесткт 2 | ||
+ | <? | ||
+ | } | ||
+ | |||
+ | обратите внимание что этот код можно использовать как в сабе так и в самом темплейте. | ||
+ | соотвественно ссылки для пагинации будут movies.php? | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Вариант 2. Делаем 2 разных темпелйта например index_movies and index_images с нужным дизайном и навигацией а так же 2 файла вида | ||
+ | |||
+ | < | ||
+ | <?php | ||
+ | $_GET[' | ||
+ | $_GET[' | ||
+ | include(' | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Перевод меню сайта ( i18 ) ===== | ||
+ | |||
+ | Довольно просто сделать перевод меню сайта (те ссылок типа Most Popular, Order By date и прочее) на другие языки. | ||
+ | |||
+ | Rotation - CMS Templates - Tpl Custom Var добавляем кастом переменные, | ||
+ | |||
+ | |||
+ | ===== Другой flash плеер ===== | ||
+ | |||
+ | ПО дефолту в скрипте бесплатный плеер Jwplayer, на данный момент это уже немного старый плеер, но он работает :) Если вы хотите любой другой плеер, то главное что вам надо понять что плеер и скрипт никак не связаны. Скрипт формирует html страницу где заменяет таги и все, как отображается страница зависит от браузера. Как играет мувик - зависит от плеера. | ||
+ | |||
+ | По дефолту код примрено такой | ||
+ | |||
+ | < | ||
+ | <object id=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <embed | ||
+ | type=" | ||
+ | id=" | ||
+ | name=" | ||
+ | src="/ | ||
+ | width="< | ||
+ | height="< | ||
+ | allowscriptaccess=" | ||
+ | allowfullscreen=" | ||
+ | flashvars=" | ||
+ | /> | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | как видно тут вызывается плеер / | ||
+ | Вы можете положить свой плеер куда удобно, | ||
+ | |||
+ | < | ||
+ | |||
+ | <object id=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <embed src=" | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Как быстро сделать блог на имеющейся базе ===== | ||
+ | |||
+ | Если вы хорошо наполняли базу изначально и у вас хорошие описания и очень желательно кастом галеры, | ||
+ | |||
+ | * создаем субдомен условно blog.yourdomain.com | ||
+ | * ставим на этом субдомен smartcj | ||
+ | * делаем его слейвом yourdomain.com | ||
+ | * скачиваем [[http:// | ||
+ | * заливаем этот файл в Rotation - CMS (внизу Upload Templates ) | ||
+ | |||
+ | Все, блог готов :) | ||
+ | |||
+ | |||
+ | ===== Suggestions Based on logged searches ===== | ||
+ | |||
+ | Автоподсказки | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | <script type=" | ||
+ | <script type=" | ||
+ | |||
+ | |||
+ | < | ||
+ | $(document).ready(function(){ | ||
+ | $('# | ||
+ | serviceUrl: '/ | ||
+ | |||
+ | onSelect: function(suggestion, | ||
+ | | ||
+ | } | ||
+ | }); | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | | ||
+ | |||
+ | немного стилей для красоты | ||
+ | | ||
+ | < | ||
+ | < | ||
+ | .autocomplete-suggestions { border: 1px solid #999; background: #FFF; cursor: default; overflow: auto; } | ||
+ | .autocomplete-suggestion { padding: 2px 5px; white-space: | ||
+ | .autocomplete-selected { background: #F0F0F0; } | ||
+ | .autocomplete-suggestions strong { font-weight: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | само поле поиска | ||
+ | |||
+ | < | ||
+ | <input class=inputbox value='' | ||
+ | </ | ||
+ | |||
+ | Сам темпелйт ' | ||
+ | |||
+ | < | ||
+ | <?php | ||
+ | header(' | ||
+ | ?>{ | ||
+ | " | ||
+ | " | ||
+ | {" | ||
+ | |||
+ | < | ||
+ | , | ||
+ | </ | ||
+ | |||
+ | ]} | ||
+ | </ | ||
+ | |||
+ | Как проверить: | ||
+ | |||
+ | |||
+ | ===== Suggestions : Based on regular search ===== | ||
+ | |||
+ | Тоже самое что выше, но подсказывает не по базе поисков, | ||
+ | |||
+ | |||
+ | styles | ||
+ | |||
+ | < | ||
+ | < | ||
+ | .autocomplete-suggestions { border: 1px solid #999; background: #FFF; cursor: default; overflow: auto; } | ||
+ | .autocomplete-suggestion { padding: 2px 5px; white-space: | ||
+ | .autocomplete-selected { background: #F0F0F0; } | ||
+ | .autocomplete-suggestions strong { font-weight: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | a field | ||
+ | |||
+ | < | ||
+ | <input class=inputbox value='' | ||
+ | </ | ||
+ | |||
+ | |||
+ | JS code | ||
+ | |||
+ | < | ||
+ | <script type=" | ||
+ | <script type=" | ||
+ | < | ||
+ | $(document).ready(function(){ | ||
+ | |||
+ | $('# | ||
+ | serviceUrl: '/ | ||
+ | |||
+ | onSelect: function(suggestion, | ||
+ | location.href = suggestion.data; | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | |||
+ | }); | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | темплейт | ||
+ | |||
+ | |||
+ | < | ||
+ | <?php | ||
+ | header(' | ||
+ | ?>{ | ||
+ | " | ||
+ | " | ||
+ | {" | ||
+ | |||
+ | <thumb skip_search_log=true search=GET_query num=1-10> | ||
+ | , | ||
+ | </ | ||
+ | |||
+ | ]} | ||
+ | </ | ||
+ | |||
+ | |||
+ | Как видно разница только в том, что в самом темплейте ,а конкретно в таге <thumb | ||
+ | |||
+ | ===== Site with main niches ===== | ||
+ | |||
+ | Допустим, | ||
+ | |||
+ | /? | ||
+ | | ||
+ | Например, | ||
+ | |||
+ | /? | ||
+ | | ||
+ | | ||
+ | |||
+ | **Category thumbs** | ||
+ | |||
+ | Можно создать 3 сета тумб категорий как раз под эту ситуацию | ||
+ | |||
+ | Settings - System Thumbs | ||
+ | |||
+ | При выводе тумб категорий мы можем указать номер сета | ||
+ | |||
+ | < | ||
+ | | ||
+ | Обратите внмание что сет так же можно передавать в урле | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | |||
+ | ===== Custom flv: content separation ===== | ||
+ | |||
+ | Представим что у нас есть галерея с 3 флеш мувиками как например эта http:// | ||
+ | |||
+ | Если из нее сделать кастом галерею, | ||
+ | |||
+ | **Как это сделать: | ||
+ | |||
+ | 1. Создадим новый темплейт для флеш галер, где на странице галеры будут толкьо тумбы этой галеры (как у пиксовой), | ||
+ | |||
+ | < | ||
+ | <a href='/ | ||
+ | <br> | ||
+ | <a href='/ | ||
+ | <br> | ||
+ | <a href='/ | ||
+ | <br> | ||
+ | </ | ||
+ | |||
+ | как тут не сложно заметить тут нет флешплеера и все тумбы указывают на / | ||
+ | |||
+ | где есть еще один темплейт **content_flv_single_item** где и будет флешплеер, | ||
+ | |||
+ | **Содержимое content_flv_single_item** | ||
+ | |||
+ | < | ||
+ | <? if ($_GET[' | ||
+ | <div class=" | ||
+ | <div class=" | ||
+ | |||
+ | <object id=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <embed | ||
+ | type=" | ||
+ | id=" | ||
+ | name=" | ||
+ | src="/ | ||
+ | width="< | ||
+ | height="< | ||
+ | allowscriptaccess=" | ||
+ | allowfullscreen=" | ||
+ | flashvars=" | ||
+ | /> | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <? } ?> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | <? if ($_GET[' | ||
+ | <div class=" | ||
+ | <div class=" | ||
+ | |||
+ | <object id=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <embed | ||
+ | type=" | ||
+ | id=" | ||
+ | name=" | ||
+ | src="/ | ||
+ | width="< | ||
+ | height="< | ||
+ | allowscriptaccess=" | ||
+ | allowfullscreen=" | ||
+ | flashvars=" | ||
+ | /> | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <? } ?> | ||
+ | |||
+ | |||
+ | |||
+ | <? if ($_GET[' | ||
+ | <div class=" | ||
+ | <div class=" | ||
+ | |||
+ | <object id=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <param name=" | ||
+ | <embed | ||
+ | type=" | ||
+ | id=" | ||
+ | name=" | ||
+ | src="/ | ||
+ | width="< | ||
+ | height="< | ||
+ | allowscriptaccess=" | ||
+ | allowfullscreen=" | ||
+ | flashvars=" | ||
+ | /> | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <? } ?> | ||
+ | |||
+ | </ | ||
+ | |||
+ | тут 3 практически одинаковых куска которые отличаются только <? if ($_GET[' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **2. Граб галереи** | ||
+ | |||
+ | При грабе конетента либо позже через редактирование надо выставить **Embed Template** для этой галеры соответственно - content_flv_gallery | ||
+ | |||
+ | |||
+ | **3. Реврайт** | ||
+ | |||
+ | Урлы вида / | ||
+ | |||
+ | < | ||
+ | RewriteRule ^flash_gallery/ | ||
+ | </ | ||
+ | |||
+ | и соответственно заменить в темплейте content_flv_gallery | ||
+ | |||
+ | < | ||
+ | линки вида | ||
+ | <a href='/ | ||
+ | на | ||
+ | <a href='/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | **4. Особенности этой галеры** | ||
+ | |||
+ | У нее спонсор разместил 2 вида линков на контент: | ||
+ | |||
+ | ===== Навигация в пределах одной галереи ===== | ||
+ | |||
+ | Например у нас есть кастомная пиксовая галерах с некоторым кол-вом картинок. По нажатию на тумбу открывается не сама картинка, | ||
+ | |||
+ | < | ||
+ | |||
+ | <? if ($_GET[' | ||
+ | <a href='/ | ||
+ | <? } ?> | ||
+ | |||
+ | <? if ($_GET[' | ||
+ | <a href='/ | ||
+ | <? } ?> | ||
+ | |||
+ | </ | ||
+ | |||
+ | Если у вас другие реврайты не забывайте править линки. | ||
+ | |||
+ | |||
+ | ===== Friendly tube ===== | ||
+ | |||
+ | Для контент сайтов на одной базе (мастер слейв) | ||
+ | |||
+ | Например, | ||
+ | |||
+ | Это положительно сказывается на проде исходного сайта (человек хотел увидеть мувик - он его увидел), | ||
+ | |||
+ | Для этого на сайте domain1.com для трейдера domain2.com указываем тип сайта - Friendly Tube. В этом случае, | ||
+ | |||
+ | На domain2.com, | ||
+ | |||
+ | http:// | ||
+ | |||
+ | те редиректит на галеру. Если у вас свои реврайты, | ||
+ | |||
+ | Это конечно актуально только при | ||
+ | - если у трейдера так же SmartCJ | ||
+ | - если вы используете либо мастар-слейв (тогда ИД 100% одинаковые) либо если контент в целом пересекается. | ||
+ | |||
+ | Если на сайте трейдера не будет галеры с данным ИД - получится просто индекс | ||
+ | |||
+ | |||
+ | |||
+ | ===== Custom links ===== | ||
+ | |||
+ | Линки на галереи в дефолтном варианте / | ||
+ | |||
+ | Аналогично для категорий, | ||
+ | |||
+ | Единственный нюанс есть с линками категорий: | ||
+ | |||
+ | Что бы поменять на такой вариант надо: | ||
+ | |||
+ | Добавить в common.php (note: все они должны быть одинаковые) | ||
+ | < | ||
+ | if (isset($_GET[' | ||
+ | $_GET[' | ||
+ | } elseif (isset($_GET[' | ||
+ | $_GET[' | ||
+ | } else { | ||
+ | $_GET[' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Теперь вариант / | ||
+ | |||
+ | Однако в самой навигации стоит SORT_ORDER, который фактически равно | ||
+ | |||
+ | < | ||
+ | if (isset($_GET[' | ||
+ | $_GET[' | ||
+ | $GLOBALS[' | ||
+ | } elseif (isset($_GET[' | ||
+ | $_GET[' | ||
+ | $GLOBALS[' | ||
+ | } else { | ||
+ | $_GET[' | ||
+ | $GLOBALS[' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | А в темплейте вместо SORT_ORDER - используем <? | ||
+ | |||
+ | PS В таге навигации надо добавить skip_href_deletion=true что бы оно не чистило ваш пхп код. | ||
+ | |||
+ | |||
+ | ===== Random keywords for galleries ===== | ||
+ | |||
+ | Если у вас есть список кейвордов которые вы хотели вы рендомно раскидать по галерам (например создать кастом вар и потом использовать его где-то в галере) то это может сделать так: | ||
+ | |||
+ | * создайте текстовый файл с кейвордами (условно keywords.txt) | ||
+ | * пхп скрипт kw.php | ||
+ | |||
+ | < | ||
+ | <? | ||
+ | $lines = file('/ | ||
+ | echo $lines[rand(0, | ||
+ | </ | ||
+ | |||
+ | * убедитесь что в браузере http:// | ||
+ | * добавляем import replacement вида | ||
+ | |||
+ | < | ||
+ | If this field = URL | ||
+ | Contains this value = http | ||
+ | Then Search For = * | ||
+ | in This Field = Custom field 1 | ||
+ | And Replace it With = external: | ||
+ | </ | ||
+ | |||
+ | Все. | ||
+ | |||
+ | Основное тут external: | ||
+ | |||
+ | |||
+ | ===== Site with main niches ===== | ||
+ | |||
+ | Допустим нам надо создать сайт 3 основными нишами и Х дополнительных. | ||
+ | |||
+ | Основные нишы: general (id 1) , гай (2) и шмель (3) | ||
+ | и например 100 ниш вида teen (id 4), amateur (id 5) и так далее | ||
+ | |||
+ | Логично, | ||
+ | |||
+ | Таким образом все галеры на сайте у нас оказываются как минимум в 2х категориях: | ||
+ | |||
+ | При выводе галер мы можем ограничить то, что хочет видеть серфер. Например, | ||
+ | |||
+ | /? | ||
+ | | ||
+ | Если надо видеть тин, но который в группе гай (это значит надо исключить 1 и 3) то ссылка будет | ||
+ | |||
+ | /? | ||
+ | |||
+ | По такой же схеме можно разделить например таги | ||
+ | |||
+ | /? | ||
+ | |||
+ | |||
+ | **Тумбы категорий: | ||
+ | |||
+ | Settings - System Thumbs можно настроить нужное кол-во тумб категорий. | ||
+ | В данном случае нам надо 3 набора (сета) тумб категорий - для каждой из групп 1 2 и 3. | ||
+ | Для того, что бы фильтровать тумбы категории есть поле Skip group ids, comma separated | ||
+ | |||
+ | Например, | ||
+ | |||
+ | При выводе тумб категорий мы можем указать какой сет выводить, | ||
+ | |||
+ | < | ||
+ | | ||
+ | Для удобства номер сета можно брать из урла /?set_id=2 | ||
+ | |||
+ | < | ||
+ | | ||
+ | Тк мы не хотим выводить саму текущую группу то тут пригодится параметр skip_group_id (те выводя сет 2 нам саму группу гай (2) выводить не надо) /? | ||
+ | |||
+ | < | ||
+ | | ||
+ | Как можно видеть в данном примере у нас ИД категории и сета совпадают, | ||
+ | |||
+ | < | ||
+ | | ||
+ | но что бы не было путаницы в примере такой замены мы делать не будем. | ||
+ | |||
+ | Кроме того, в каких-то категории могут быть специфическими для какой-то ниши и поэтому там может не оказаться галер, поэтому имеет смысл добавить min_gallery_count=1 что бы не выводить пустые категории | ||
+ | |||
+ | < | ||
+ | |||
+ | | ||
+ | | ||
+ | ===== Content protection ===== | ||
+ | |||
+ | По дефолту контент лежит в scj/ | ||
+ | |||
+ | На странице мы выводим <img src='/ | ||
+ | |||
+ | И серфер видит прямой линк на / | ||
+ | |||
+ | 1. сначала в конфиге nginx запретим скачивать файлы напрямую | ||
+ | |||
+ | < | ||
+ | location ~* / | ||
+ | deny all; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | и добавляем туда же секретную локацию | ||
+ | |||
+ | location /protected { | ||
+ | root /var/www; | ||
+ | internal; | ||
+ | } | ||
+ | |||
+ | |||
+ | 2. немного подправим темплейт. Например сейчас он выглядит примерно так | ||
+ | |||
+ | <a href='< | ||
+ | |||
+ | |||
+ | что нам дает примерно такой результат | ||
+ | |||
+ | <a href='/ | ||
+ | |||
+ | мы добавим / | ||
+ | |||
+ | <a href='/ | ||
+ | |||
+ | и в результате получится | ||
+ | |||
+ | <a href='/ | ||
+ | | ||
+ | |||
+ | 3. создаем content.php | ||
+ | | ||
+ | < | ||
+ | <?php | ||
+ | if (!$_GET[' | ||
+ | die(" | ||
+ | } | ||
+ | |||
+ | header(" | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Итого если вы настроили верно nginx то при прямом запросе / | ||
+ | |||
+ | По линке / | ||
+ | |||
+ | ===== Content when No Content found ===== | ||
+ | |||
+ | Например, | ||
+ | |||
+ | Есть 3 варианта: | ||
+ | |||
+ | |||
+ | **Первый** | ||
+ | |||
+ | По умолчанию если ничего не найдено - показывает темпелйт content_not_found , те если там вывести | ||
+ | |||
+ | <thumb num=1-10 order=easy_random > | ||
+ | |||
+ | то это и будут ваши рендомные галеры | ||
+ | |||
+ | |||
+ | **Вариант 2** | ||
+ | |||
+ | если не хочется менять content_not_found то делаем отдельный темплейт random_content | ||
+ | |||
+ | < | ||
+ | Nothing found , look at those links | ||
+ | |||
+ | <thumb num=1-10 order=easy_random zero_items_to_404=off> | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | а сам темплейт (content_search) поиска поменять как | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | <?if (< | ||
+ | |||
+ | < | ||
+ | window.location.replace(" | ||
+ | </ | ||
+ | |||
+ | <? } else { ?> | ||
+ | |||
+ | выводим тумбы как обычно в поиске | ||
+ | |||
+ | <? } ?> | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | в этом сулчае ничего лишнего не добавляется. | ||
+ | |||
+ | |||
+ | **Вариант 3** | ||
+ | |||
+ | Просто меняем content_search как | ||
+ | |||
+ | < | ||
+ | |||
+ | <?if (< | ||
+ | |||
+ | Nothing found , look at those links | ||
+ | |||
+ | <thumb num=1-10 order=easy_random search="" | ||
+ | |||
+ | |||
+ | <? } else { ?> | ||
+ | |||
+ | <thumb num=1-10 zero_items_to_404=off page_main_tag=true> | ||
+ | выводим тумбы как обычно в поиске | ||
+ | |||
+ | <? } ?> | ||
+ | |||
+ | </ | ||
+ | |||
+ | Этот вариант проще но минус в том, что даже если что-то найдено то <thumb num=1-10 order=easy_random> | ||
+ | |||
+ | |||
+ | |||
+ | ===== Lasted Visited Galleries ===== | ||
+ | |||
+ | Это пример использования кеша в темпелйтах и макросах | ||
+ | |||
+ | Добавляем в темплейт галерей (например content_page) следующий кусок кода | ||
+ | |||
+ | < | ||
+ | Current gallery id: < | ||
+ | |||
+ | <? | ||
+ | if ((int) '< | ||
+ | $last_items = Cache:: | ||
+ | |||
+ | if (!$last_items) $last_items = array(); | ||
+ | |||
+ | if ($last_items[0] != (int) '< | ||
+ | $last_items = array_slice($last_items, | ||
+ | |||
+ | Cache:: | ||
+ | } | ||
+ | |||
+ | ?> | ||
+ | |||
+ | |||
+ | <thumb num=1-10 limit_by_gallery_id=true order=row gallery_id=CACHE_last_items cache_time=10> | ||
+ | Last visited: < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Тут надо отметить для себя | ||
+ | |||
+ | - Cache:: | ||
+ | - в таге выводим подхватывая из кеша <thumb num=1-10 limit_by_gallery_id=true **gallery_id=CACHE_last_items** order=row > | ||
+ | - в список последних просмотренных добавляется только если есть if ('< | ||
+ | - но сам список можно выводить и на индекс | ||
+ | |||
+ | |||
+ | Тут надо понимать что | ||
+ | |||
+ | - если вы откроете страницу без кеше - то список последних прочтен не будет (нет кеша) | ||
+ | - страница кешируется вместе с этим списком, | ||
+ | |||
+ | |||
+ | Тут есть 2 варианта: | ||
+ | |||
+ | - оставить как есть тк для серфера это не так важно | ||
+ | - уменьшить время кеша (cache_time=100) | ||
+ | |||
+ | |||
+ | ===== Lasted Visited Galleries By Country ===== | ||
+ | |||
+ | Тут надо немного более глубокое понимание процесса. | ||
+ | |||
+ | У вас есть страница сайта, что бы не генерить ее для каждого серфера - она генерится и сохраняется в кеше на какое-то время, таким образом для следующих посетителей не надо генерить страницу по новой. Если мы хотим показать как в примере выше, но по странам - нам надо как минимум для каждой страны переделать страницу, | ||
+ | |||
+ | |||
+ | Что бы избежать этого можно пойти другим путем | ||
+ | |||
+ | - например на индексе делаем код колторый запрашиват условно страницу last_viewed.php и отображает содержимое | ||
+ | - получается что index будет одинаковый для всех и только last_viewed.php надо будет отработать 190 (по количеству стран) | ||
+ | |||
+ | |||
+ | Пошагово как сделать | ||
+ | |||
+ | 1. в темплейт галеры добавляем | ||
+ | |||
+ | < | ||
+ | id: < | ||
+ | |||
+ | |||
+ | <? | ||
+ | if ((int) '< | ||
+ | |||
+ | $cache_id = ' | ||
+ | |||
+ | $last_items = Cache:: | ||
+ | |||
+ | $last_items[(int) '< | ||
+ | $last_items = array_slice($last_items, | ||
+ | |||
+ | Cache:: | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | ?> | ||
+ | |||
+ | </ | ||
+ | |||
+ | тут в кеш | ||
+ | |||
+ | $cache_id = ' | ||
+ | |||
+ | добавляется список галер (последние 100). Как видно перменная зависит от страны. | ||
+ | |||
+ | |||
+ | |||
+ | 2. создаем новый темпелйт viewed_in_country | ||
+ | |||
+ | < | ||
+ | <thumb num=1-10 limit_by_gallery_id=true gallery_id=CACHE_GET_last_viewed_cache_id order=row > | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | тут надо обратить внимание на gallery_id=CACHE_GET_last_viewed_cache_id те список gallery_id берем из CACHE, переменная которая будет передана в GET с именем | ||
+ | |||
+ | |||
+ | |||
+ | 3. там где надо вывести список галер по текущей стране | ||
+ | |||
+ | < | ||
+ | |||
+ | <script src="// | ||
+ | |||
+ | last viewed in <? | ||
+ | |||
+ | <script language=" | ||
+ | |||
+ | $(document).ready(function(){ | ||
+ | |||
+ | $.get(' | ||
+ | function(data) { | ||
+ | $('# | ||
+ | } | ||
+ | ); | ||
+ | |||
+ | }); | ||
+ | |||
+ | </ | ||
+ | |||
+ | <div id=' | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | тут основное это то что мы запрашиваем урл | ||
+ | |||
+ | ./? | ||
+ | |||
+ | где в перменной last_viewed_cache_id передаем из какого cache id надо брать список галер, а эта перменная будет своя для каждой страны. | ||
+ | |||
+ | полученное содержимое вставляем в div = last_viewed | ||
+ | |||
+ | Итого для теста надо | ||
+ | |||
+ | * зайти на пару галер что б сработал пункт 1 | ||
+ | * открыть в браузере ./? | ||
+ | |||
+ | |||
+ | |||
+ | ===== Master Slave First thumb ===== | ||
+ | |||
+ | У мастера и слейвов набор галерей совпадает тк это одна база. Значит мы может устроить трейд между сайтами на одной базе таким образом, | ||
+ | |||
+ | Как сделать: | ||
+ | |||
+ | 1. на сайте А серфер кликнул на галеру 12345, при переходе на трейдера (сайь Б) нам надо сайту Б дать знать какую галеру показать первой (ид 12345). | ||
+ | |||
+ | < | ||
+ | <thumb num=1-10> | ||
+ | <a href='/ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | как видно тут на аут передается параметр show_gallery_id=, | ||
+ | |||
+ | 2. На сайте А меняем урл трейдера (сайт Б) (только тех которые на одной базе и буду поддерживать эту фичу) | ||
+ | |||
+ | http:// | ||
+ | |||
+ | |||
+ | тут надо отметить появление {GET_show_gallery_id} из пункта 1, те при переходе к трейдеру этот параметр | ||
+ | |||
+ | |||
+ | 3. у трейдера в темплейте индекс добавляем | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | <thumb num=1 gallery_id=GET_first_gallery_id limit_by_gallery_id=true> | ||
+ | first gallery < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | тут надо отметить gallery_id=GET_first_gallery_id который берется из пункта 2 | ||
+ | |||
+ | |||
+ | Все. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Rotate for Rows ===== | ||
+ | |||
+ | Есть полезная опция ротации | ||
+ | |||
+ | Rotate page for raws | ||
+ | ie if surfer visits us for a second time - show him second page instead of the first one | ||
+ | |||
+ | |||
+ | те если серфер заходит на индекс сайта, то мы автоматически можем менять параметр &page=, те при первом заходе юзер видит фактически & | ||
+ | |||
+ | <thumb num=1-10> | ||
+ | | ||
+ | то при первом заходе юзер увидит тумбы 1-10, при 2м тумбы номер 11 - 20. | ||
+ | |||
+ | |||
+ | **Если же у вас на индексе тумбы категорий** то ситуация другая и есть 2 варианта | ||
+ | |||
+ | 1. если у вас например всего 100 категорий, | ||
+ | |||
+ | < | ||
+ | | ||
+ | |||
+ | то на первый заход будут категории | ||
+ | |||
+ | |||
+ | |||
+ | 2. если у вас всего 100 категорий и вы выодите все 100 на индексе | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | в этой ситуации что бы показать другие тумбы надо создать дополнительный комплект тумб категорий. Для этого в сетингах ротации Category thumbs - включаем set 2 (и например еще и set 3). У нас получается 3 комплекта тумб категорий. | ||
+ | |||
+ | |||
+ | в темплейте добавляем номер сета | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | тут надо обратить внимание на set_id=GET_page. И скрипт будет ротировать 3 сета тумб категорий. | ||
+ | |||
+ | |||
+ | ===== Custom Vars for Ads ===== | ||
+ | |||
+ | Если используется один и тот же код для вставки рекламы то я часто вижу что-то вроде | ||
+ | |||
+ | 1. создаем темплейт ads в котором | ||
+ | |||
+ | $ads = '<a href= .. > <img = .. '; | ||
+ | |||
+ | 2. в темплейтах страниц | ||
+ | |||
+ | <? | ||
+ | |||
+ | |||
+ | Проблема в том | ||
+ | |||
+ | - код не кешируется и пхп исполняется каждый раз (такой простой код не особенно добавляет нагрузку, | ||
+ | - если надо поменять рекламу то надо ходить по сайтам и редактировать темплейт, | ||
+ | - клиент может отредактировать на что-то вроде $ads = ' | ||
+ | |||
+ | |||
+ | Если использовать Rotation - CMS -TPL Custom var то можно | ||
+ | |||
+ | - получить переменные для темпелйта в виде < | ||
+ | - Там же можно редактировать эти кастом таги сразу на всем нетворке. Причем как все сразу так и отдельные таги. | ||
+ | - нет проблем с кавычками | ||
+ | |||