Как пересечь(связать) словари?

Главные вкладки

Аватар пользователя lukevr lukevr 26 января 2008 в 14:26

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

Например: имеем один словарь со структурой:
Продукты питания
-Молочные
-- молоко
-- кефир
-- сыр
-Мясо
--Говядида
--Свинина

и второй словарь без структуры в котором например такие термины:
(пиво, сыр, хлеб, свининина)

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

как сделать так, что по клику на терм - выдавались ноды относящиеся как к первому, так и второму словарям?

Комментарии

Аватар пользователя Dan Dan 26 января 2008 в 18:37

Опишите логику! С нормальным примером - какой термин, какие ноды, как выводить. А мы подскажем, как это сделать.

(может этого будет достаточно: вывод нодов, привязанных к одному из терминов - taxonomy/term/1+2+3, ко всем терминам - taxonomy/term/1,2,3)

Аватар пользователя lukevr lukevr 27 января 2008 в 16:02

Логика проста - есть два термина с одинаковым именем из разных словарей. К каждому из них привязаны какие то(неважно какие) ноды. Кликая на на первом термине - хочется получить список нод привязанных, как к термину на котором кликаю, так и нод привязаных к другому термину(с таким же названием), но из другого словаря. Алгоритм такой выборки понятен - я спрашивал о готовом решении. Спасибо за ответы.

Аватар пользователя emzi emzi 27 января 2008 в 13:48

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

Аватар пользователя lukevr lukevr 27 января 2008 в 15:40

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

Аватар пользователя Dan Dan 28 января 2008 в 8:11

У терминов есть понятие синонимов. Можно задействовать этот механизм. Например по крону связывать термины друг с другом. Или при добавлении.

Аватар пользователя lukevr lukevr 28 января 2008 в 22:36

Насколько я помню синонимы устанавливать можно, но реальной функциональности по работе с ними в стандартной поставке Друпала нет. Смотрел когда то модуль на эту тему, но он не заработал и я нашёл какой то вокераунд...

Аватар пользователя lukevr lukevr 29 января 2008 в 6:00

может кому пригодится Smile
Болванка Views Argument Handling Code для вывода нод по всем одноимённым термам из всех существующих словарей:

if ($args[0]) {
$arg = $args[0];
$maint = taxonomy_get_term($arg);
$mainn = $maint->name;
// $mainv = $maint->vid;
$term_arr = taxonomy_get_term_by_name($mainn);
$count_arr = count($term_arr);
$queue = 0;
for ($i = 0; $i < $count_arr; $i++) {
$cur_term = $term_arr[$i];
if($queue == 0){$queue = $cur_term->tid;}else{$queue = $queue.'+'.$cur_term->tid;}
}
$args[0] = $queue;
$view->argument[0]['title'] = 'TERM: \''.$mainn.'\' ';
}

Аватар пользователя FuN_ViT FuN_ViT 27 марта 2008 в 15:46

странно что нет такой возможности. например у меня есть словарь стран и языков... а связать португалию с португальским - никак!

Аватар пользователя lukevr lukevr 5 апреля 2008 в 17:43

связать то можно, через terms synonyms and related terms. Вот с выводом не получается, нету, вроде как, в стандартном друпале вывода нод по синонимам. Назначение синонимов терму - есть, а вывода нет. Надо самому писать.