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

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

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

Вы не вошли.

#1 2010-01-05 01:19:39

Live
Участник
Здесь с 2009-12-04
Сообщений: 181
Рейтинг :   

Переменная {if_active}

сабж ето работает? когда я нахожусь в какой нибудь категории - етой категории не присвается класс active_cat как написано в доках.
если это работает - можно пример реализации

Вне форума

#2 2010-01-05 01:30:30

infinity237
Модератор
Откуда: Russia, Moscow
Здесь с 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: Переменная {if_active}

Версия? Качайте fixpack1.

Вне форума

#3 2010-01-05 04:11:44

Live
Участник
Здесь с 2009-12-04
Сообщений: 181
Рейтинг :   

Re: Переменная {if_active}

версия - Актуальная версия
0.9.1 Release
24 октября 2009

Вне форума

#4 2010-01-05 05:09:06

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

Re: Переменная {if_active}

Live, официально ещё не выложен, это версия "для тестирования", успешно прошедшая тесты.
Можешь взять из этой темы

p.s. Чуть позже будет выложен сам FixPack 01, но туда будут включены ещё пара дополнительных правок. Поэтому после выхода тебе надо будет его заново скачать и установить.

Вне форума

#5 2010-01-05 06:30:23

Live
Участник
Здесь с 2009-12-04
Сообщений: 181
Рейтинг :   

Re: Переменная {if_active}

vitaly, спасибо! Очень оперативно работаете smile
Последний вопрос - если я хардкорно пропишу в шаблоне ссылку на категорию, будет ли работать {if_active} в этом случае? или только в {categories} это работает?

проверил - не работает sad возможно ли это каким нибудь образом реализовать?

Отредактировано Live (2010-01-05 07:18:17)

Вне форума

#6 2010-01-05 14:26:41

Евгений
Модератор
Откуда: Россия
Здесь с 2009-04-08
Сообщений: 1,014
Рейтинг :   38 
Сайт

Re: Переменная {if_active}

vitaly, тоже очень интересует этот вопрос, возможно ли в шаблоне так же реализовать?


I NGeneration CMS

Вне форума

#7 2010-01-05 17:02:19

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

Re: Переменная {if_active}

Live, нельзя.
Но есть очень хочется, то можно.
1. открываем engine/includes/inc/functions.inc.php

2. находим (строка ~935):

//
// New category menu generator
function generateCategoryMenu(){
	global $mysql, $catz, $tpl, $config, $CurrentHandler, $SYSTEM_FLAGS;

последнюю строку меняем на:

	global $mysql, $catz, $tpl, $template, $config, $CurrentHandler, $SYSTEM_FLAGS;

3. чуть ниже находим:

		$tvars['vars'] = array(
			'if_active'	=>	(isset($SYSTEM_FLAGS['news']['currentCategory.id']) && ($v['id'] == $SYSTEM_FLAGS['news']['currentCategory.id']))?'active_cat':'',

перед ней вставляем:

		$template['vars']['ifactive:'.$v['alt']] = (isset($SYSTEM_FLAGS['news']['currentCategory.id']) && ($v['id'] == $SYSTEM_FLAGS['news']['currentCategory.id']))?'active_cat':'';

После этого в шаблоне main.tpl должны появиться переменные вида ifactive:альт_имя, которые будут принимать значение 'active_cat' для активной категории и '' (т.е. пустое) для остальных категорий.

Например, есть категории с альт. именами abc, def, news.
Тогда появятся переменные: {ifactive:abc}, {ifactive:def}, {ifactive:news}

p.s. Не проверял, но 90% должно работать сходу :)

Вне форума

#8 2010-01-06 16:09:48

Live
Участник
Здесь с 2009-12-04
Сообщений: 181
Рейтинг :   

Re: Переменная {if_active}

спасибо, работает smile

работает если категория отображается на главной. если не отображается - то не работает

Отредактировано Live (2010-01-06 16:49:12)

Вне форума

#9 2010-01-06 17:18:03

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

Re: Переменная {if_active}

Live, тогда код из п. 3 размести перед строкой:

		if (!substr($v['flags'],0,1)) continue;

и будет работать для всех категорий

Вне форума

#10 2010-01-07 01:32:19

Live
Участник
Здесь с 2009-12-04
Сообщений: 181
Рейтинг :   

Re: Переменная {if_active}

еще раз спасибо smile


появился еще один вопрос - а если ссылка на статичную страницу или плагин - такое можно как то реализовать? :)

Отредактировано Live (2010-01-07 04:13:42)

Вне форума

#11 2010-01-11 05:21:03

hot
Участник
Откуда: Россия
Здесь с 2008-10-26
Сообщений: 173

Re: Переменная {if_active}

Live пишет:

еще раз спасибо smile
появился еще один вопрос - а если ссылка на статичную страницу или плагин - такое можно как то реализовать? :)

---> пример : http://pupkin_vasya.xxx/plugin/feedback/?id=1

Отредактировано hot (2010-01-11 05:38:17)

Вне форума

#12 2010-01-11 12:39:09

Live
Участник
Здесь с 2009-12-04
Сообщений: 181
Рейтинг :   

Re: Переменная {if_active}

