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

Как организовать вывод случайных записей на главной в MaxSite?

Вопросы-ответы / 1 августа 2016

Вывод случайных записей на главной в MaxSite

Хочу сделать выплывающий блок снизу сайта, где будут размещены несколько случайных записей с миниатюрами.

Бьюсь уже второй день. Так как в PHP я разбираюсь на уровне скопировал вставил smile

Уже и с page-other-pages и с плагина случайных записей пробовал выдрать. Но знаний не хватает.

Может у кого есть код для вставки случайных записей, что бы он работал на главной странице? Желательно, что бы так же можно было вставить и миниатюры.

Помогите пожалуйста.

Комментариев: 5
  1. Можно сделать. Как вариант вызывать виджет. Ибо виджеты можно выводить не только в боковом меню, а там допилка под потребности и подцепить js и css. Это я вижу как-то так. У кого еще какие варианты?

  2. Сергей, у меня получился такой код:

    $limit = 3;
     $thumb_width = 300;
     $thumb_height = 200;
      
     $CI = & get_instance();
     
     $CI->db->select('mp.page_id, mp.page_title, mp.page_slug, mp.page_content, mm.meta_value img');
     $CI->db->from('mso_page mp');
     $CI->db->join('meta mm', 'mm.meta_id_obj = mp.page_id', 'left'); 
     $CI->db->join('page_type', 'page_type.page_type_id = mp.page_type_id');
     $CI->db->where('mp.page_date_publish < ', 'NOW()', false);
     $CI->db->where('mp.page_status', 'publish');
     $CI->db->where('page_type.page_type_name', 'blog');
     $CI->db->where('mm.meta_key', 'image_for_page');
     $CI->db->order_by('mp.page_id', 'random');
     $CI->db->limit($limit);
     
     $query = $CI->db->get(); #pr($CI->db->last_query());
     if( is_object($query) && $query->num_rows() > 0 )
     { 
      $pages = $query->result_array();
      
      foreach ($pages as $page) 
      {
       #pr($page);
       $img = '';
       # адрес картинки записи в мета image_for_page
       $img_url = isset($page['img']) ? $page['img'] : '';
       $img_url = $img_url == '' ? mso_get_first_image_url($page['page_content'], true, $img_url) : $img_url; # пытаемся взять первую картинку из текста
       $img_url = $_SERVER['SERVER_ADDR'] == '127.0.0.1' ? ( parse_url($img_url, PHP_URL_SCHEME) != '' ? getinfo('site_url').substr(parse_url($img_url, PHP_URL_PATH), 1) : $img_url ) : $img_url; # для работы на локальном сервере
       $img_url = getinfo('site_url').substr(parse_url($img_url, PHP_URL_PATH), 1);
       
       # генерируем thumb
       if(
        $img = thumb_generate(
         $img_url, # адрес
         $thumb_width, # ширина
         $thumb_height, #высота
         '//placehold.it/'.$thumb_width.'x'.$thumb_height.'.png', # если нет картинки - показываем заглушку
         'resize'
        )
       )
       {
        $img = '<img src="'. $img.'" alt="'.htmlspecialchars($page['page_title']).'" title="'.htmlspecialchars($page['page_title']).'" />';
       }
       $page_url = getinfo('siteurl').'page/'.$page['page_slug'];
       ?>
        <div class="page">
         <h2><?= $page['page_title']; ?></h2>
         <a href="<?= $page_url; ?>" title="<?= $page['page_title']; ?>"><?= $img; ?></a>
        </div>
       <?
       
      }
     }

    Код можно использовать в нужном тебе месте. По названиям переменных должно быть понятно что и где задавать, чтобы поменять настройки. Выдаваемую вёрстку само собой нужно подправить под твою задачу. Надеюсь, что вопросов не возникнет ;) У меня всё заработало.

    ЗЫ: Нужно только учитывать, что в выборку попадут записи, у которых заполнено мета-поле с адресом картинки.

  3. Огромнейшее спасибо! Выручил, так выручил! smile

    И без всяких виджетов. Останется только свои опции прикрутить.

    Низкий поклон!

  4. Добавлю один важный момент - если вы ставили сайт и указывали свой префикс для базы данных вместо стандартного MSO, не забудьте заменить его в записи:

    $CI->db->from('mso_page mp');
  5. подскажите, пожалуйста, нубу, что конкретно надо заменить в этом коде, а также куда его надо скопировать или вставить. нужен ли для этого плагин run-php??

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

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

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