Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2013-05-29 16:34:02

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

news.categories.tpl новость в дочерней категории подсветка категории

А как сделать чтобы, если новость находится по адресу:

site/category-1/category-2/category-3/news.html

то была активна именно категория - category-3, а не главная - category-1?

сейчас код такой:

{% for entry in entries %}<a href="{{ entry.link }}" {% if (entry.flags.active) %} class="active"{% endif %}>{{entry.cat}}</a>{% endfor %}

Изменено AI (2013-05-29 16:37:03)

Не в сети

#2 2013-05-29 21:42:34

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: news.categories.tpl новость в дочерней категории подсветка категории

AI,
1. Сейчас в NG нельзя сделать URL вида /category1/category2/...
2. "Активной" отмечается только та категория в которой сейчас находится пользователь либо главная категория новости.
Механизм определения "активной" категории изменить можно, но для этого нужно понять алгоритм по которому это нужно делать.

Не в сети

#3 2013-05-29 23:38:45

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

Re: news.categories.tpl новость в дочерней категории подсветка категории

1. речь не о url, а о нахождении новости в подкатегории
2. это ясно, поэтому и спросил, можно ли как-то сделать

Мне именно надо, чтобы выделялась активной та категория, в которой находится новость (все новости находятся именно в последней категории), исходя из вида - category-1/category-2/category-X, т.е. нет такого, что новость находится в - category-1 и category-3, а - category-2 пропущена.

Не в сети

#4 2013-05-31 16:13:49

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

Re: news.categories.tpl новость в дочерней категории подсветка категории

vitaly, никак такой вариант нельзя?

Может тогда можно какими-то сверх-навороченными способами через twig?

Не в сети

#5 2013-05-31 20:00:20

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

Re: news.categories.tpl новость в дочерней категории подсветка категории

В доках в SVN 1127 косяк с:

Меню категорий:

{% for entry in entries %}
	<!-- Если не стоит флаг `flags.active`, т.е. если эта категория - не текущая, то показываем ссылку -->
	<!-- В текущей категории показываем имя категории жирным шрифтом -->
	<li>
	{% if (not entry.flags.active) %}
		<a href="{{ entry.link }}">
	{% else %}
		<b>
	{% endif %}
	{{ entry.cat }}
	{% if (entry.flags.active) %}
		</a>
	{% else %}
		</b>
	{% endif %}

	<!-- Отображаем кол-во новостей в категории только в случае, если выставлен флаг `flags.counter` -->
	{% if (entry.flags.counter) %}
		[ {{ entry.counter }}]
	{% endif %}


	<!-- Если у категории есть подкатегории, то открываем новый уровень вложенности -->
	{% if (entry.flags.hasChildren) %}
		<ul>
	{% else %}
	</li>
		<!-- Если после этой категории закрывается 1 или несколько уровней - выводим закрывающиеся </ul> -->
		{% if isSet(entry.closeToLevel) %}
		{% for i in entry.closeToLevel .. entry.level %}
			</ul></li>
		{% endfor %}
	{% endif %}
{% endfor %}

Не в сети

#6 2013-05-31 21:40:06

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: news.categories.tpl новость в дочерней категории подсветка категории

AI пишет:

vitaly, никак такой вариант нельзя?
Может тогда можно какими-то сверх-навороченными способами через twig?

Над этим сейчас и думаю.
А почему такая странная схема? Что "основная" категория для новости в реальности является дополнительной категорией?

Единственный разумный вариант:
1. Создать новую глобальную twig функцию, которая будет "доставать" информацию из текущей новости, в том числе и список категорий
2. Получить последний элемент этого списка (последнюю категорию) и сохранить в отдельной переменной
3. При генерации меню учитывать значение ново-созданной переменной и полагаться на него для отметки "текущей" категории

п. 1 - допиливание системы, п. 2, 3 - просто шаблон

Не в сети

#7 2013-05-31 21:41:28

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: news.categories.tpl новость в дочерней категории подсветка категории

AI пишет:

В доках в SVN 1127 косяк с:

И в чём выражается косяк?

Не в сети

#8 2013-06-01 00:08:18

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

Re: news.categories.tpl новость в дочерней категории подсветка категории

vitaly пишет:

А почему такая странная схема? Что "основная" категория для новости в реальности является дополнительной категорией?

...ну, это к примеру сайт/упаковка/бумажная/зеленая/описание-покрытия.html или сайт/упаковка/бумажная/описание-используемой-бумаги.html т.е. человек знакомясь с описанием краски (зеленый цвет) видел, что он читает именно зеленый цвет, т.к. есть еще куча цветов.

vitaly пишет:

И в чём выражается косяк?