hot пишет:

---> пример : http://pupkin_vasya.xxx/plugin/feedback/?id=1

Не понял, к чему это ты написал?

Вне форума

#13 2010-01-11 13:19:24

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

Re: Переменная {if_active}

Live, нет.
Но такое делается достаточно просто средствами JS - ведь достаточно проверить равенство текущего URL'а и URL'а, прописанного в ссылке и на основании этого менять стиль (класс) ссылки.

Вне форума

#14 2010-01-11 15:28:44

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

Re: Переменная {if_active}

Лови. Проверялось под FF, "полёт нормальный":

<html>
<body>
<!-- описание стилей. есс-но лучше делать во внешней CSS, но для демонстрации можно и тут -->
<style>
.linkActive { background: red; }
</style>

<!-- блоку со ссылками даём идентификатор. если блок будет в виде <ul><li>..</li></ul>, то работать надо будет немного по другому -->
<span id="mLinks">
<a href="/">Home</a><br/>
<a href="/guest.html">Guest</a><br/>
<a href="/mail">Mailbox</a><br/>
<a href="/x.html">my active link</a><br/>
</span>

<!-- вот этот скрипт пихаем _обязательно_ после блока с ссылками -->
<script language="javascript">
{
	// Открываем блок со ссылками (тот у которого id="mlinks")
	var llist = document.getElementById('mLinks');
	if (llist) {
	
		// Берём список вложенных объектов
		var children = llist.childNodes;
		
		// Проходим по списку
		var i;
		for (i=0; i<children.length; i++) {
			// Пропускаем всё кроме ссылок (тег: `A`)
			if ((children[i].nodeName != 'A')&&(children[i].nodeName != 'a'))
				continue;
			
			// !!! Проверяем текущий URL !!!
			if (children[i].href == document.location) {
				// А вот тут - прописываем стиль - `linkActive`
				children[i].className = 'linkActive';
			}
		}
	}
} 
</script>

Вне форума

#15 2010-01-12 10:37:14

Live
Участник
Здесь с 2009-12-04
Сообщений: 181
Рейтинг :   

Re: Переменная {if_active}

vitaly, спасибо, имено то что нужно cool
если работать со списком - то нужно пропускать все, кроме тега А и li ? или разница в чем то другом?

Вне форума

#16 2010-01-12 13:13:46

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

Re: Переменная {if_active}

Live, тут древовидная структура, поэтому надо будет сначала найти UL (если id назначать ему, то искать уже не надо), потом в нём найти все li, а потом в каждом LI искать A ... в общем, получится несколько вложенных циклов.

Вне форума

#17 2010-01-17 15:43:16

Live
Участник
Здесь с 2009-12-04
Сообщений: 181
Рейтинг :   

Re: Переменная {if_active}

Может вопрос не совсем по теме
можно подкатегориям присвоить свои классы или ид?
например подкатегории 2 уровня свой класс или ид, 3 - свои

Вне форума

#18 2010-01-19 00:54:42

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

Re: Переменная {if_active}

Live, можно почти так как ты хочешь.
В шаблоне categories.tpl есть переменная {level} (уже минут 5 как есть в SVN версии - changeset 521), категории назначается либо пустой класс, либо - класс active_cat (в зависимости от того активна ли категория)
Зная всё это ты легко сможешь создать нужные классы.

Вне форума

#19 2012-09-13 16:21:17

StiCh
Участник
Здесь с 2012-09-13
Сообщений: 2
Рейтинг :   

Re: Переменная {if_active}

vitaly пишет:

Лови. Проверялось под FF, "полёт нормальный":

<html>
<body>
<!-- описание стилей. есс-но лучше делать во внешней CSS, но для демонстрации можно и тут -->
<style>
.linkActive { background: red; }
</style>

<!-- блоку со ссылками даём идентификатор. если блок будет в виде <ul><li>..</li></ul>, то работать надо будет немного по другому -->
<span id="mLinks">
<a href="/">Home</a><br/>
<a href="/guest.html">Guest</a><br/>
<a href="/mail">Mailbox</a><br/>
<a href="/x.html">my active link</a><br/>
</span>

<!-- вот этот скрипт пихаем _обязательно_ после блока с ссылками -->
<script language="javascript">
{
	// Открываем блок со ссылками (тот у которого id="mlinks")
	var llist = document.getElementById('mLinks');
	if (llist) {
	
		// Берём список вложенных объектов
		var children = llist.childNodes;
		
		// Проходим по списку
		var i;
		for (i=0; i<children.length; i++) {
			// Пропускаем всё кроме ссылок (тег: `A`)
			if ((children[i].nodeName != 'A')&&(children[i].nodeName != 'a'))
				continue;
			
			// !!! Проверяем текущий URL !!!
			if (children[i].href == document.location) {
				// А вот тут - прописываем стиль - `linkActive`
				children[i].className = 'linkActive';
			}
		}
	}
} 
</script>

А можно такой же пример, но для <ul><li>..</li></ul>?

Вне форума

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

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

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

[ Сгенерировано за 0.037 сек, 8 запросов выполнено - Использовано памяти: 596.27 Кбайт (Пик: 633.27 Кбайт) ]