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

Как сделать кастомный вывод записей в рубрике?

Вопросы-ответы / 8 апреля 2016

В общем задача такая - сделать отдельный шаблон, для вывода записей в рубриках отдельным шаблоном, поскольку я не профессионал в php, то для меня это тяжко. Вот картинка:

Как сделать кастомный вывод записей в рубрике?

Это вывод рубрики новости. Последняя запись должна быть самой крупной, потом справа три почти последние, ну и в низу еще три еще немного раньше которые были.

Кто сможет помочь советом как это правильно прописать, поскольку у меня выходит всякая ерунда, где-то я все время косячу и выводится все совершенно не так и не туда, или вообще все печально.

Очень жду совета от знающих smile

Большая просьба не обсуждать криворукость мою и незнания каких то простых вопросов, я только учусь.

С уважением, Николай.

Комментариев: 9
  1. Николай, хотел бы уточнить - в чём именно проблема? Дело в том, что желаемый вид зависит не только от php, но и от самой html верстки. Так вот хотелось бы понять - с html вёрсткой у вас всё нормально? Вам нужен совет как в php организовать формирование и вывод нужного html-кода?

  2. Да, с html вроде все нормально, нужна подсказка как выводить последнюю запись из рубрики в один блок, потом как еще три записи более ранние в другой, и еще три в нижний блок, плюс как правильно брать картинку записей

  3. Желательно подсказку в таком виде - нужный код нужный код 2 нужный код 3, буду очень признателен!

  4. Вариантов много, я опишу самый прямолинейный.

    Допустим в переменную $pages вы уже получили (стандартно для дефолтного шаблона) массив всех записей для вывода на данной странице рубрики. Тогда задача сводится к циклу и условным операторам внутри цикла:

    require_once(getinfo('shared_dir') . 'stock/thumb/thumb.php'); # библиотека для формирования миниатюр
    foreach( $pages as $k => $page )
    {
     if( $k == 0 )
     {
      # здесь код вывода "крупной" записи
     }
     elseif( $k > 0 && $k < 4 )
     {
      # здесь код вывода трёх в столбец
     }
     elseif( $k >= 4 )
     {
      # здесь код вывода трёх в строку
     }
    }
    mso_hook('pagination', $pagination);

    Остаётся только правильно сформировать вывод с помощью оператора echo. Ну и ещё добавить код для формирования превьюшек. Я обычно пользуюсь примерно такой заготовкой:

    # адрес картинки записи в мета image_for_page
    $img_url = isset($page['page_meta']['image_for_page'][0]) ? $page['page_meta']['image_for_page'][0] : '';
    $img_url = $img_url == '' ? mso_get_first_image_url($page['page_content'], true, $img_url) : $img_url; # пытаемся взять первую картинку из текста
    $img_width = 300;
    $img_height = 150;
    $img_type_resize = 'resize_full_crop_center';
    # генерируем thumb
    if( $thumb = thumb_generate(
      $img_url, # адрес картинки
      $img_width, # ширина
      $img_height, #высота
      '//placehold.it/'.$img_width.'x'.$img_height.'.png', # если нет картинки - показываем заглушку
      $img_type_resize, # способ создания миниатюры
      false,
      'mini', # папка для сохранения
      '-'.$img_width.'-'.$img_height.'-'.$img_type_resize # добавка к имени файла миниатюры
     )
    )
    {
     $img = $thumb;
    }
    $page_url = getinfo('siteurl').'page/'.$page['page_slug'];
    $page_title = $page['page_title'];
    echo '<div><h3>'.$page_title.'</h3><div class="img-wrap"><img src="'.$img.'" title="'.$page_title.'" alt="'.$page_title.'"></div></div>'.NR;

    Дальше дело техники собрать это всё в кучу и заставить работать вместе smile Обычно я такое делаю за деньги и чтобы клиенты не обижались, что я кому-то сделал "за так" - остановлюсь на этом smile

  5. Еще можно обойтись без php Псевдокласс :nth-child в css вполне сделает подобный вывод. Так сказать для самых ленивых.

  6. Спасибо за подсказки! Буду приделывать к сайту, как и что получится отпишусь.

  7. Получилось?

  8. А какой файл нужно править то?

    В админке есть только выбор: "Полные или короткие записи для рубрик"

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

  9. А какой файл нужно править то?

    Очевидно тот, который отвечает за вывод содержимого рубрик. Например, /type/category/category.php. Но это основной, возможно можно обойтись без правки основного файла, а только type_foreach файл поправить. Но это вам нужно самостоятельно решать - насколько глубоко вам нужно перерабатывать шаблон вывода рубрик. В любом случае, проследите по указанному мной файлу логику вывода и тогда сами найдёте ответ на вопрос о том, какой файл нужно править.

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

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

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