1) если ставить как есть, то выдает ошибку:

NGCMS Runtime exception: Twig_Error_Syntax
Unexpected tag name "endfor" (expecting closing tag for the "if" tag defined near line 27) in "news.categories.tpl" at line 34

Stack trace
#	Line #	Class/Function	File name
0	50	Twig_Parser	диск:\адрес сайта\www\engine\includes\classes\Twig\TokenParser\If.php
1	192	Twig_TokenParser_If	диск:\адрес сайта\www\engine\includes\classes\Twig\Parser.php
2	47	Twig_Parser	диск:\адрес сайта\www\engine\includes\classes\Twig\TokenParser\For.php
3	192	Twig_TokenParser_For	диск:\адрес сайта\www\engine\includes\classes\Twig\Parser.php
4	100	Twig_Parser	диск:\адрес сайта\www\engine\includes\classes\Twig\Parser.php
5	486	Twig_Parser	диск:\адрес сайта\www\engine\includes\classes\Twig\Environment.php
6	536	Twig_Environment	диск:\адрес сайта\www\engine\includes\classes\Twig\Environment.php
7	330	Twig_Environment	диск:\адрес сайта\www\engine\includes\classes\Twig\Environment.php
8	1181	Twig_Environment	диск:\адрес сайта\www\engine\includes\inc\functions.inc.php
9	120	generateCategoryMenu	диск:\адрес сайта\www\index.php

2) и если даже поставить закрывающий тэг, то правильно работает, только тогда, когда - последняя категория не имеет подкатегорий, пример:

это реальная структура на сайте:
категория 1
          категория 1-A
          категория 1-B
                     категория 1-B-1
                     категория 1-B-2
категория 2
          категория 2-A

если выставить так, то все хорошо:
категория 1
          категория 1-B
                     категория 1-B-1
                     категория 1-B-2
          категория 1-A
категория 2
          категория 2-A

если так, то категория 2 идет как дочерняя категории 1, пример (из-за того, что не хватает закрывающего UL перед LI категории 2):
категория 1
          категория 1-A
          категория 1-B
                     категория 1-B-1
                     категория 1-B-2
          категория 2
                     категория 2-A

Изменено AI (2013-06-01 00:10:20)

Не в сети

#9 2013-06-01 11:38:56

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: news.categories.tpl новость в дочерней категории подсветка категории

AI, ошибка в документации (исправил в SVN).
Должно быть так:

{% for entry in entries %}
	<!-- Если не стоит флаг `flags.active`, т.е. если эта категория - не текущая, то показываем ссылку -->
	<!-- В текущей категории показываем имя категории жирным шрифтом -->
	<li>
	{% if (not entry.flags.active) %}
		<a href="{{ entry.link }}">
	{% else %}
		<b>
	{% endif %}
	{{ entry.cat }}
	{% if (entry.flags.active) %}
		</a>
	{% else %}
		</b>
	{% endif %}

	<!-- Отображаем кол-во новостей в категории только в случае, если выставлен флаг `flags.counter` -->
	{% if (entry.flags.counter) %}
		[ {{ entry.counter }}]
	{% endif %}


	<!-- Если у категории есть подкатегории, то открываем новый уровень вложенности -->
	{% if (entry.flags.hasChildren) %}
		<ul>
	{% else %}
	</li>
		<!-- Если после этой категории закрывается 1 или несколько уровней - выводим закрывающиеся </ul> -->
		{% if isSet(entry.closeToLevel) %}
			{% for i in (entry.closeToLevel+1) .. entry.level %}
				</ul></li>
			{% endfor %}
		{% endif %}
	{% endif %}
{% endfor %}

Не в сети

#10 2013-06-01 12:48:22

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

Re: news.categories.tpl новость в дочерней категории подсветка категории

Да, так работает, только закрывающие теги A и B надо поменять местами.

Не в сети

#11 2013-06-01 16:26:05

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: news.categories.tpl новость в дочерней категории подсветка категории

AI, действительно.
Исправил.

Не в сети

#12 2013-06-02 06:33:53

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

Re: news.categories.tpl новость в дочерней категории подсветка категории

Еще назрел вопрос )

А есть какое-то if что если у категории есть подкатегории? Одним словом, надо если у категории есть подкатегория, то к главной, добавить класс.

Не в сети

#13 2013-06-02 10:17:43

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: news.categories.tpl новость в дочерней категории подсветка категории

AI пишет:

Еще назрел вопрос )
А есть какое-то if что если у категории есть подкатегории? Одним словом, надо если у категории есть подкатегория, то к главной, добавить класс.

Это всё есть в документации.
Открываешь readme/docs/index.html, находишь там шаблон news.categories.tpl и читаешь smile

