форум общения русскоязычных пользователей CMS Текстпаттерн
Вы не зашли.
Ребята, ну я же не просто так спрашиваю.... Помощи прошу.
Вопрос такой.
Есть:
Правая часть: Левая часть:
Категория1
Подкатегория1-1
Подкатегория1-2
Категория2
Подкатегория2-1
Подкатегория2-2
Правую часть я вывожу следующим образом:
<txp:stw_category_tree start="catalog" label="<span>Каталог</span>" labeltag="h3" wraptag="ul" break="li" />
Теперь вопрос, можно ли сделать так:
Выбираем в правой части Категорию1 и получаем:
Правая часть: Левая часть:
Категория1 Подкатегория1-1
Подкатегория1-1 Подкатегория1-2
Подкатегория1-2
Категория2
Подкатегория2-1
Подкатегория2-2
Не используя конструкции:
<txp:if_category name="Категория1">
И далее:
Выбираем в правой части Подкатегорию1-1 и получаем:
Правая часть: Левая часть:
Категория1 Статья1-1-1
Подкатегория1-1 Статья1-1-2
Подкатегория1-2
Категория2
Подкатегория2-1
Подкатегория2-2
Не используя конструкции:
<txp:if_category name="Подкатегория1">
Отредактированно raivilion (13-03-2007 20:01:18)
Неактивен
Очень прошу, подскажите, можно ли это реализовать?
Может быть я вопрос неправильно сформулировал.
Хочется, чтобы система была универсальной и пользователь мог добавлять подкатегории и статьи и они отображались в каталоге без правки кода.
То есть, если пользоваться конструкцией
<txp:if_category name="Подкатегория1">
то при добавлении новой подкатегории придется добавлять ещё одно такое условие, а можно ли написать условие одно, грубо говоря
<txp:if_category name="Переменная">
Где Переменная содержит имя выбранной (щелкнутой) подкатегории
Отредактированно raivilion (13-03-2007 20:44:41)
Неактивен
raivilion, универсальность - хорошая вещь, но на практике востребованность ее преувеличена.
такие вещи как разделы (секции) и категории сайта - лучше менять как можно реже и очень аккуратно.
Это способствует долгожительству сайта.
Что касается описанной задачи...
Правильно ли понял?
страница 1: справа - список категорий, одна из которых выбрана ----> слева - список дочерних (к этой выбранной) категорий.
страница 2: справа - список категорий, одна из которых выбрана ----> слева список статей этой категории.
по второй странице проблем вроде быть должно. или есть?
по первой - сразу возникает вопрос - а что делать, если выбрана дочерняя категория (подкатегория)?
Но главное - еще раз вернемся к началу - правильно ли мы понимаем друг друга? :-)
Неактивен
Evgeny написал:
Что касается описанной задачи...
Правильно ли понял?
страница 1: справа - список категорий, одна из которых выбрана ----> слева - список дочерних (к этой выбранной) категорий.
страница 2: справа - список категорий, одна из которых выбрана ----> слева список статей этой категории.
Всё так, только хочу я это реализовать всё на одной странице.
Evgeny написал:
по второй странице проблем вроде быть должно. или есть?
по первой - сразу возникает вопрос - а что делать, если выбрана дочерняя категория (подкатегория)?
Если на первой странице выбрана подкатегория, то выводятся статьи ей принадлежащие.
Неактивен
raivilion написал:
Всё так, только хочу я это реализовать всё на одной странице.
Ага! понял.
то есть, нужно что-то такое-
в правой части список категорий, с автоматической подсветкой текущей категории (надо смотреть - есть ли в плагине такая возможность).
в левой части -
если родительская категория,
то выводим список дочерних категорий
если дочерняя категория,
то выводим список статей для данной категории.
чтобы реализовать такую конструкцию - нужен условный тэг, который определяет тип категории.
на память такого тэга не припомню :-(
надо поискать среди плагинов
UPD. На всякий случай- конструкция, которая выше указана - должна быть обрамлена тэгами txp:if_category
UPD2. Можно и самому плагин написать. C php какие взаимоотношения?
Отредактированно Evgeny (14-03-2007 15:21:59)
Неактивен
Evgeny написал:
Ага! понял.
то есть, нужно что-то такое-
в правой части список категорий, с автоматической подсветкой текущей категории (надо смотреть - есть ли в плагине такая возможность).
в левой части -
если родительская категория,
то выводим список дочерних категорий
если дочерняя категория,
то выводим список статей для данной категории.
Бинго!!! Именно это я и хочу... Подсветку текущей категории можно сделать связкой CSS и JS, я сейчас занимаюсь этим вопросом
Evgeny написал:
чтобы реализовать такую конструкцию - нужен условный тэг, который определяет тип категории.
на память такого тэга не припомню :-(
надо поискать среди плагинов
К сожалению так и не научился пока отыскивать, что либо нужное среди плагинов.
Неактивен
raivilion написал:
Подсветку текущей категории можно сделать связкой CSS и JS, я сейчас занимаюсь этим вопросом
в каком то из плагинов видел атрибут classactiv или activclass. JS, как и флэш, в навигации - это от лукавого.
raivilion написал:
К сожалению так и не научился пока отыскивать, что либо нужное среди плагинов.
я там добавил в верхнее сообщение - можно и самому такой плагин написать, если php не пугает
Неактивен
Evgeny написал:
я там добавил в верхнее сообщение - можно и самому такой плагин написать, если php не пугает
PHP пугает... пока что очень пугает.
Неактивен
сейчас посмотрел свои загашники - оказывается писал такую функцию, но в плагин не оформил :-( так руки и не дошли.
и к тому же - для 4.0.3.
нет сейчас ни желания, ни возможности проверять работоспособность.
если с компилятором есть желание разбиратьcя - php-код выложу.
Неактивен
Evgeny написал:
сейчас посмотрел свои загашники - оказывается писал такую функцию, но в плагин не оформил :-( так руки и не дошли.
и к тому же - для 4.0.3.
нет сейчас ни желания, ни возможности проверять работоспособность.
если с компилятором есть желание разбиратьcя - php-код выложу.
Выкладывай... учиться так по полной программе.
Неактивен
function fetch_category_parent($name, $type='article') { static $catparent = array(); if (isset($catparent[$type][$name])) return $catparent[$type][$name]; $f = safe_field('parent','txp_category',"name='".doSlash($name)."' and type='".doSlash($type)."'"); $catparent[$type][$name] = $f; return $f; } function rus_if_category($atts, $thing) { global $c; extract(lAtts(array( 'name' => '', 'parent' => '', ),$atts)); $tmp_name=trim($name); if (trim($parent)) { if ( !$tmp_name ) { $tmp_name = $c; } $parent_cat=fetch_category_parent($name); return parse(EvalElse($thing, ($parent_cat==$parent))); } if ($tmp_name) { return parse(EvalElse($thing, in_list($c, $name))); } return parse(EvalElse($thing, !empty($c))); }
Обращение: txp:rus_if_category, атрибуты: name - имя (латинницей) категории, parent - имя родительской категории.
Хм... смотрю код - не совсем то, что нужно... Здесь определяет имя конкретной родительской категории.
Но его можно модифицировать, изменив строку
return parse(EvalElse($thing, ($parent_cat==$parent)));
на
return parse(EvalElse($thing, ($parent_cat)));
Вроде, навскидку - так...
Успехов!
UPD.
учитывай, что это определение имеет смысл для двухуровневой структуры категорий.
для трехуровневой и выше надо думать над другой конструкцией.
UPD2. Что-то засомневался...
Но его можно модифицировать, изменив строку
return parse(EvalElse($thing, ($parent_cat==$parent)));
на
return parse(EvalElse($thing, ($parent_cat)));
Подзабыл, но возможно менять придется на
return parse(EvalElse($thing, ($parent_cat!='root')));
надо попробовать, но пробовать начинать лучше с последнего варианта.
Отредактированно Evgeny (15-03-2007 09:37:07)
Неактивен
Делал что-то похожее с помощью stw_category_tree. Попробуй, может это то, что тебе нужно.
меню категорий справа -
<txp:stw_category_tree onclass="current" section="секция" />
onclass="current" - подсветка текущей категории. и не нужно никаких JS . Не знаю подсвечивает ли дочерние категории (мне это небыло нужно), но основную точно подсвечивает.
слева -
<txp:if_individual_article> <txp:article/> <txp:else/> <txp:stw_category_tree start="*" section="секция"/> <txp:article listform="линки-заголовки_статей"/> </txp:if_individual_article>
upd: Статье, при добавлении, нужно выставлять _только_ дочернюю категорию.
Отредактированно Pho-No (14-03-2007 21:33:10)
Неактивен
Pho-No написал:
Делал что-то похожее с помощью stw_category_tree. Попробуй, может это то, что тебе нужно.
Спасибо огромное
Двигаемся дальше....
После долгих переговоров с заказчиком было решено ПОКА делать не универсально... а прописывать в <txp:if_category name=""> имя необходимой подкатегории.
Отредактированно raivilion (19-03-2007 22:01:39)
Неактивен
Следующий вопрос перенес в другую тему.
Отредактированно raivilion (19-03-2007 22:03:15)
Неактивен