MaxHub
Служба Заботы MaxSite CMS

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

Вопросы-ответы / 25 марта 2015

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

$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
  1. Катя, так просто код не соединить, ибо надо немного переделать php-код формирования запроса, чтобы происходила декларация таблицы с алиасом page. А так то вы верно нашли фрагмент с join.

  2. Илья, подскажите пожалуйста, как переделать? "Метод тыка" тут не проходит...

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

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

    $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();
  4. О! Спасибо, searchingman!!! Вы как всегда, в своем репертуаре, все на высоте! =))) Думала, что вы забросили уже давно maxsite. Приятно, что не покидаете нас =)))

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

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

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

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

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

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

  6. Какой способ подсчета количества просмотров выбрать? http://s017.radikal.ru/i431/1504/8a/293e82324b21.png

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Вход / регистрация или войти без комментирования
  Имя и сайт используются только при регистрации

Авторизация MaxSiteAuth. Войти через loginza

(обязательно)