Нужная тебе переменная: entry.flags.hasChildren

{% if entry.flags.hasChildren %}есть подкатегории{% endif %}

А ещё можно воспользоваться функцией debugValue() - добавить в самое начало файла news.categories.tpl:

{{ debugValue(entries) }}

.. дальше всё сразу станет ясно smile

Не в сети

#14 2013-06-02 13:15:31

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

Re: news.categories.tpl новость в дочерней категории подсветка категории

))) действительно, и главное читал же )))

Не в сети

#15 2013-06-03 05:36:45

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

Re: news.categories.tpl новость в дочерней категории подсветка категории

А как добавить что-то, только к категориям второго уровня у которох есть дочерние, т.е.:

категория-1
          категория-1-А
          категория-1-B (к этой)
                    категория-1-B-1
                    категория-1-B-2
категория-2
          категория-2-А
          категория-2-B

Не в сети

#16 2013-06-03 06:54:10

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

Re: news.categories.tpl новость в дочерней категории подсветка категории

vitaly, вопрос не по этой теме, но из той же оперы )) так понимаю, что и возможность в краткой и полной новости вывести ее родную категорию не главную, тоже не представляется возможным, да?

Не в сети

#17 2013-06-03 10:50:10

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: news.categories.tpl новость в дочерней категории подсветка категории

AI пишет:

А как добавить что-то, только к категориям второго уровня у которох есть дочерние, т.е.:

Извини за нескромный вопрос, а документацию читать не позволяет религия? smile

Обрати внимание на переменные entry.level и entry.flags.hasChildren.
Вот так должно работать:

{% if (entry.level == 1) and entry.flags.hasChildren %}Второй уровень с детьми{% endif %}

=======

AI пишет:

vitaly, вопрос не по этой теме, но из той же оперы )) так понимаю, что и возможность в краткой и полной новости вывести ее родную категорию не главную, тоже не представляется возможным, да?

А вот этого в документации нет.
Но возможность в SVN версии есть.
Добавь в news.full.tpl:

[TWIG] {{ debugValue(news.categories) }}[/TWIG]

и всё станет ясно.

Вкратце:
news.categories.count - кол-во категорий в которой находится новость
news.categories.list - список категорий со всей значимой информацией по категории

Не в сети

#18 2013-06-06 04:18:27

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

Re: news.categories.tpl новость в дочерней категории подсветка категории

Еще один косяк вылез в http://ngcms.ru/forum/viewtopic.php?pid=35247#p35247 если из меню убрать вывод главных категорий (в админке в настройках категорий - Отображать категорию в меню: снять галку), то в самом конце добавляются лишние: </li></ul>

Изменено AI (2013-06-10 15:21:27)

Не в сети

#19 2013-06-10 04:25:26

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

Re: news.categories.tpl новость в дочерней категории подсветка категории

vitaly, а по этому моменту http://ngcms.ru/forum/viewtopic.php?pid=35240#p35240, что-то выйдет?

Изменено AI (2013-06-10 15:21:12)

Не в сети

#20 2013-06-10 15:10:52

ahatomik
Старожил
Откуда Киев
Зарегистрирован: 2012-07-02
Сообщений: 832
Сайт

Re: news.categories.tpl новость в дочерней категории подсветка категории

AI, я может , что то не так понял или не вник внимательно - но постараюсь тебе обяснить ...
Плагин http://ngcms.ru/forum/viewtopic.php?id=914
Создал блок -> Вставил category-1 -> поставил где ей отображаться ( только на главной ) . Не забываем вставить переменную.
Создал блок -> Вставил category-3 -> поставил где ей отображаться ( только в категории ) . И тоже вставляем переменную .
Надеюсь помогло ... если я правильно понял wink

Не в сети

#21 2013-06-10 15:21:49

AI
Участник
Зарегистрирован: 2013-05-21
Сообщений: 52
Рейтинг :   

Re: news.categories.tpl новость в дочерней категории подсветка категории

ahatomik, это все замечательно )) НО, это более-менее подойдет, если с десяток категорий, а если их 234 (на данный момент), то как-то не гуд )))
И тем более, если есть twig, то почему не реализовать и данную возможность, особенно учитывая, что в short и full новостях это реализовано.

Изменено AI (2013-06-10 15:23:32)

Не в сети

#22 2013-06-10 15:22:55

ahatomik
Старожил
Откуда Киев
Зарегистрирован: 2012-07-02
Сообщений: 832
Сайт

Re: news.categories.tpl новость в дочерней категории подсветка категории

AI, оу ... тогда жди ответ от админов , тут я сдаюсь big_smile

Не в сети

Подвал раздела

Работает на FluxBB