Скрываем закрытые блоги из общего списка

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

Сейчас общий список выглядит так: localhost/blogs/

Задача убрать закрытый блог из списка.

За отображение блогов в общем списке отвечает функция GetBlogsRating, значит нам нужно немного изменить запрос и добавить в исключение блоги у которых тип установлен как close (закрытые).
проследуем classes\modules\blog\mapper\Blog.mapper.class.php

и найдем запрос:
public function GetBlogsRating(&$iCount,$iCurrPage,$iPerPage) {		
		$sql = "SELECT 
					b.blog_id													
				FROM 
					".Config::Get('db.table.blog')." as b 									 
				WHERE 									
					b.blog_type<>'personal'									
				ORDER by b.blog_rating desc
				LIMIT ?d, ?d 	";		
		$aReturn=array();
		if ($aRows=$this->oDb->selectPage($iCount,$sql,($iCurrPage-1)*$iPerPage, $iPerPage)) {
			foreach ($aRows as $aRow) {
				$aReturn[]=$aRow['blog_id'];
			}
		}
		return $aReturn;
	}


в запросе есть исключение (кроме персональных (type personal))
WHERE 									
					b.blog_type<>'personal'

вот и допишем еще и закрытые
WHERE 									
					b.blog_type<>'personal'
					and
					b.blog_type<>'close'	

и всё.

В результате будет вот так:
public function GetBlogsRating(&$iCount,$iCurrPage,$iPerPage) {		
		$sql = "SELECT 
					b.blog_id													
				FROM 
					".Config::Get('db.table.blog')." as b 									 
				WHERE 									
					b.blog_type<>'personal'
					and
					b.blog_type<>'close'									
				ORDER by b.blog_rating desc
				LIMIT ?d, ?d 	";		
		$aReturn=array();
		if ($aRows=$this->oDb->selectPage($iCount,$sql,($iCurrPage-1)*$iPerPage, $iPerPage)) {
			foreach ($aRows as $aRow) {
				$aReturn[]=$aRow['blog_id'];
			}
		}
		return $aReturn;
	}

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

avatar
А не проще просто в шаблоне, в списке блогов, в начале проверку делать на {if $oBlog->getType() != 'close'}?
Соответственно, если блог закрытый, то не выводить его.
Или я чего недопонял?
  • _et
  • +4
avatar
будет много пустых страниц, имхо или по три пять блогов на странице — остальные не будут показаны)
avatar
Ну да. Хотя это только у тех будет, у кого блогов много.
Может решение такое лучше через плагин делать…
В общем, я к тому вел, что лишний раз править файлы ядра не очень как-то. При обновлениях это все аукнется ;)
avatar
типс анд трикс :)
Можно и в плагин запихнуть с переопределением функции.
avatar
Не самое удачное решение. Почему бы это проверку не делать в шаблоне, дабы не нарушать работу плагинов, которые используют эту функцию?
avatar
Я буду обновлять страницу перед отправкой комментария.
avatar
Оооо, спасибо давно искал!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.