реализация таксономии

Прислано: cap

ср, 22/08/2007 - 13:11

Другие статьи по теме:

Столкнулся с такой проблемой, что не пойму как правильно реализовать словари.
Есть такая структура:

Город
-Рубрика
--Подрубрика
--- Объект

если пихать все в один словарь,то получается что для каждого города надо повторять
-Рубрика
--Подрубрика

а есть ли другой способ при котором бы сохранялись все связи

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Gres в ср, 22/08/2007 - 14:04.

Нужно завести 2 словаря: один с городами, а другой с рубриками/подрубриками и отметить целевой тип материала в этих словарях. Теперь для каждого материала нужно выбрать город и рубрику/подрубрику.


Опубликовано cap в ср, 22/08/2007 - 15:24.

я так пробовал, но при таком подходе при выборе города, не отображаются рубрики и подрубрики,а сразу ноды


Опубликовано cap в ср, 22/08/2007 - 15:30.

мне необходимо реализовать такой вид:
сначала появляется страница с названиями городов, дальше при выборе города появляется страница с рубриками ,при выборе рубрики появляются подрубрики и уже при выборе подрубрики появляются ноды привязанные к выбранному городу
например как здесь http://www.irr.ru
заранее благодарен


Опубликовано validoll в ср, 22/08/2007 - 18:54.

Я делал так, как сказал mr. Gres. Только с выводом тут беда. Стандартом не обойтись. Пришлось писать свой модуль по выводу такого вида.
В основе этого модуля лежат ссылки "taxonomy/term/1,2"


Опубликовано cap в чт, 23/08/2007 - 05:28.

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


Опубликовано sas@drupal.org в сб, 25/08/2007 - 13:10.

правильно реализовать словари
IMHO
1) Словарь - город, словарь - рубрики (по логике они не связанные свойства)
2) Необходимо реализовать выбор материала по рубрикам при отборе определенного города
Решение
1.1 Создать views с VIEW TYPE например teaser list
1.2 ARGUMENT -> term name / summary, sort ascending / %1
FILTERS vocabulary name -> города
EXPOSED FILTERS -> taxonomy: terms for -> рубрики
Результат: на странице views выбираем город, получаем группированные ссылки по рубрикам с количеством материалов к каждой, нажимаем на ссылку - получаем список teaser материалов.

P.S. special v.s. for модулям VIEWS
VIEWS_BONUS ( for SUMMARY)

Дело в том, что это у Вас сейчас два словаря, а когда из станет больше, придете к тому, что надо EXPOSED FILTERS использовать на второй странице + списки увеличатся будут не помещаться на странице - опять фильтр начнете использовать. Или у вас есть другие предложения ?


Опубликовано cap в чт, 23/08/2007 - 07:00.

ок всем большое спасибо.
уже попробовал но пока ничего не получилось, видимо точно делаю что-то не так.

1.создал словарь города
в нем сейчас два города
- москва
- нижний новгород

2. создал страницу с городами
здесь у меня для примера две ссылки на города
ссылку на город беру из словаря,наведя на него курсор

3.создал вью с выше описанными параметрами и назначил его для страницы с городами
но при выборе города просто сразу вылазит конечная нода, а не сначала рубрики и все остальное


Опубликовано cap в чт, 23/08/2007 - 07:08.

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


Опубликовано sas@drupal.org в чт, 23/08/2007 - 08:21.

Что бы не писать view для каждого города в Вашем случае поставьте во view- type -> BONUS: summary + full views,
в ARGUMENT поставить -> term ID -> ... -> %1 , а summary убрать :)

Сделали, а вот теперь представьте у Вас 200 городов, спрасите у себя как пользователь будет их отбирать ? Через меню или через фильтр удобней ?


Опубликовано cap в чт, 23/08/2007 - 09:24.

на счет выбора города, может я что-то не понял,но я писал что хочу как здесь http://www.irr.ru/changeRegion,,,34.html
и считаю что это удобней список или чтото другое.
что-то пока ничего у меня не получается, с друпалом начал разбираться совсем недавно, думаю мне надо в этом views поковыряться хорошенько,потому что мне кажется делаю чтото не так.


Опубликовано sas@drupal.org в пт, 24/08/2007 - 05:49.

как здесь http://www.irr.ru/changeRegion,,,34.html
1) В прикрепленном файле импорт для views (материал advertise )
2) Импорт на странице admin/build/views/import
3) В filter ( порядок важен, если поменяете последовательность фильтров то внесите изменение в Argument Handling Code)
у меня второй после материала, выбрать свой Taxonomy: Terms for ...

