Грозовое tagadelic

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

Аватар пользователя Sergey1 Sergey1 24 февраля 2008 в 7:17

Извиняюсь за оффтопный subj, но как сделать нижеследующее?

Грубо говоря, на сайте есть 2 словаря - Цветы (Ромашки, Фиалки, Гладиолусы) и есть словарь Цветоводство (Free Tagging). Соответственно, есть три раздела - Ромашки, Фиалки, Гладиолусы, куда помещаются ноды, в которых редактор забивает произвольные термины из Цветоводства - типа посадка, прополка, продажа.

Как сделать tagadelic, который бы отображал на странице Ромашки только те тэги из Цветоводства, которые были поставлены в ноды про Ромашки? То же самое - с Фиалками и Гладиолусами.

Может, нужно создавать 3 разных Free Tagging словаря - типа Цветоводство-Ромашки, Цветоводство-Фиалки, Цветоводство-Гладиолусы?

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

Комментарии

Аватар пользователя rain rain 24 февраля 2008 в 14:18

+1

СОбственно, имхо, нужно прикрутить tagadelic к views. Чтобы ссылки из облака вели не в taxonomy, а на адрес текущего view (текущий адрес) + "/" + termid. В принципе, задача-то решаемая, попытаюсь сегодня прикрутить, но, может, кто уже это сделал?

Аватар пользователя Sergey1 Sergey1 24 февраля 2008 в 16:50

Т.е. вы имеете в виду Views + аргумент? А что - выглядит как решение... И создавать лишние словари не надо.

Аватар пользователя rain rain 24 февраля 2008 в 20:19

Прикрутил. Правда, без правки кода не обошлось.

В общем, если это все еще интересно, то вот как это можно сделать:
1. Нам понадобятся следующие модули: views, tagadelic, taxonomy_redirect. Спасибо, vadbars, tagadelic_views тоже пригодится (честно говоря, он у меня был установлен, но я об этом забыл - думал, что он шел в комплекте к тагаделик).

2. После установки taxonomy_redirect немножко исправим ему код. На самом деле, в модуле предусмотрен вызов специальной функции, переопределив которую (в шаблоне, например) можно обойтись без правки кода. Но хакнуть код - гораздо быстрее и понятнее, потому привожу именно этот вариант. Собственно, открываем файл /modules/taxonomy_redirect/taxonomy_redirect.module и добавляем в тело функции taxonomy_redirect_term_path строки:

  if ($path == '!current')
  {
        $p = explode('/',$_GET['q']);
        $p[count($p) - 1] = $term->tid;
        return implode('/', $p);
  }

В результате функция будет выглядеть так:

function taxonomy_redirect_term_path($term) {
  $path = db_result(db_query("SELECT path FROM {taxonomy_redirect} WHERE vid='%d'", $term->vid));
  if (is_null($path))
    return 'taxonomy/term/' . $term->tid;
       
  if ($path == '!current')
  {
        $p = explode('/',$_GET['q']);
        $p[count($p) - 1] = $term->tid;
        return implode('/', $p);
  }

  if (function_exists('taxonomy_redirect_custom_term_path'))
    return taxonomy_redirect_custom_term_path($term, $path);

  return taxonomy_redirect_default_term_path($term, $path);
}

3. Создаем словарь категорий (в нашем примере - Цветоводство). Если он уже есть, то не создаем, используем готовый )). Заходим в Конструкция - taxonomy_redirect и перенаправляем путь нашего словаря в !current.

4. Создаем Views, начнем с двух, потом их расклонируем.

  • Первый View "view_romashki" - типа страница (галочка provide page view), в фильтре добавляем условие на принадлежность к ромашкам, в аргументе вставляем "Taxonomy: Term ID", в поле Wildcard пишем all (это важно!). Адрес страницы: romashki. Все остальные свойства выставляем так, как нам хочется отображать наш ромашковый контент.
  • Второй View "tags_romashki" - block view, view type - tagadelic, в разделе fields добавляем Taxonomy: Terms for Цветоводство, Фильтр - такой же, как в первом view (это чтобы отображались только теги, присутствующие у ромашковых нодов.

Теперь клонируем эти два View и исправляем в них фильтры - с ромашек на Фиалки и Гладиолусы. Всего у нас получится по 2 View на каждый тип цветов. Хотя, конечно было бы круто, чтобы это делалось само, но - ничто не совершенно (честно говоря, для моего приложения это не нужно, а потому дальше я разбираться не стал).

5. Создаем ярлыки в меню: romashki/all, fialki/all и т.д.
6. В блоках размещаем наши вьюшки (tags_...) там где мы хотим их видеть, не забывая указать "Показывать только на выбранных страницах" (например, romashki*)

Собственно, все, должно работать) Пример некоторе время можно будет посмотреть тут. Обращать внимание на названия городов в разделах Пользователи и Где купить.

Следующая итерация - заставить теги в тагаделике подсвечиваться. Но это потом, если руки дойдут)))