LsBlocks: Как вывести публикации из определенных блогов в разные места в шаблоне




1.Создать файл BlockRelizs.class.php в /classes/lsblocks/(где Relizs, можете вставить свое название, меняйте во всех файлах слова Relizs или relizs) с кодом
<?php
/*---------------------------------------------------------------------------
 *	author: k2fl
 *	LiveStreet version: 0.4.1
 *	plugin: LsBlocks
 *	version: 1.1
 *	http://livestreet.ru/profile/k2fl/
 *	license: GNU GPL v2, http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 *--------------------------------------------------------------------------*/

/*
 *	Блок: Релизы
 */
class PluginLsblocks_BlockRelizs extends Block {

	public function Exec() {
        $mTime = Config::Get('plugin.lsblocks.relizs.time');
    	if ($aRelizs = $this->PluginLsblocks_Unit_GetLastTopicsByBlogs(date("Y-m-d H:00:00", time()-($mTime > 0 ? $mTime : 60*60*24*350*100)), Config::Get('plugin.lsblocks.relizs.blogs'), Config::Get('plugin.lsblocks.relizs.count'))) {
    		$this->Viewer_Assign('aRelizs', $aRelizs);
    	}
	}
}
?>

2.В config.php добавить
$config['relizs'] = array(
	'count' => 7, // кол-во выводимых публикаций
	'time' => 0, // Время в минутах, за которое выбираются топики. Если не задано, то топики выводятся за все время.
	'blogs' => array(62), // список id-и блогов из которых выводить публикации
);


и
'Relizs'=>array('params'=>array('plugin'=>'lsblocks'), 'priority'=>60),


3.Создать файл block.Relizs.tpl в /templates/skin/default/ с кодом

<div class="block blogs">
	<div class="tl"><div class="tr"></div></div>
	<div class="cl"><div class="cr">
		<h1 style="background:url(/templates/skin/new/images/dota.gif) no-repeat right 5px">Гайды</h1>

		<div class="block-content">
		<ul class="list">
		{foreach from=$aRelizs item=oTopic name="lst"}
					{assign var="oUser" value=$oTopic->getUser()}
					{assign var="oBlog" value=$oTopic->getBlog()}
	<li><div class="total">{$oTopic->getCountRead()}</div><a href="{$oTopic->getUrl()}" class="stream-topic">{$oTopic->getTitle()}</a></li>
	{/foreach}
</ul>

		</div>
<div class="right"><a href="{router page='blog/gaid'}">Все гайды</a> | <a href="{router page='rss'}blog/gaid/">RSS</a></div>
	</div></div>
	<div class="bl"><div class="br"></div></div>
</div>


— Можно так создать несколько выводов и раскидать их по блокам
1.В config.php добавить
'top' => array(
                'Relizs'=>array('params'=>array('plugin'=>'lsblocks'), 'priority'=>60),

),


2.В шаблоне (где вы хотите вывести) вставить
{if isset($aBlocks.top)}
                        {foreach from=$aBlocks.top item=oBlock}
                                {if $oBlock.type == 'block'}
                                        {insert name="block" block=`$oBlock.name` params=`$oBlock.params`}
                                {/if}
                                {if $oBlock.type == 'template'}
                                        {include file=`$oBlock.name` params=`$oBlock.params`}
                                {/if}
                        {/foreach}
                {/if}
{/if}


p.s. не проверял работает ли, если это делать блокировка, которая не позволяет выводить эти топики в прямой эфир, а именно
'hide_in_stream' => true, // указывает не выводить данные публикации в Прямом эфире (чтобы не получалось масло-масленное)

10 комментариев

avatar
Можно ли как-то вивесты публикацию конктерную публикацию а не последнюю?
avatar
*конкретную
avatar
Вопрос решел — в блоге 1 пост =)
avatar
можно еще через id публикации вывести, но если ты хочешь эту публикацию менять, то будет геморой, придется каждый раз лазить в шаблон и менять.
avatar
А плагином есть ли такое решение?
avatar
Помогите, всё делаю по инструкции, плагин lsnlocks соит, все стандартные модули этого плагина работает, но как только в настройках добавляю строчку
'Relizs'=>array('params'=>array('plugin'=>'lsblocks'), 'priority'=>60),

Выводится ошибка:
SQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 13 at /var/www/virtual/planetsecurity.org.ua/htdocs/ls/plugins/lsblocks/classes/modules/unit/mapper/Unit.mapper.class.php line 54
Array ( [code] => 1064 [message] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 13 [query] => SELECT topic_id FROM livestreet_topic WHERE topic_publish = 1 AND topic_date_add >= '1915-04-01 19:00:00' AND topic_rating >= 0 ORDER BY topic_id DESC LIMIT 0, NULL [context] => /var/www/virtual/planetsecurity.org.ua/htdocs/ls/plugins/lsblocks/classes/modules/unit/mapper/Unit.mapper.class.php line 54 )
  • Oden
  • 0
avatar
Сорри, вопрос решён )
avatar
Как скрыть все стандартные боки плагина lsblocks, и при этом оставить только block.Relizs?
  • Oden
  • 0
avatar
легко и непринужденно: в файле config.php плагина после строчки
Config::Set('block.rule_index_blog.blocks', array
'right' => array((

оставте только те блоки, которые вам нужны.
avatar
Config::Set('block.rule_index_blog.blocks', array(
	'right' => array(
		'stream'=>array('priority'=>100),
		'tags'=>array('priority'=>60),
		'blogs'=>array('params'=>array(),'priority'=>50),
		'Relizs'=>array('params'=>array('plugin'=>'lsblocks'), 'priority'=>60),
		
	)
));
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.