Вы не зашли.
А как сделать чтобы, если новость находится по адресу:
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)
Не в сети
AI,
1. Сейчас в NG нельзя сделать URL вида /category1/category2/...
2. "Активной" отмечается только та категория в которой сейчас находится пользователь либо главная категория новости.
Механизм определения "активной" категории изменить можно, но для этого нужно понять алгоритм по которому это нужно делать.
Не в сети
1. речь не о url, а о нахождении новости в подкатегории
2. это ясно, поэтому и спросил, можно ли как-то сделать
Мне именно надо, чтобы выделялась активной та категория, в которой находится новость (все новости находятся именно в последней категории), исходя из вида - category-1/category-2/category-X, т.е. нет такого, что новость находится в - category-1 и category-3, а - category-2 пропущена.
Не в сети
В доках в 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 %}
Не в сети
vitaly, никак такой вариант нельзя?
Может тогда можно какими-то сверх-навороченными способами через twig?
Над этим сейчас и думаю.
А почему такая странная схема? Что "основная" категория для новости в реальности является дополнительной категорией?
Единственный разумный вариант:
1. Создать новую глобальную twig функцию, которая будет "доставать" информацию из текущей новости, в том числе и список категорий
2. Получить последний элемент этого списка (последнюю категорию) и сохранить в отдельной переменной
3. При генерации меню учитывать значение ново-созданной переменной и полагаться на него для отметки "текущей" категории
п. 1 - допиливание системы, п. 2, 3 - просто шаблон
Не в сети
А почему такая странная схема? Что "основная" категория для новости в реальности является дополнительной категорией?
...ну, это к примеру сайт/упаковка/бумажная/зеленая/описание-покрытия.html или сайт/упаковка/бумажная/описание-используемой-бумаги.html т.е. человек знакомясь с описанием краски (зеленый цвет) видел, что он читает именно зеленый цвет, т.к. есть еще куча цветов.
И в чём выражается косяк?
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)
Не в сети
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 %}
Не в сети
Еще назрел вопрос )
А есть какое-то if что если у категории есть подкатегории? Одним словом, надо если у категории есть подкатегория, то к главной, добавить класс.
Не в сети
Еще назрел вопрос )
А есть какое-то if что если у категории есть подкатегории? Одним словом, надо если у категории есть подкатегория, то к главной, добавить класс.
Это всё есть в документации.
Открываешь readme/docs/index.html, находишь там шаблон news.categories.tpl и читаешь
Нужная тебе переменная: entry.flags.hasChildren
{% if entry.flags.hasChildren %}есть подкатегории{% endif %}
А ещё можно воспользоваться функцией debugValue() - добавить в самое начало файла news.categories.tpl:
{{ debugValue(entries) }}
.. дальше всё сразу станет ясно
Не в сети
А как добавить что-то, только к категориям второго уровня у которох есть дочерние, т.е.:
категория-1
категория-1-А
категория-1-B (к этой)
категория-1-B-1
категория-1-B-2
категория-2
категория-2-А
категория-2-B
Не в сети
vitaly, вопрос не по этой теме, но из той же оперы )) так понимаю, что и возможность в краткой и полной новости вывести ее родную категорию не главную, тоже не представляется возможным, да?
Не в сети
А как добавить что-то, только к категориям второго уровня у которох есть дочерние, т.е.:
Извини за нескромный вопрос, а документацию читать не позволяет религия?
Обрати внимание на переменные entry.level и entry.flags.hasChildren.
Вот так должно работать:
{% if (entry.level == 1) and entry.flags.hasChildren %}Второй уровень с детьми{% endif %}
=======
vitaly, вопрос не по этой теме, но из той же оперы )) так понимаю, что и возможность в краткой и полной новости вывести ее родную категорию не главную, тоже не представляется возможным, да?
А вот этого в документации нет.
Но возможность в SVN версии есть.
Добавь в news.full.tpl:
[TWIG] {{ debugValue(news.categories) }}[/TWIG]
и всё станет ясно.
Вкратце:
news.categories.count - кол-во категорий в которой находится новость
news.categories.list - список категорий со всей значимой информацией по категории
Не в сети
Еще один косяк вылез в http://ngcms.ru/forum/viewtopic.php?pid=35247#p35247 если из меню убрать вывод главных категорий (в админке в настройках категорий - Отображать категорию в меню: снять галку), то в самом конце добавляются лишние: </li></ul>
Изменено AI (2013-06-10 15:21:27)
Не в сети
vitaly, а по этому моменту http://ngcms.ru/forum/viewtopic.php?pid=35240#p35240, что-то выйдет?
Изменено AI (2013-06-10 15:21:12)
Не в сети
AI, я может , что то не так понял или не вник внимательно - но постараюсь тебе обяснить ...
Плагин http://ngcms.ru/forum/viewtopic.php?id=914
Создал блок -> Вставил category-1 -> поставил где ей отображаться ( только на главной ) . Не забываем вставить переменную.
Создал блок -> Вставил category-3 -> поставил где ей отображаться ( только в категории ) . И тоже вставляем переменную .
Надеюсь помогло ... если я правильно понял
Не в сети
ahatomik, это все замечательно )) НО, это более-менее подойдет, если с десяток категорий, а если их 234 (на данный момент), то как-то не гуд )))
И тем более, если есть twig, то почему не реализовать и данную возможность, особенно учитывая, что в short и full новостях это реализовано.
Изменено AI (2013-06-10 15:23:32)
Не в сети