Похожие записи на основе плагинов Main preview и similar topic

Чтоб не ходить далеко да около сразу покажу конечный результат, а кому понравится — добро пожаловать под кат…

похожие записи

Посмотреть в живую можно здесь деньд.рф/blog/news/468.html

Все это сделано на основе двух плагинов:

«Main Preview»

«Похожие записи в попап окне (Similar topics in popup)»


Для начала качаем оба плагина, ставим на сайт.

С помощью плагина Main Preview создаем превью. Процесс создания довольно долгий и ресурсоемкий, так что если у вас слабый сервер, то скорее всего вы получите сообщение об ошибке. Так как проект «для души», то на выделенный сервер я не расхошеливался пришлось изголяться. Поставил denwer и делал все на локальном сервере. Сайт обязательно необходимо назвать как реальный. Иначе вся затея с переносами будет в пустую…

Так как я планировал использовать crop квадраты в 100 пикселей, то в конфиге этого плага раскоментил следующий код:

$config['size_images_preview']=array(
	
	array(
		'w' => 100,
		'h' => 100,
		'crop' => true,
	)
);


Теперь редактируем под наши нужды плагин Similar topics in popup. Прошу прощения у автора за очередное лазанье под капотом.

Первоначально я изменил хук для вставки.
В самом шаблоне я изменил местоположение хука
в файле \templates\skin\synio\topic_topic.tpl
хук topic_content_end перенес в условие if

{hook run='topic_content_end' topic=$oTopic bTopicList=$bTopicList}
	{/if}


И в плагине использовал именно этот хук.
В файле
\similarpopup\classes\hooks\HookSimilarpopup.class.php
должно получиться так:
public function RegisterHook () {
    $this -> AddHook ('init_action', 'AddStylesAndJS');
    $this -> AddHook ('template_topic_content_end', 'TopicShowSimilar');
  }


Теперь правим шаблон вывода самого плагина:
файл plugins\similarpopup\templates\skin\default\similar.tpl
получился у меня следующим образом
<!-- Similarpopup plugin -->
  {if $aSimilarTopics}
    <div class="SP_ViewTopicEndPlaceToShowPopup"></div>
    
    <div class="SimilarTopicsContainer RoundedCorners5 BoxShadow">
         <h3>{$aLang.plugin.similarpopup.Title}</h3>
      {foreach from=$aSimilarTopics item=oTopic name=nTopicCycle}
        {assign var="oBlog" value=$oTopic->getBlog()}
        {assign var="oUser" value=$oTopic->getUser()}
        <div class="OneSimilarTopicCont {if $smarty.foreach.nTopicCycle.iteration % 2 == 0}even{/if}">
          <div class="LeftSide">
            <img src="{$oTopic->getPreviewImageWebPath('100crop')}""/> {* обратите внимание,
что значения 100crop может и не быть, тогда выведется стандартное превью, сгенерированное плагином Main Preview, но я использовал именно 100 crop, которые были раскомментированы в конфиге этого плагина.*}
          </div>
          <div class="RightSide">
            {if $oTopic->getType()=='link'}
              <a class="topic_title" href="{router page='link'}go/{$oTopic->getId()}/">{$oTopic->getTitle()|escape:'html'}</a>
            {else}
              <a class="topic_title" href="{$oTopic->getUrl()}">{$oTopic->getTitle()|escape:'html'}</a>
            {/if}
            <span class="CommentCount">{$oTopic->getCountComment()}</span>
            
            <br />
            <a href="{$oUser->getUserWebPath()}" class="author">{$oUser->getLogin()}</a>
            →
            <a href="{$oBlog->getUrlFull()}" class="blogtitle">{$oBlog->getTitle()|escape:'html'}</a>
          </div>
        </div>
      {/foreach}
      
    </div>
    
  {/if}
  <!-- /Similarpopup plugin -->


Если количество комментов или еще что-то не нужно — удаляйте, оставляйте только то, что действительно вам нужно.

Теперь курочим файл стилей.
Для создания стандартной картинки — фона я скачал вот это
чудо яблоко
и закинул в папку /images папки плагина с css
plugins\similarpopup\templates\skin\default\css\images

Это «яблоко» можно заменить на что-то альтернативное… Например «зеленое яблоко» Если превьюхи у топика нет, то остается фоновая картинка с яблоком, если превью есть, то оно перекрывает фон.