4) Поменяйте vid в поле Argument Handling Code:
Вам надо только зайти на страницу admin/content/taxonomy навести курсор на пересечение столбца operation строки названия category "Города" ( заменить там где 1 level - число '7' ), "Рубрика" ( заменить там где 2 level - число '8' )
;
5) использовать при вызове страницы ad (сокращение от advertise )

P.S. совершенно IMHO мерзкий подход, на время кодировки поставил "дворник" на монитор.

  $view = new stdClass();
  $view->name = 'ad';
  $view->description = 'ad';
  $view->access = array (
);
  $view->view_args_php = 'if(empty($args[0]))
{
  unset($view->filter[1]);
  $view->filter[2][\'value\'] = array(0 => \'7\');  // "7" this is VID 1 LEVEL !
  $view->filter[2][\'operator\'] = \'OR\';
}
else 
{
     $result = db_query("SELECT vid, name FROM {term_data} t WHERE t.tid = \'%s\'", $args[0]);
     while($terms = db_fetch_array($result))
     { $vids[] = $terms[\'vid\']; 
        $names[] = $terms[\'name\']; 
         break; 
      }
 
     if($vids[0] == \'7\')
     {
       $view->filter[1][\'value\'] = array(0 => $names[0]);  // "$names[0]" this is TERM->NAME
       $view->filter[1][\'operator\'] = \'OR\';
       $view->filter[2][\'value\'] = array(0 => \'8\'); // "8" this is VID 2 LEVEL !
       $view->filter[2][\'operator\'] = \'OR\';
       $view->page_title .= \' - \'.$names[0];
       unset($args[0]);
     }
    else 
       {
        unset($view->filter[1]);  
        unset($view->filter[2]);
        $view->page_title .= \' - \'.$names[0];
      }
}
$view->is_cacheable = 0;
$view->query = \'\';
views_sanitize_view($view);
 
return $args;
 
';
  $view->page = TRUE;
  $view->page_title = 'ad';
  $view->page_header = '';
  $view->page_header_format = '1';
  $view->page_footer = '';
  $view->page_footer_format = '1';
  $view->page_empty = '';
  $view->page_empty_format = '1';
  $view->page_type = 'teaser';
  $view->url = 'ad';
  $view->use_pager = TRUE;
  $view->nodes_per_page = '10';
  $view->sort = array (
  );
  $view->argument = array (
    array (
      'type' => 'taxid',
      'argdefault' => '4',
      'title' => '%1',
      'options' => '',
      'wildcard' => '',
      'wildcard_substitution' => '',
    ),
  );
  $view->field = array (
  );
  $view->filter = array (
    array (
      'tablename' => 'node',
      'field' => 'type',
      'operator' => 'OR',
      'options' => '',
      'value' => array (
  0 => 'advertise',
),
    ),
    array (
      'tablename' => 'term_node_7',
      'field' => 'tid',
      'operator' => 'NOR',
      'options' => '',
      'value' => array (
),
    ),
    array (
      'tablename' => 'term_data',
      'field' => 'vid',
      'operator' => 'OR',
      'options' => '',
      'value' => array (
  0 => '7',
),
    ),
  );
  $view->exposed_filter = array (
  );
  $view->requires = array(node, term_node_7, term_data);
  $views[$view->name] = $view;


Опубликовано cap в сб, 25/08/2007 - 12:54.

большое спасибо за советы,а на счет "P.S. совершенно IMHO мерзкий подход,",
хотелось бы ваше решение посмотреть,может оно мне подойдет.


Опубликовано cap в пн, 27/08/2007 - 12:45.

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


Опубликовано sas@drupal.org в пн, 27/08/2007 - 12:46.

О ! Спасибо, что хоть предупредили - будем знать как в будущем на Ваши вопросы реагировать :)


Опубликовано cap в пн, 27/08/2007 - 17:08.

да? что-то тут не совсем понял в каком смысле)


Опубликовано sas@drupal.org в вт, 28/08/2007 - 05:01.

А что понимать модуль выложите пожалуйста, чтобы страждущие могли использовать, для Вас же старались, а вы чем ответите ?


Опубликовано cap в вт, 28/08/2007 - 05:40.

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


Опубликовано sas@drupal.org в вт, 28/08/2007 - 06:44.

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


Опубликовано SergeV в пт, 07/03/2008 - 11:07.

Кто-нибудь смотрел модуль? У меня точно такая-же задача возникла..
В принципе, taxonomy_menu отлично справляется с задачей - выводит дерево и соответсвующие ноды. Вот бы еще город пользователя как-то запомнить..
А такой вариант не пройдет - использовать для категорий taxonomy_menu, основанный на wiews с аргументом "Город"?


Опубликовано SergeV в вс, 09/03/2008 - 08:36.

Пробую решить с помощью ml_directory ( http://www.drupal.ru/node/11729 ).


Новое на сайте