Улучшение "Популярных статей"

/ Просмотров: 2384

В продолжение комментария о плагине "Популярные статьи". В данном плагине запрос к БД осуществляется с помощью кода:

$CI = & get_instance();
$CI->db->select('page_slug, page_title, page_id, page_view_count, page_date_publish');
$CI->db->where('page_status', 'publish');
$CI->db->where('page_view_count > ', '0');
if ( $options['page_type'] ) $CI->db->where('page_type_id', $options['page_type']);
$CI->db->where('page_date_publish <', date('Y-m-d H:i:s'));
$CI->db->order_by('page_id', 'desc');
$query = $CI->db->get('page');

Как добавить условие, чтобы выборка осуществлялась только из конкретной рубрики?

В плагине "Последние публикации" подсмотрела, что условие выбора рубрики осуществляется с помощью кода:

$CI->db->join('cat2obj', 'cat2obj.page_id = page.page_id', 'left');
$CI->db->where_in('cat2obj.category_id', 'XXX');

Как его интегрировать в "Популярные записи"?

Комментариев: 6 RSS

Катя, так просто код не соединить, ибо надо немного переделать php-код формирования запроса, чтобы происходила декларация таблицы с алиасом page. А так то вы верно нашли фрагмент с join.

Катя, примерно такой код.

Оригинальные строки кода плагина закомментированы.

$CI = & get_instance();
 // $CI->db->select('page_slug, page_title, page_id, page_view_count, page_date_publish');
 $CI->db->select('page_slug, page_title, page.page_id, page_view_count, page_date_publish');
 $CI->db->where('page_status', 'publish');
 $CI->db->where('page_view_count > ', '0');
 if ( $options['page_type'] ) $CI->db->where('page_type_id', $options['page_type']);
 $CI->db->where('page_date_publish <', date('Y-m-d H:i:s'));
 $CI->db->order_by('page_id', 'desc');
 // $query = $CI->db->get('page');
 $CI->db->from('page');
 $CI->db->join('cat2obj', 'cat2obj.page_id = page.page_id');
 $arg['include_cat'] = array(1,4); // выводим для 1й и 4й категории, нужно прописать как опцию 
 $CI->db->where_in('cat2obj.category_id', $arg['include_cat']);
 $query = $CI->db->get();

О! Спасибо, searchingman!!! Вы как всегда, в своем репертуаре, все на высоте! =))) Думала, что вы забросили уже давно maxsite. Приятно, что не покидаете нас =)))

Код проверен, работает!

Катя, решил перенести сюда ваш вопрос к материалу.

Вообще идея такая: выводить плагин на 2 типах страниц - на главной и на страницах рубрик. Для главной все понятно, работает в дефолтном режиме. А вот для рубрик желательно, чтобы популярные записи показывались только из этой рубрики.
Другой вопрос по алгоритму плагина. Он выводит популярные записи в зависимости от количества просмотров? За какой период он считает количество просмотров?

Очень интересная задача. Но я пока не вникал в работу плагина популярных статей. Нужно время на ответ. Я так понимаю, что часть ответа вы уже получили от searchingman. Уточните, что ещё нужно?

ЗЫ: Прошу прощения, что отвечаю с задержкой - реально много работы, а ваши вопросы как всегда требуют сил и времени на формулирование ответа, которых увы не так много grin

ЗЗЫ: Если у вас получилось реализовать плагин для обозначенной задачи, то хорошо бы выложить в паблик, а то и вообще добавить правки в дистрибутив...