Скрыть топики определенного блога из ленты (Решено)

Добрый день.
Нужно скрыть все топики определенного блога из всех лент. Чтобы они были доступны только по ссылке site.ru/blog/название_блога/

Сейчас стоит плагин «Disable topics from the blog», но этого недостаточно т.к. в Новые, обсуждаемые, TOP, Лента и т.д. топики показываются.

Весть поиск перелопатил, пересмотрел все плагины в каталоге. Ничего не нашел.

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

avatar
Там в коде плагина прямо поправьте. В коде стоит исполнение экшена по условию, что-то типа (по памяти)
if (Router::GetAction() == 'index'

Добавьте туда, опять же по памяти, что-то типа
if (Router::GetAction() == 'index' and (Router::GetAction() == 'blog' ...
и т.д. Думаю, что логика понятна?
avatar
Логика понятна, но я далек от програмирования и боюсь там накуралесить)) Но спасибо за направление, все же попробую.
avatar
Путь такой вроде plugins/dtb/classes/modules/topic/mapper/Topic.mapper.class.php
avatar
Если правильно понял, вставил (Router::GetAction() == 'discussed' — error о том, что синтаксис неверный
avatar
Точную строку дайте.
avatar
Было if ((Router::GetAction() == 'index' and !Router::GetActionEvent()) and $sExBlogId = Config::Get('plugin.dtb.blog_id'))

Стало if ((Router::GetAction() == 'index' and Router::GetAction() == 'discussed' and !Router::GetActionEvent()) and $sExBlogId = Config::Get('plugin.dtb.blog_id'))
avatar
))) Ок. Смотрим.
)
Router::GetAction() == 'index'
— это проверка на экшен.
and !Router::GetActionEvent()
— это проверяем, чтобы ни в коме случае ни эвент, а в только главная. Слдеовательно просто убираем эту проверку и всё.
if (Router::GetAction() == 'index' and $sExBlogId = Config::Get('plugin.dtb.blog_id'))
avatar
Работает. Большое спасибо)
avatar
Ниже идет очень плохой совет, лучше оформить в виде топика или допилить топик, а не движок. Но уж как есть:
файл classes/modules/topic/mapper/Topic.mapper.class.php

ищем строку
	protected function buildFilter($aFilter) {
		$sWhere='';


После них вставляем:
		if (isset($aFilter['exclude_blog_id']) && is_array($aFilter['exclude_blog_id'])){
			$sWhere.=" AND t.blog_id NOT IN (".implode(',',$aFilter['exclude_blog_id']).") ";
		}


Потом идем в файл:
classes/modules/topic/Topic.class.php


И в функции GetTopics_ при необходимости добавляем

строку вида
$aFilter['exclude_blog_id'] = Config::Get('exlude_blog_ids');


перед строчками вида
return $this->GetTopicsByFilter($aFilter,$iPage,$iPerPage);


В конфиг добавляем строчку
$config['exclude_blog_id'] = array(blog_id1,blog_id2);
avatar
Все сделал. Не помогло.
avatar
Попробуйте таким образом модицировать код плагина, возможно там эти методы переопределены. Я вам привел фрагмента кода из плагина, который у меня стоит и работает.
avatar
Совет выше помог, вам так же большое спасибо за помощь.
avatar
А что это за плагин «Disable topics from the blog»?
avatar
Поделитесь плагином «Disable topics from the blog»!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.