форум общения русскоязычных пользователей CMS Текстпаттерн
Вы не зашли.
Возник ещё один вопрос.
Дано:
Категория1
Подкатегория1
Подподкатегория1-1
статья1-1-1
статья1-1-2
статья1-1-3
и т.п.
Подподкатегория1-2
статья1-2-1
статья1-2-2
и т.п.
Подподкатегория1-3
Подкатегория2
Подподкатегория2-1
Подподкатегория2-2
Так вот есть ли возможность при выборе Подкатегории1
Получить вот такое представление:
Подподкатегория1-1
статья1-1-1
статья1-1-2
статья1-1-3
Подподкатегория1-2
статья1-2-1
статья1-2-2
Т.е. хочется при выборе подкатегории получить список Подподкатегорий и списка статей из этих подподкатегорий
Есть ли такой вариант?
Неактивен
Вроде придумал...
Сейчас проверю....
P.S.
Извиняюсь
Пораскинул мозгами и всё заработало.
Отредактированно raivilion (04-12-2007 20:04:10)
Неактивен
так поелитесь решением с общественностью
Неактивен
Ну решение такое "в лоб"
<txp:if_category name="Подкатегория1"> <txp:if_individual_article> <txp:article limit="300" form="catalog_article_single" /> <txp:else /> <txp:article limit="300" form="null" /> <txp:category name="Подподкатегория1-1" title="1" link="1" wraptag="p" class="sub-cat" /> <txp:article_custom category="Подподкатегория1-1" limit="300" listform="catalog_list_1" /> <txp:category name="Подподкатегория1-2" title="1" link="1" wraptag="p" class="sub-cat" /> <txp:article_custom category="Подподкатегория1-2" limit="300" listform="catalog_list_1" /> <txp:category name="Подподкатегория1-3" title="1" link="1" wraptag="p" class="sub-cat" /> <txp:article_custom category="Подподкатегория1-3" limit="300" listform="catalog_list_1" /> </txp:if_individual_article> </txp:if_category>
Ну и так далее... прописываются варианты для всех Подкатегорий и внутри них для всех Подподкатегорий.
Неактивен
А почему бы не использовать пхп. Для получения текущей категории использовать $thispage['c'].
Плагин для этого писать не обязательно. Достаточно написать код в форме и выводить ее по мере необходимости.
Неактивен
Зачем php если есть <txp:category /> ?
Неактивен
the_ghost написал:
Зачем php если есть <txp:category /> ?
Чего то как то не могу сообразить, как мне тут можно это применить?
Неактивен
Этот тэг в данном случае не подмога. Сегодня вечером напишу пример кода
Неактивен
кстати, если кто хочет сам написать, то советую обратить внимание на функцию из txplib_db.php function getTree($root, $type, $where='1=1')
Неактивен
Ну вот, ничего писать не пришлось. Только малость закомментировать. Писал давно для своего плагина. Пока в деле не использовал, но точно работает. Проверил.
Реализован вывод списком, но ссылки делать не стал -- лениво. Кому не лениво допишите
<txp:php> global $c; // Текущая категория $categories = safe_rows("id, name, title, parent", "txp_category", "type = 'article'"); $articles = safe_rows("ID, Title, Category1, Category2, Section", "textpattern", "1"); // Добавляем к каждой категории массив с номерами статей, которые этой категории принадлежат foreach($articles as $i=>$a) { act_ins_art($categories, $a, $i); } // Вызываем рекурсивную функцию построения дерева act_build_tree($categories, $articles, strtoupper($c)); function act_build_tree( $cat, // Подготовленный массив с категориями $art, // Массив со статьями $parent // Имя папаши. Заметьте, что в базе оно хранится в верхнем регистре, а $c выдаёт в нижнем ){ $first = true; foreach($cat as $i=>$ca){ if($ca['parent'] == $parent) { // Если папаша правильный, то... if($first == true) { // Список был открыт? echo '<ul id="PCat_>' . $parent . '">' . n; $first = false; } echo '<li id="cat_>' . $ca['name'] . '">' . $ca['title'] . n; if(isset($ca['articles'])) { // Если есть статейки, то мы их выведем echo '<ul>'; foreach($ca['articles'] as $el) echo '<li class="red">' . $art[$el]['Title'] . '</li>'.n; echo '</ul>'; } act_build_tree($cat, $art, $ca['name']); // Вызваем рекурсивно unset($cat[$i]); //Удаляем использованное, чтобы уменьшить работу. echo '</li>' . n; } } if($first == false) { echo '</ul>' . n; } return; } function act_ins_art(&$cat, $art, $index) { foreach($cat as $i=>$c) { if($c['name'] == $art['Category1']) $cat[$i]['articles'][] = $index; if($c['name'] == $art['Category2']) $cat[$i]['articles'][] = $index; } } </txp:php>
Неактивен
Есть один баг. Точнее фича
Не выводит статьи той категории, от которой пляшем. Может исправлю. Или если кто исправит, выложите здесь.
Неактивен