Прошу помощи в доведении до ума слайдера

Уважаемое сообщество, нужна помощь в организации слайдера на сайте. За решение вопроса готов заплатить.

Ниже описание того, что мне нужно:

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

Вывод слайдера сделал отдельным блоком, а вот прописать в блоке фильтр на вывод постов из определенного блога, да в количестве трех штук никак не выходит. Как вытянуть картинку из поста вообще не представляю.

Оговорюсь сразу: поиском пользовался, у меня даже и решение для 0,4 версии было (по фильтру постов), но в 0,5 не работает; давать наводки куда копать тоже не надо — их находил много, но банальная нехватка знаний в области программирования не позволяет ими воспользоваться. Так что необходимо готовое решение (куда и что вставить) за которое я готов немного заплатить.

PS: Всех с праздниками! :)

23 комментария

avatar
$aBlogs=$this->Topic_GetTopicsByBlogId('_ID_блога', 1,3)
avatar
сори конечно же $aTopics=$this->… )))
avatar
$aTopics=$this->Topic_GetTopicsByBlogId('_ID_блога', 1,3);
avatar
Похожая конструкция у меня была, вот только не пойму как в блок ее впихнуть. Сейчас у меня там следующее:
{foreach from=$aTopics item=oTopic}

{foreach from=$aTopics item=oTopic}
{assign var="sTopicTemplateName" value="topic_`$oTopic->getType()`.tpl"}
<a href="{$oTopic->getUrl()}" class="title-topic"><img src="{$oTopic->getTopicPreviewPath(630,250)}" alt="" title="{$oTopic->getTitle()|escape:'html'}" /></a>
{/foreach}

т.е. взял просто код из topik_list.tpl
avatar
если в сайдбар
отдельно блок добваить то с слодержимим
class BlockИмяблока extends Block
{

    public function Exec()
    {
	
	$aTopics=$this->Topic_GetTopicsByBlogId('_ID_блога', 1,3);
	$this->Viewer_Assign("aTopics", $aTopics);
    }

}
и файл шаблона в папку со скином

если плагином то
class PluginИмяПлагина_BlockИмяблока extends Block
{

    public function Exec()
    {
	
	$aTopics=$this->Topic_GetTopicsByBlogId('_ID_блога', 1,3);
	$this->Viewer_Assign("aTopics", $aTopics);
    }

}

ну а если например над топикамить то это уже хук делать смотрите в доках хуки и вешайте тот же код на хук template_content_begin
avatar
тот же код — это
$aTopics=$this->Topic_GetTopicsByBlogId('_ID_блога', 1,3);
        $this->Viewer_Assign("aTopics", $aTopics);
avatar
Вывожу просто в блок. Вот полностью все, что в нем сейчас есть:
class BlockSlider extends Block
{
    public function Exec()
    {
        $aTopics=$this->Topic_GetTopicsByBlogId('7', 1,3);
        $this->Viewer_Assign("aTopics", $aTopics);
    }
}


<div class="slider-n">

	<div class="slider-wrapper theme-default">
		<div id="slider" class="nivoSlider">
			{foreach from=$aTopics item=oTopic}
			{assign var="sTopicTemplateName" value="topic_`$oTopic->getType()`.tpl"}
				<a href="{$oTopic->getUrl()}" class="title-topic"><img src="{$oTopic->getTopicPreviewPath(630,250)}" alt="" title="{$oTopic->getTitle()|escape:'html'}" /></a>
			{/foreach}
		</div>
	</div>

	<script type="text/javascript" src="{cfg name="path.static.skin"}/nivo/jquery.nivo.slider.pack.js"></script>
	<script type="text/javascript">
		$(window).load(function() {
			$('#slider').nivoSlider({
				pauseTime: 5000, // How long each slide will show
			});
		});
	</script>

</div>

Начало выводится простым текстом.
avatar
Имя файла шаблона блока — block.slider.tpl
avatar
можно ссылку на слайдер?

P.S. по теме
1.создать блок класс
2.указать вывод блока в конфиге
3.создать блок в шаблоне
avatar
nivo.dev7studios.com/
Так блок создан, его вывод организован, проблема в том, чтобы в файл блока правильно вписать фильтр на вывод 3х топиков из определенного блока + картинку из поста вытягивать…
avatar
в сам фай блока не нужно ничего вписывать
avatar
Давайте по пунктам:
1. Создать Block.Slaider.class.php, в него прописать:
class BlockSlider extends Block
{
    public function Exec()
    {
        $aTopics=$this->Topic_GetTopicsByBlogId('7', 1,3);
        $this->Viewer_Assign("aTopics", $aTopics);
    }
}

и засунуть его в classes/blocks/
2. Создать block.slaider.tpl, прописать в него:
{foreach from=$aTopics item=oTopic}
{assign var="sTopicTemplateName" value="topic_`$oTopic->getType()`.tpl"}
название топика, картинка и проч.
{/foreach}

3. в конфиге указать вывод блока
Все верно?
avatar
Создать BlockSlaider.class.php, в него прописать:…

ну и соответственно правило для блока в конфиг
avatar
ага, ясно, попробую.
А каким образом картинку можно выдернуть из поста?
Сейчас использую плагин превьюшек, но наверное можно и так как-нибудь выдергивать первое изображение из топика?
avatar
регулярным выражением, но лучше поставить плагин topicavatar
avatar
а чем лучше? просто не хочется плодить лишних изображений
avatar
нужно повесить код
$aTopics=$this->Topic_GetTopicsByBlogId('_ID_блога', 1,3);
        $this->Viewer_Assign("aTopics", $aTopics);
        return $this->Viewer_Fetch('ИмяФайлаШаблона.tpl');
выше на хук template_content_beginи положить файл с шаблоном в папку шаблона посмотри на примере \classes\hooks\HookStatisticsPerformance.class.php
avatar
я не совсем в контент вкручиваю, между хедером и меню создал дополнительную зону, куда блоком и хочу выводить
avatar
<?php
     
class  BlockTopics extends Block
    {
        public function Exec()
        {
            $oBlogNews = $this->Blog_GetBlogByUrl('news');
            $aTopicsNews = $this->Topic_GetTopicsByBlogId($oBlogNews->getId(), 1, 3, array('blog'), false);                
            $this->Viewer_Assign('oBlogNews', $oBlogNews);
            $this->Viewer_Assign('aTopicsNews', $aTopicsNews['collection']);
            
            }
        }

Где $oBlogNews = $this->Blog_GetBlogByUrl('news') (news) — ссылка блога

Вывод:
{foreach from=$aTopicsNews item=oTopic}
<img class="topic_preview" src="{$oTopic->getTopicPreviewPath(90,90)}" style="width: 90px">
{/if}
<a href="{$oTopic->getUrl()}" style="color: #828282">  {$oTopic->getTitle()} </a>
{/foreach}

+ использовал плагин превью поэтому такой код вывода изображения
avatar
{foreach from=$aTopicsNews item=oTopic}
<img class="topic_preview" src="{$oTopic->getTopicPreviewPath(90,90)}" style="width: 90px">
{/if}
минус {/if} )
avatar
конечно не внимательность моя не то вписал )
{if $oTopic->getTopicPreview()}
	<img class="topic_preview" src="{$oTopic->getTopicPreviewPath(90,90)}" style="width: 90px">
{/if}
avatar
Плагин «Preview Topic» ставил его что бы не плодить изображения т.к. он (В случае, если не была указана картинка, плагин ищет первую картинку в посте и вставляет ее в качестве превью.) останеться только задать в конфиге размеры изображения + на выводе выставить их
avatar
да, он ищет первую картинку, но так как забираем в слайдер только картинки из одного блога, получаем еще и множество превьюшек сгенерированных для всех записей с изображениями со всех блогов…
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.