Textpattern - на русском языке

форум общения русскоязычных пользователей CMS Текстпаттерн

Вы не зашли.

#1 12-03-2007 21:36:21

raivilion
живёте
Откуда: Екатеринбург
Зарегистрирован: 14-02-2007
Сообщений: 86

Продолжаем настраивать каталог :)

Ребята, ну я же не просто так спрашиваю.... Помощи прошу. sad

Вопрос такой.

Есть:

Правая часть:                          Левая часть:
Категория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)

Неактивен

 

#2 13-03-2007 20:01:53

raivilion
живёте
Откуда: Екатеринбург
Зарегистрирован: 14-02-2007
Сообщений: 86

Re: Продолжаем настраивать каталог :)

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

Может быть я вопрос неправильно сформулировал.

Хочется, чтобы система была универсальной и пользователь мог добавлять подкатегории и статьи и они отображались в каталоге без правки кода.

То есть, если пользоваться конструкцией

Код:

<txp:if_category name="Подкатегория1">

то при добавлении новой подкатегории придется добавлять ещё одно такое условие, а можно ли написать условие одно, грубо говоря

Код:

<txp:if_category name="Переменная">

Где Переменная содержит имя выбранной (щелкнутой) подкатегории

Отредактированно raivilion (13-03-2007 20:44:41)

Неактивен

 

#3 14-03-2007 13:25:28

Evgeny
ять
Зарегистрирован: 15-03-2005
Сообщений: 1869

Re: Продолжаем настраивать каталог :)

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

Что касается описанной задачи...
Правильно ли понял?
страница 1: справа - список категорий, одна из которых выбрана ----> слева - список дочерних (к этой выбранной) категорий.
страница 2: справа - список категорий, одна из которых выбрана ----> слева список статей этой категории.

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

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

Неактивен

 

#4 14-03-2007 13:48:52

raivilion
живёте
Откуда: Екатеринбург
Зарегистрирован: 14-02-2007
Сообщений: 86

Re: Продолжаем настраивать каталог :)

Evgeny написал:

Что касается описанной задачи...
Правильно ли понял?
страница 1: справа - список категорий, одна из которых выбрана ----> слева - список дочерних (к этой выбранной) категорий.
страница 2: справа - список категорий, одна из которых выбрана ----> слева список статей этой категории.

Всё так, только хочу я это реализовать всё на одной странице.

Evgeny написал:

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

Если на первой странице выбрана подкатегория, то выводятся статьи ей принадлежащие.

Неактивен

 

#5 14-03-2007 15:09:55

Evgeny
ять
Зарегистрирован: 15-03-2005
Сообщений: 1869

Re: Продолжаем настраивать каталог :)

raivilion написал:

Всё так, только хочу я это реализовать всё на одной странице.

Ага! понял.
то есть, нужно что-то такое-
в правой части список категорий, с автоматической подсветкой текущей категории (надо смотреть - есть ли в плагине такая возможность).
в левой части -
        если родительская категория,
                 то выводим список дочерних категорий
        если дочерняя категория,
                 то выводим список статей для данной категории.

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

UPD. На всякий случай- конструкция, которая выше указана - должна быть обрамлена тэгами txp:if_category

UPD2. Можно и самому плагин написать. C php какие взаимоотношения?

Отредактированно Evgeny (14-03-2007 15:21:59)

Неактивен

 

#6 14-03-2007 15:21:32

raivilion
живёте
Откуда: Екатеринбург
Зарегистрирован: 14-02-2007
Сообщений: 86

Re: Продолжаем настраивать каталог :)

Evgeny написал:

Ага! понял.
то есть, нужно что-то такое-
в правой части список категорий, с автоматической подсветкой текущей категории (надо смотреть - есть ли в плагине такая возможность).
в левой части -
        если родительская категория,
                 то выводим список дочерних категорий
        если дочерняя категория,
                 то выводим список статей для данной категории.

Бинго!!! Именно это я и хочу... Подсветку текущей категории можно сделать связкой CSS и JS, я сейчас занимаюсь этим вопросом smile

Evgeny написал:

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

