Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Как вывести id главной категории в короткой новости?

Как вывести id главной категории в короткой новости?


     04.11.2018    dle, hack    Все вопросы » Шаблоны (TPL)    1364

вопрос
Здравствуйте,

как вывести в краткой новости id главной категории?

Например у меня добовляються новости исключительно в подкатегории, но как вывести только id "Главной категории"?

Главная категория (id)
- Подкатегория 1 (id)
- Подкатегория 2 (id)
- Подкатегория 3 (id)

Ответил: Flash


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


В файл "engine/modules/functions.php" добавляем

function get_parents_category($id) {
	global $cat_info;

	if( !$id ) return;

	$parent_id = $cat_info[$id]['id'];
	$names = array();
	
	while ( $parent_id ) {
	
		$names[] = $cat_info[$parent_id]['name'];

		$parent_id = $cat_info[$parent_id]['parentid'];

		if( $parent_id ) {	
			if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break;
		}
	}
	
	return implode(', ', $names);
}


В файле "engine/modules/show.short.php" после строки
$row['category'] = intval( $row['category'] );


вставляем
$tpl->set( '{parents-category}', get_parents_category($row['category']) );

4 комментария

4iLi737
Юзер

4iLi737 - 4 ноября 2018 19:01 -

нашел вот это у Вас, вроде то что надо, но надо сделать чтоб выводились все родительские категории через запятую https://dle-faq.ru/faq/common/23418-kak-vyvesti-nazvanie-roditelskoy-kategorii-novosti.html

4iLi737
Юзер

4iLi737 - 6 ноября 2018 14:03 -


Почти, но надо чтоб он выводил так как например на картинке.
Выбраны подкатегории в мире и криминал.

Выводиться должны только главные например: о скрипте, религия

Flash
Эксперт

Flash - 6 ноября 2018 16:03 -

А если так? Работает если у вас только два уровня вложенности категорий
function get_parents_category($str) {
	global $cat_info;

	if( !$str ) return;

	$names = array();
	$ids = explode(',', $str);
	foreach ($ids as $id) {
		$parent_id = $cat_info[$id]['parentid'];
		
		while ( $parent_id ) {
		
			$names[] = $cat_info[$parent_id]['name'];

			$parent_id = $cat_info[$parent_id]['parentid'];

			if( $parent_id ) {	
				if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break;
			}
		}
	}
	
	return implode(', ', $names);
}

Строку
$tpl->set( '{parents-category}', get_parents_category($row['category']) );

переставьте не после, а до строки
$row['category'] = intval( $row['category'] );

4iLi737
Юзер

4iLi737 - 6 ноября 2018 17:26 -

Во спасибо, теперь что надо сууупер!!!!

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

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

наверх