Теперь непосредственно сам файл стилей, расположенный где-то здесь
plugins\similarpopup\templates\skin\default\css\style.css:

/*
  Similarpopup plugin
  (P) PSNet, 2008 - 2012
  http://psnet.lookformp3.net/
  http://livestreet.ru/profile/PSNet/
  http://livestreetcms.com/profile/PSNet/
*/

div.SimilarTopicsContainer {
  clear: both;
  z-index: 1000;
  border: 8px solid rgba(20, 20, 20, 0.5);
  padding: 20px 40px 20px 20px;
  

  background: #FAFAFA;
  background: rgb(255,255,255, 0.8);
  background: -moz-linear-gradient(top,  rgba(255,255,255,1) 0%, rgba(246,246,246,1) 47%, rgba(237,237,237,1) 100%);
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,1)), color-stop(47%,rgba(246,246,246,1)), color-stop(100%,rgba(237,237,237,1)));
  background: -webkit-linear-gradient(top,  rgba(255,255,255,1) 0%,rgba(246,246,246,1) 47%,rgba(237,237,237,1) 100%);
  background: -o-linear-gradient(top,  rgba(255,255,255,1) 0%,rgba(246,246,246,1) 47%,rgba(237,237,237,1) 100%);
  background: -ms-linear-gradient(top,  rgba(255,255,255,1) 0%,rgba(246,246,246,1) 47%,rgba(237,237,237,1) 100%);
  background: linear-gradient(top,  rgba(255,255,255,1) 0%,rgba(246,246,246,1) 47%,rgba(237,237,237,1) 100%);

}

div.SimilarTopicsContainer h3 {
  color: blue;
  text-align: center;
  font-size: 23px;
  margin: 0 0 17px;
  text-shadow: 0 1px 1px #FFFFFF;
}

/* similar topics list */

div.SimilarTopicsContainer div.OneSimilarTopicCont {
  margin-bottom: 10px;
  min-height: 100px;
  clear: both;
}

div.SimilarTopicsContainer div.OneSimilarTopicCont.even {}

div.SimilarTopicsContainer div.OneSimilarTopicCont:last-child {
  margin-bottom: 0;
}

div.SimilarTopicsContainer div.OneSimilarTopicCont div.LeftSide {
  float: left;
  margin: 5px;
  height: 100px;
width: 100px;
  margin-right: 20px;
  background-image: url(images/100.png);
}

div.SimilarTopicsContainer div.OneSimilarTopicCont div.LeftSide img {
 
}

div.SimilarTopicsContainer div.OneSimilarTopicCont div.RightSide {
  overflow: hidden;
  line-height: 14px;
}

div.SimilarTopicsContainer div.OneSimilarTopicCont div.RightSide a {}

div.SimilarTopicsContainer div.OneSimilarTopicCont div.RightSide a.author {
  color: #555555;
  font-size: 11px;
  font-weight: bold;
}

div.SimilarTopicsContainer div.OneSimilarTopicCont div.RightSide a.blogtitle {
  color: #777777;
  font-size: 11px;
}

div.SimilarTopicsContainer div.OneSimilarTopicCont div.RightSide a.topic_title {
  font-weight: bold;
}

div.SimilarTopicsContainer div.OneSimilarTopicCont div.RightSide span.CommentCount {
  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAARCAYAAADHeGwwAAAACXBIWXMAAAsSAAALEgHS3X78AAACPUlEQVQ4jbVUS2obQRB99WkPseVgfQwGgb3wIhtdIetAtjlAIMtcIhCSG+QY2SaH8CoBrwLCYGQM9kIgImnGM1WdhWfklvVxssiDpmemu+vVe1U9dHl5if8JTV/cnQAwADDzv8aypwiYmeOmjX8BBhDrsUJAAHw8HneKohioqhDRQkWqZs13AjANIfwIIRQrCtydmdmHw+GL0Wj0rd1un4pIJCJSVYgImBkiAiKCqi7NtWqaTCbf2+32myzL8po0NrYQANze3n7odDqnqnonIh5CMBFZGqq6bvYsy8rd3d3XeZ6/rROXxxYhhHBkZjAzERFxdzAz3B2qCneHiKzMtU1ehzlKLF8mMNteW1Xdtoc2LaQEBDwUsQkW40NTbGndZtMK0YLA/V4lES0FSwnWPT+VgKYHGpJNSNfTwNuQWhQf2/MYTXHXoLF3hTW1iJgZZVlGEYlNlk3QppPcnUQkVRT9/jKhafkU3GQ0nU5/5nkOEaE6I6L7glB9kJiZYoxmZqiqqrGJRETzPEdVVec18UKmou7hwWDw8ezsrG9mr0TE6oOLWysi0d2z/f39Z6rqZkZm5rPZbArAmPnLycnJVwBg5oXHlP6u5/M5l2XZijHSxcUFYoyLuqhqNZ/Pn9/c3HzudrvvDg4OcHV1dd7tdl8eHh7e9Xq9WQhB6oRjqgAAMB6P6fr6GlmWTdwdOzs7AMAxRgUgMcawt7f3u9/vvx+NRr/M7JO7i5nlRVHkw+GQAJi7o9Vq4fj4GADwB9JmMIxoDNeJAAAAAElFTkSuQmCC) no-repeat left center transparent;
  color: green;
  display: inline-block;
  height: 17px;
  padding-left: 25px;
  line-height: 18px;
}