К сожалению так и не научился пока отыскивать, что либо нужное среди плагинов.

Неактивен

 

#7 14-03-2007 15:26:41

Evgeny
ять
Зарегистрирован: 15-03-2005
Сообщений: 1869

Re: Продолжаем настраивать каталог :)

raivilion написал:

Подсветку текущей категории можно сделать связкой CSS и JS, я сейчас занимаюсь этим вопросом smile

в каком то из плагинов видел атрибут classactiv или activclass. JS, как и флэш, в навигации - это от лукавого.

raivilion написал:

К сожалению так и не научился пока отыскивать, что либо нужное среди плагинов.

я там добавил в верхнее сообщение - можно и самому такой плагин написать, если php не пугает

Неактивен

 

#8 14-03-2007 15:28:47

raivilion
живёте
Откуда: Екатеринбург
Зарегистрирован: 14-02-2007
Сообщений: 86

Re: Продолжаем настраивать каталог :)

Evgeny написал:

я там добавил в верхнее сообщение - можно и самому такой плагин написать, если php не пугает

PHP пугает... пока что очень пугает. sad

Неактивен

 

#9 14-03-2007 15:36:50

Evgeny
ять
Зарегистрирован: 15-03-2005
Сообщений: 1869

Re: Продолжаем настраивать каталог :)

сейчас посмотрел свои загашники - оказывается писал такую функцию, но в плагин не оформил :-( так руки и не дошли.
и к тому же - для 4.0.3.
нет сейчас ни желания, ни возможности проверять работоспособность.

если с компилятором есть желание разбиратьcя - php-код выложу.

Неактивен

 

#10 14-03-2007 15:41:15

raivilion
живёте
Откуда: Екатеринбург
Зарегистрирован: 14-02-2007
Сообщений: 86

Re: Продолжаем настраивать каталог :)

Evgeny написал:

сейчас посмотрел свои загашники - оказывается писал такую функцию, но в плагин не оформил :-( так руки и не дошли.
и к тому же - для 4.0.3.
нет сейчас ни желания, ни возможности проверять работоспособность.

если с компилятором есть желание разбиратьcя - php-код выложу.

Выкладывай... учиться так по полной программе.

Неактивен

 

#11 14-03-2007 16:47:17

Evgeny
ять
Зарегистрирован: 15-03-2005
Сообщений: 1869

Re: Продолжаем настраивать каталог :)

Код:

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)

Неактивен

 

#12 14-03-2007 21:24:04

Pho-No
есть
Зарегистрирован: 07-06-2006
Сообщений: 61
Вебсайт

Re: Продолжаем настраивать каталог :)

Делал что-то похожее с помощью stw_category_tree. Попробуй, может это то, что тебе нужно.

меню категорий справа -

Код:

<txp:stw_category_tree onclass="current" section="секция" />

onclass="current" - подсветка текущей категории. и не нужно никаких JS wink. Не знаю подсвечивает ли дочерние категории (мне это небыло нужно), но основную точно подсвечивает.

слева -

Код:

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

Неактивен

 

#13 14-03-2007 22:37:28

raivilion
живёте
Откуда: Екатеринбург
Зарегистрирован: 14-02-2007
Сообщений: 86

Re: Продолжаем настраивать каталог :)

Pho-No написал:

Делал что-то похожее с помощью stw_category_tree. Попробуй, может это то, что тебе нужно.

Спасибо огромное smile

Двигаемся дальше....
После долгих переговоров с заказчиком было решено ПОКА делать не универсально... а прописывать в <txp:if_category name=""> имя необходимой подкатегории.

Отредактированно raivilion (19-03-2007 22:01:39)

Неактивен

 

#14 16-03-2007 13:53:09

raivilion
живёте
Откуда: Екатеринбург
Зарегистрирован: 14-02-2007
Сообщений: 86

Re: Продолжаем настраивать каталог :)

Следующий вопрос перенес в другую тему.

Отредактированно raivilion (19-03-2007 22:03:15)

Неактивен

 

Board footer

RSS   Rambler's Top100
Powered by PunBB
Textpattern.ru