Русский English Deutsch Українська Қазақша

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

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

Вы не вошли.

#1 2013-05-29 15: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 15:37:03)

Вне форума

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

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

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

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

Вне форума

#3 2013-05-29 22: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 15:13:49

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

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

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

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

Вне форума

#5 2013-05-31 19: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 20:40:06

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

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

AI пишет:

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

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

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

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

Вне форума

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

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

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

AI пишет:

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

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

Вне форума

#8 2013-05-31 23: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-05-31 23:10:20)

Вне форума

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

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

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 11:48:22

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

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

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

Вне форума

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

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

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

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

Вне форума

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

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

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

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

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

Вне форума

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

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

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) }}

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

Вне форума

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

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

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

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

Вне форума

#15 2013-06-03 04: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 05:54:10

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

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

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

Вне форума

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

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

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 03: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 14:21:27)

Вне форума

#19 2013-06-10 03: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 14:21:12)

Вне форума

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

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

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

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

Вне форума

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

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

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

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

Отредактировано AI (2013-06-10 14:23:32)

Вне форума

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

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

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

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

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB 1.5.11
Модифицировал Visman

[ Сгенерировано за 0.014 сек, 7 запросов выполнено - Использовано памяти: 612.77 Кбайт (Пик: 649.77 Кбайт) ]