Перейти к содержимому


Выводим список подкатегорий DLE с описанием в текущей категории


  • Вы не можете ответить в тему
Сообщений в теме: 2

#1 R.Sergey

    Администратор

  • Администраторы
  • 2792 сообщений
Репутация: 332
Мастер

Отправлено 13 May 2012 - 02:28 PM

Уже вышла версия DataLife Engine 9.6, а данная функция до сих пор не реализована.

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

Решаем вопрос. (данное решение подходит для всех версий DLE)

1. Открываем файл /engine/modules/functions.php

В самый конец файла, перед закрывающим тегом "?>" добавляем код
function CategoryMenu($categoryid = 0, $parentid = 0, $returnstring = '') {
	global $cat_info, $user_group, $member_id;
	$allow_list = explode( ',', $user_group[$member_id['user_group']]['cat_allow_addnews'] );
	$root_category = array ();  
	if( count( $cat_info ) ) {	  
		foreach ( $cat_info as $cats ) {
			if( $cats['parentid'] == $parentid ) $root_category[] = $cats['id'];
		}	  
		if( count( $root_category ) ) {
			foreach ( $root_category as $id ) {			  
				if( $allow_list[0] == "all" or in_array( $id, $allow_list ) ) {			  
					$returnstring .= "<div class='cat'><a href='/".$cat_info[$id]['alt_name']."/'>" . $cat_info[$id]['name'] . "</a><br><div class='descr'>".$cat_info[$id]['descr']."</div></div>";
				}
				$returnstring = CategoryMenu( $categoryid, $id, $returnstring );
			}
		}
	}
	return $returnstring;
}

2. Открываем файл /engine/init.php
В самый конец файла, перед закрывающим тегом "?>" добавляем код
$tpl->set ( '{categorymenu}', CategoryMenu(0, $category_id));

3. Открываем файл /templates/ваш_шаблон/main.tpl
И в любое нужное Вам место, например прямо перед тегом
{content}
вставляем тег
{categorymenu}

Все теперь в категории в которой Вы находитесь будет выводиться список ее подкатегорий, если они имеются со своим описанием.
Однако, если в этой категории нет новостей и не включен вывод новостей из подкатегорий, то вместе с этим списком будет выводится еще значение тега {info}, а именно сообщение об ошибке.

Внимание, обнаружена ошибка
По данному адресу публикаций на сайте не найдено, либо у вас нет доступа для просмотра информации по данному адресу.


Если необходимо убрать это сообщение для категорий, которые имеют подкатегории выполняем 4-й пункт.
4. Открываем файл /engine/modules/show.short.php
Находим код
} elseif( ! $news_found and ! $allow_userinfo and $do != '' and $do != 'favorites' and $view_template != 'rss' ) {
и меняем его на код
} elseif( ! $news_found and ! $allow_userinfo and $do != '' and $do != 'favorites' and $view_template != 'rss' and !CategoryMenu(0, $category_id)) {

Как это выглядит:
Прикрепленный файл  cat1.jpg   192.69К   29 Количество загрузок:Прикрепленный файл  cat2.jpg   237.87К   36 Количество загрузок:Прикрепленный файл  cat3.jpg   180.77К   36 Количество загрузок:Прикрепленный файл  cat4.jpg   152.93К   26 Количество загрузок:
  • 0

#2 HorrorDrug

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений
Репутация: 0
Начинающий

Отправлено 28 October 2014 - 09:47 PM

Как сделать так, чтобы категории отображались не в столбик, а строчкой?
  • 0

#3 Alex.Freeman

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений
Репутация: 0
Начинающий

Отправлено 15 July 2015 - 03:07 PM

R.Sergey, Сделал все ка написано выше, но не работает. Просто выводится надпись {categorymenu}. DLE 10.4
  • 0