Онлайн заработок, создание и монетизация сайтов, веб-разработка, SEO и SMO продвижение, фриланс, партнерки, полезные сервисы вебмастерам, блоггинг.

Профессиональные плагины для Wordpress
Главная » Web разработка » CMS » Сайдбар в Livestreet — вывод и очередность блоков

Сайдбар в Livestreet — вывод и очередность блоков

Сайдбар в LivestreetТак уж сложилось, что тематика 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 найдете интернет магазин где представлены дизельные генераторы и различные электростанции с подробным описанием и возможностью заказа.

15.04.12

Категории: CMS, Web разработка.

Теги: , , , , ,

5 Comments
  1. ort

    Если изначально потратить 15 минут на чтение конфига config.php, то можно в итоге сэкономить кучу времени. А если еще понимать, что различные плагины в силу своей специфики могут переопределять основной конфиг и иметь свой, то все сводится к правки конфигов.
    И правка основного конфига config.php плохая практика — все изменения нужно вносить в config.local.php (если нет — копировать нужные параметры), это позволит избежать проблем при обновлении движка.

  2. Tod

    ort, в принципе, с основного конфига я и начинал, про переопределения тоже подумывал, но слишком много информации сразу и слишком много нюансов, это очень запутывает. За пару часов, как я хотел, разобраться не получилось:)

  3. zedget

    Если что-то очень не получается — следует поотключать плагины и попробовать снова, т.к. некоторые плагины делегируют часть настроек и/или кода.

  4. Василий

    zedget все верно, часто бывает так, что плагины конфликтуют, если их немного, можно попробовать по одному (два-три) выключать их, и смотреть что изменится

  5. Vladimir Vladimirovich

    Пытаюсь в своем шаблоне найти как в сайдбаре перемещать блоки. Эта статья и комментарии подсказали ,что нужно обратить внимание на плагины, за что большущее спасибо. Буду пробовать.

Добавить комментарий

Ваш e-mail не публикуется. Обязательные поля помечены *
Если вы комментируете впервые, то текст будет отправлен на модерацию.