Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как организовать сортировку новостей в категории по подкатегориям?

Как организовать сортировку новостей в категории по подкатегориям?


     15.10.2016    Все вопросы » Общие вопросы по PHP    1571

вопрос
Доброго всем времени суток!

DLE 11.1
Возник вопрос по следующей реализации:
У меня есть категория новостей "Продукция", которая представляет собой некий каталог бытового/промышленного оборудования.
В ней есть основные категории, внутри которых есть еще подкатегории (серии моделей).

Что хотелось бы реализовать:
На странице Категории 1 вывести следующее:
Описание и изображение категории (проблем нет, сделал для этого специальные теги {category-icon} и {category-descr}) в верхней части содержимого страницы.
Под ним вывести следующее:
Подкатегория 1 (с ссылкой)
Материал 1_1
Материал 1_2
...
Материал 1_i
Подкатегория 2 (с ссылкой)
Материал 2_1
Материал 2_2
...
Материал 2_Х

И тому подобное.
Пытался реализовать модуль подобным образом через BlockPro 3:
<?PHP
if(!defined('DATALIFEENGINE'))die("Hacking attempt!");

foreach($cat_info as $k=>$v){
if($category_id==$v['parentid']){
    echo "<h3><a href=\"/".get_url($k)."/\">{$v['name']}</a></h3><br/>\n";
    $catId = $v['id'];
    include "engine/modules/blockpro/block.pro.3.php";
    }
    
}
?>

Но через include blockpro подобным образом не сработал. Не знаю почему, может он загружается позже, чем мой модуль, либо не срабатывает по какой-то причине через PHP-ный Include, либо я где-то ошибся.

Подскажите пожалуйста что делать, буду очень благодарен.

Ответа пока нет


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

MAP
Юзер

MAP - 15 октября 2016 20:16 -

Что-то похожее здесь описано в комментарии, только мне нужно чтобы название подкатегории выводилось один раз и вне шаблона shortstory.tpl:
Ссылка

lutskboy
Эксперт

lutskboy - 16 октября 2016 14:32 -

{custom category="Подкатегория 1" вывести все новости
{custom category="Подкатегория 2" вывести все новости
.........................................................................................

типа так. думаю смысл понятен

MAP
Юзер

MAP - 16 октября 2016 15:43 -

Спасибо, но мне нужно автоматизировать это все, а не вбивать вручную название категории и ее id в {custom}. Я бы так сделал, но категорий слишком много + будут добавляться новые, а для них придётся прописывать новые теги в шаблоне постоянно, а я сайтом заниматься уже не буду - сдаётся под ключ.

Proff
Юзер

Proff - 16 октября 2016 15:55 -

Автоматизировать по какому-то признаку или выкачивая данные из вашего мозга?

MAP
Юзер

MAP - 16 октября 2016 16:35 -

Повторюсь еще раз:
Есть несколько основных категорий, внутрь которых будут постоянно добавляться новые подкатегории.
Нужно чтобы при открытие этой основной категории внутри выводились подкатегории и их материалы в том виде, который я описал в самом вопросе.
Делать это постоянно от руки, редактируя шаблон и внося туда название этих подкатегорий и тег {custom} для них - не вариант.

Ваше хамство ничем не поможет.

lutskboy
Эксперт

lutskboy - 16 октября 2016 17:27 -

такое только делать на php
могу помочь. если надумаете - пишите
icq 165847055
lutskboy@ya.ru

MAP
Юзер

MAP - 18 октября 2016 11:01 -

Я в курсе, что нужно делать модуль на PHP. В вопросе я это и упомянул.
Вы предлагаете именно помощь или платное решение, которое вы гарантируете, что оно будет корректно работать?
Если помощь, то пишите здесь, потому что вопрос общедоступный и это может еще кому-то пригодиться.

lutskboy
Эксперт

lutskboy - 18 октября 2016 13:00 -

Вы предлагаете именно помощь или платное решение, которое вы гарантируете, что оно будет корректно работать?

платное. будет работать. сделаю для вас тестовый сайт. там будете тестировать.

MAP
Юзер

MAP - 19 октября 2016 02:13 -

В общем я сделяль, но тут две крупные проблемы:
1) У меня запрос к базе висит в цикле, что не есть хорошо, а по другому я пока не придумал.
2) Для каждой следующей подкатегории у меня подгружаются новости с предыдущей + новость этой.
То есть по аналогии: 1, 12, 123.
Как правильно зачищать переменную после каждого прохода по циклу?
<?php
if( ! defined( 'DATALIFEENGINE' ) ) {
die( "Hacking attempt!" );
}
include ('engine/api/api.class.php');

$tpl->load_template($template);

foreach($cat_info as $k=>$v){
    if($category_id==$v['parentid']){
        $cat_id = $v['id'];
        $sql_select_posts = $db->query( "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE p.category = '".$cat_id."' ORDER by category DESC" );

        $i = 0;
while($row_s = $db->get_row($sql_select_posts)) {
    $i++;
    if( strpos( $tpl->copy_template, "xfvalue" ) !== false OR strpos( $tpl->copy_template, "[xfgiven_" ) !== false ) { $xfound = true; $xfields = xfieldsload();}
    else $xfound = false;
    $full_link = $config['http_home_url'].get_url($row_s['id']).'/';

//Список тегов
$tpl->set('{lastpost-title}', $row_s['title']);
$tpl->set('{lastpost-short}', $row_s['short_story']);
$tpl->set('{lastpost-url}', $full_link.$row_s['id'].'-'.$row_s['alt_name'].'.html');
$tpl->set('{lastpost-date}', $row_s['date']);
$tpl->compile('series');
}
        echo "<h3><a href=\"/".get_url($k)."/\">{$v['name']}</a></h3><br/>\n";
        echo $tpl->result['series'];
    
        }
    
}

$tpl->clear();
$db->free($sql_select_posts);

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх