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

Как вывести полной новости все подкатегории главной категории (прародителя)?


     11.10.2019    категории, подкатегории, прародитель категории, вывести категории    Модули, Хаки, Ламерские вопросы    1584

вопрос
Не получается стандартными тегами DLE вывести на странице полной новости все подкатегории "прародителя".
Получается только "родителя" вывести,а вот как получить ID "прародителя"?

DLE 13,2
Пример:
http://сайт.ру/прародитель/родитель/новость.php

Помогите плиз,весь инет облазил нет ничего даже близко к этому.
Я новичок в DLE и как я понял,стандартными тегами можно получить ID только родителя.

На сайте новости добавляются только в подкатегории (в родителя) и автоматом добавляются и в главную категорию (прародителя).Родителей 200 штук в одном "прародителе" потому нужно решение более менее на автомате.


В конечном итоге должно быть так:
Человек попадает на главную страницу сайта,в меню кликает на "прародителя" и переходит в "родителя".Родитель это страница с списком новостей (превьюшки).Чел кликает на новость (превью) и попападает в неё.Дальше ему в виде якорных ссылок должны показываться все родители которые существуют в прародителе.

дальше при клике на родителя он попадает опять на страницу в спревьшками и при клике на превью попадает в полную новость,и то же самое должно быть (должны быть видны все подкатегории).

Надеюсь подробно объяснил,Помогите плиз.

Я пробовал ставить код такого вида но не помогает:

[category={category-id}]{catmenu id="{category-id}" subcat="only"} [/category]


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

Помогите плиз....

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


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

dj-avtosh
PHP-developer

dj-avtosh - 11 октября 2019 11:06 -

Здравствуйте. А если у новости более одной категории, то кто должен быть прародителем?

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

bodlo
Юзер

bodlo - 11 октября 2019 12:43 -

Ну получается что новость имеет две категории ("родитель и прародитель").
Новости добавляются в "родителя",и автоматически появляются и "прародителе".
Одна новость не может быть в двух "прародителях",так на сайте задуманно.

LazyDev
PHP-developer

LazyDev - 11 октября 2019 12:51 -

bodlo, что значит родитель и прародитель? Может вы имеете в виду Категория и ее Родительская категория?

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

dj-avtosh
PHP-developer

dj-avtosh - 11 октября 2019 12:56 -

дедушка))))

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

LazyDev
PHP-developer

LazyDev - 11 октября 2019 13:02 -

dj-avtosh, да я просто читаю то что написал ТС и мой мозг - "Моя остановочка". Какой к черту прародитель, я даже не могу понять.

Человек попадает на главную страницу сайта,в меню кликает на "прародителя" и переходит в "родителя".


Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

bodlo
Юзер

bodlo - 11 октября 2019 14:08 -

LazyDev,
LazyDev,
LazyDev,

Да я так имею ввиду,но в силу того что многие понимают под категорией только лишь родительскую категорию (согласен это правильно) то я и поставил "прародитель и родитель"

URL во такого вида

http://сайт.ру/прародитель/родитель/полная-новость.html

Получается что по отношению к новости,то родительской будет категория "родитель" (то бишь в DLE в админке это подкатегория).

bodlo
Юзер

bodlo - 11 октября 2019 14:03 -

Я в DLE не силён и пишу стараясь доступным языком.Простите гуру.

Попробую ещё раз:

На странице полной новости,нужно вывести все под-категории которые есть в главной категории.Но...стандартными тегами не выводится.

Шаги юзера на сайте:
1.Заходит в категорию (ссылка на категорию находится в меню).
2. Видит на странице превьюшки,кликает на превью и попадает на страницу полной новости.
3.На странице полной новости под видеоплеером находятся в виде ссылок все подкатегории главной категории.Не только лишь одна подкатегория к которой принадлежит эта полная новость,а все-все подкатегории которые находятся в главной категории.

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


Новости добавляются сразу в подкатегорию,и автоматически добавляются в главную категорию.То есть получается она принадлежит главной категории и подкатегории (прародителю и родителю).

bodlo
Юзер

bodlo - 11 октября 2019 14:10 -

Для этого я как понял мне нужно на странице полной новости получить ID самой главной категории.

Но не делая шаблоны для каждой категории и не перечисляя ID.Так как категорий будет примерно 150 и подкатегорий в каждой категории будет примерно по 200 штук.

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

dj-avtosh
PHP-developer

dj-avtosh - 11 октября 2019 15:00 -

что такое главная категория, когда категорий несколько?

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

LazyDev
PHP-developer

LazyDev - 11 октября 2019 15:13 -

Ему нужно вывести все подкатегории, родительской категории выбранной подкатегории.
http://сайт.ру/родительская категория/подкатегория/полная-новость.html

родительская категория -> все её подкатегории.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

dj-avtosh
PHP-developer

dj-avtosh - 11 октября 2019 15:24 -

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

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

LazyDev
PHP-developer

LazyDev - 11 октября 2019 15:59 -

dj-avtosh, нет.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

dj-avtosh
PHP-developer

dj-avtosh - 11 октября 2019 17:39 -

Я конечно тупой и не понял вопроса, но:

в engine/modules/functions.php

найти

?>


Выше вставить:

			

function findCategoryParentTree( $categoryId = null, array $flatArr = [], $onlyRoot = false, $parentKey = 'parentid', $key = 'id' )
			{

				$resultArr = [];

				if ( ! empty ( $categoryId ) && ! empty ( $flatArr ) )
				{

					$parent_id = $flatArr[$categoryId][$parentKey];

					while ( $parent_id ) 
					{

						$parent_id_dump = $parent_id;

						false == $onlyRoot && $resultArr[] = $parent_id;

						$parent_id = $flatArr[$parent_id][$parentKey];

						if ( isset ( $parent_id ) && $flatArr[$parent_id][$parentKey] == $flatArr[$parent_id][$key] )
						{

							true == $onlyRoot && $resultArr[] = $parent_id_dump;

							break;

						}

					}

				}

				return $resultArr;

}



В engine/classes/templates.class.php

найти:

if (strpos ( $this->template, "{category-" ) !== false) {


выше вставить



if (strpos ( $this->template, "{root-cat-" ) !== false) {

			/***********************************/
			$rootCats = findCategoryParentTree(intval($category_id), $cat_info, true );
			$this->template = str_ireplace( "{root-cat-id}", ( ! empty ( $rootCats ) ? current($rootCats) : 0 ), $this->template );
			/***********************************/

}		




найти:

if (strpos ( $template, "{category-" ) !== false) {


выше вставить


if (strpos ( $template, "{root-cat-" ) !== false) {

			/***********************************/
			$rootCats = findCategoryParentTree(intval($category_id), $cat_info, true );
			$template = str_ireplace( "{root-cat-id}", ( ! empty ( $rootCats ) ? current($rootCats) : 0 ), $template );
			/***********************************/

}


в main.tpl шаблона вставить только это (БОЛЬШЕ НИЧЕГО):



[available=showfull]{catmenu id="{root-cat-id}" subcat="only"}[/available]



По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 11 октября 2019 17:47 -

И в конце не забыть очистить кэш.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

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

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

 29.03.2013 Chandleryp  Модули
наверх