/* misc */

.RoundedCorners5 {
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  -khtml-border-radius: 5px;
  border-radius: 5px;
}

.RoundedCorners20 {
  -moz-border-radius: 20px;
  -webkit-border-radius: 20px;
  -khtml-border-radius: 20px;
  border-radius: 20px;
}

.BoxShadow {
  -moz-box-shadow: 0 0 6px #555;
  -webkit-box-shadow: 0 0 6px #555;
  box-shadow: 0 0 6px #555;
}



Вот вроде и все.
Ах, да!
Чуть не забыл.
Фиг вы что увидите, пока не почистите кеш шаблона:
у меня это папка \templates\cache

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

avatar
Спасибо, годно
avatar
Благодарю!
avatar
Использовать наложение картинок — «не есть гут», но другого способа я не знаю.
Вот если бы гуру подсказали возможность проверки на наличие превью, тогда можно было бы прописать условие:

if превью есть
вывести превью
else взять стандартную картинку (или еще лучше рандомную из списка)

Вот это было бы гут
avatar
то что искал. спасибо
avatar
поторопился. оказалось у меня несколько другой плугин.
avatar
случайно добавился комент. жаль не отредактировать…

livestreetcms.com/addons/view/55/ — этот плугин

у них структура похожая, но я все равно не смог добиться работоспособности.

Может я неправильно понял модификацию — \templates\skin\synio\topic_topic.tpl

слишком вскользь о ней упомянули. там пару параметров /if. ставил правда перед всеми. результата 0. папку tmp чистил. миниатюры создавал.
avatar
сорри все заработало. блин как теперь весь этот диалог с самим собой удалить? :)
avatar
Могу я вмешаться… Но голоса в моей голове говорят, что все должно работать…
А последний коммент это подтверждает.
avatar
хотел бы заметить что оформление плагина на твоем сайте желает быть лучше. вот мои мысли по этому поводу: livestreet.ru/blog/14148.html
avatar
Вообще не работает. В хуке даже метода такого нет — TopicShowSimilar. Есть topicShowed. Пишу
$this -> AddHook ('template_topic_content_end', 'topicShowed', __CLASS__);

Ничего не выводится. Походу надо тут код менять:
$this->Viewer_AddBlock('right', 'similarTopics', array('plugin' => 'similar', 'oTopic' => $aVars['oTopic']
                    ), Config::Get('plugin.similar.topics_block_priority')
            );

Ставил
$this->Viewer_Assign('aSimilarTopics', $aVars['oTopic']);
		return $this->Viewer_Fetch(Plugin::GetTemplatePath(__CLASS__).'blocks/block.similarTopics.tpl');

Тоже не работает. Помогите пожалуйста. Полдня долбаюсь, близок к самоубийству ) Думаю тут изменений одна-две строчки. Но я пока туплю.
avatar
Ну что, никто не хочет помочь? Кто понимает в этой цмс, затратит 5 минут максимум, чтобы подсказать. Я полдня долбался с этой хренью, но я цмс пока плохо знаю.
avatar
avatar
А потом удивляетесь, почему сообщество загнивает.
avatar
Короче все сделал. Тут — написано НЕПРАВИЛЬНО и ничего не работает. Тут — livestreet.ru/blog/5254.html — написано ПРАВИЛЬНО и все работает
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.