Сайдбар в Livestreet – вывод и очередность блоков
Sunday, 15 Apr 12 в 23:41
Так уж сложилось, что тематика Livestreet завлекла меня еще на один день. Нельзя сказать, что это было приятное времяпровождение, просто я решил все же “добить” имеющиеся задачи и довести работу над блогом про гаджеты до конца. Собственно, своими знаниями за сегодня я с вами и поделюсь. Напомню только, что ранее в блоге вы также можете найти посты про шаблон Livestreet (+впечатления от системы), а также механизм добавления Sape в Livestreet. Не следует переживать, что блог вдруг резко и надолго стал посвящен данной CMS – обещаю, сегодня последняя статья про нее:) Поговорим про сайдбар (боковую колонку) сайта.
Файлы шаблона для моего сайта находятся в директории /templates/skin/social-jquery. Действуя по законам логики я отыскал, как мне казалось, файл сайдбара sidebar.tpl, который в том же wordpress позволяет задавать отображение всех нужных блоков. На самом же деле в нем был совершенно стандартный и общий для системы код:
<div id="sidebar"> {if isset($aBlocks.right)} {foreach from=$aBlocks.right item=aBlock} {if $aBlock.type=='block'} {insert name="block" block=$aBlock.name params=$aBlock.params} {/if} {if $aBlock.type=='template'} {include file=$aBlock.name params=$aBlock.params} {/if} {/foreach} {/if} </div>
Методом тыка в той же директории /templates/skin/social-jquery нашел некоторые файлы, что могли мне помочь – блок тегов (block.tags.tpl), комментариев (block.stream.tpl) и т.п. В каждом из них можно было добавить свой код, например, для той же биржи Sape, но очередность и новые элементы мне не поддавались.
Для начала по простому добавил в конец сайдбара (файл sidebar.tpl) вывод тегов:
<div class="block stream" id="block_stream"> <div class="sidetags"> {insert name="block" block=tags} </div> </div>
Как видите, это оказалось не сложно. Структура облака задана в block.tags.tpl, а код выше данный файл и отображает. Заметьте синтаксис: в insert – указываете имя block, а потом нужный вам элемент tags. По аналогии, думаю, можно выводить и остальные блоки, если понадобиться. Тем не менее, этот вариант не совсем правильный.
Расположение тегов в самом конце сайдбара меня не особо устраивало, хотелось поменять очередность блоков. Но в Livestreet новичку сделать это нереально сложно – экшены, модули, хуки, блоки, разбираться во всем этом можно вечно. Безусловно, я искал решение на тематических блогах и форумах, но перепробовав 4-5 вариантов, все равно ничего не добился. В принципе, создается впечатление, что решить ту или иную задачу можно разными способами, но разобраться в специфике CMS и шаблона так как это можно с wordpress не суждено. Под конец дня мне казалось, будто я пересмотрел добрую половину файлов системы и шаблона, перепробовав все, что только можно. К счастью, нужный вариант все же нашелся.
Заходим в файл системы config.php, который располагается в директории с таким же названием (config). Здесь есть следующий код:
$config['block']['rule_index_blog'] = array( 'path' => array( '___path.root.web___/blog$', '___path.root.web___/blog/*$', '___path.root.web___/blog/*/page\d+$', '___path.root.web___/blog/*/*\.html$', '___path.root.web___/blog/*\.html$', '___path.root.web___/top(|(/.+))$', ), 'action' => array( 'index', 'new' ), 'blocks' => array( 'right' => array('stream'=>array('priority'=>100),'blogs'=>array('params'=>array(),'priority'=>150),'tags'=>array('priority'=>120)) ), 'clear' => false, );
Место с “blocks” задает какие именно блоки будут отображаться в сайдбаре (right), причем для каждого из них определяется приоритет. Есть список категорий (blogs), комментарии (stream) и теги (tags). Сами же файлы шаблона с HTML кодом отображаемого в этих элементах следует уже искать в директории шаблона – /templates/skin/social-jquery – block.blogs.tpl, block.stream.tpl, block.tags.tpl и т.п.
Казалось бы не особо сложно, но это очередность только для главной страницы, чуть ниже в файле конфига config.php имеются и другие варианты. Так, например, на странице тегов у меня отображалось только облако без категорий и комментариев, поэтому исходный код заменил на:
$config['block']['rule_tag'] = array( 'action' => array( 'tag' ), 'blocks' => array( 'right' => array('blogs','tags','stream') ), );
Здесь, почему-то, в коде элементы сайдбара просто выводились по порядку без приоритетов. Много в Livestreet каких-то непонятных моментов. За примером далеко ходить не нужно. Выше я уже рассказал, что задал расположение блоков сайдбара для главной, а заодно и страницы категорий + теги. Попытки сделать что-то с полным отображением поста (топика) никак не завершались успехом. Признаться я уже было думал публиковать пост без этого, как в последний момент наткнулся на плагины.
Сначала пытался использовать в качестве “зацепки” тот факт, что на странице с постом отображается блок “Похожие статьи” (модуль similar), но просмотрев абсолютно все его файлы, ничего не нашел. И лишь потом меня осенило – а может все дело в модуле, который заменяет обычные URL страниц на красивые ссылки (NiceURL) – ведь в конфигах часто проскальзывала привязка в URL. И что бы вы думали – открываю директорию plugins/niceurl/config, в ней файл config.php и нахожу код:
/** * Настройка блоков для отображения на странице топиков */ $aBlocks=array( array( 'group' => 'right', 'name' => 'stream', 'params' => array(), 'priority' => 50, ), array( 'group' => 'right', 'name' => 'blogs', 'params' => array(), 'priority' => 150, ), array( 'group' => 'right', 'name' => 'tags', 'params' => array(), 'priority' => 100, ), );
Собственно, знакомые уже приоритеты и названия блоков – можно добавлять новые и менять их порядок. И главное по простому все так, с описанием и комментариями в коде… но скажите кто мог изначально догадаться, что пройдя путь от файлов шаблона, конфига самой Livestreet, нужно заглянуть именно сюда?
Поставив точку в эпопеи разбора шаблона Livestreet испытываю двоякие чувства. С одной стороны, маленькую крохотную радость, что все разрешилось, с другой – негодование от количества потраченного времени. Хотя проблема даже не во времени, а в том, что я встретил на своем пути. Чем-то это напомнило настройку VaM Shop, но там пришлось возиться исключительно с шаблоном, здесь же все намного сложнее, наворочено столько всего, что кошмар – переменные, настройки, коды слились воедино… Возможно специалисту разобраться не так сложно, но новичку… Новичку, я бы советовал дважды подумать, чем с этим связываться. Хотя для справедливости следует заметить, что поднять социальную сеть на других CMS может оказаться еще более сложной задачей. Ну и, конечно, Smarty – зло.
P.S. Скоро лето, а значит нас ждут отпуска, морские путешествия и пляжный отдых о котором мы все так долго мечтали длинными зимними вечерами, скорее бы уже!
На сайте Electrostancii.com.ua найдете интернет магазин где представлены дизельные генераторы и различные электростанции с подробным описанием и возможностью заказа.

Чем только я не занимаюсь, находясь в роли фрилансера. Вот нашлась работа по созданию и настройке Интернет магазина. Сделать нужно было быстро, поэтому вникать в изучение новой админки и движка не хотелось, а с VaM Shop был более-менее знаком. Именно поэтому остановился на нем. Вообще магазин VaM Shop основан на двух других osCommerce и xt:Commerce, является в некотором роде их модификацией. Плюсом для меня была полностью русифицированная версия системы и наличие небольшого архива с шаблонами (который я предварительного скачал в другом месте). Как потом оказалось, все не так просто.




