Drupal: поле таксономии cck с глубокой фильтрацией - PullRequest
2 голосов
/ 21 февраля 2010

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

Asia
    China
        Shanghai
        Beijing
    Japan
        Tokyo
        Nagoya
    Indonesia
        Bandung
        Banjar
Europe
    France
        Paris
        Lyon
    Germany
        Berlin
        Hamburg
    UK
        London
        Birmingham
North America
    Cananda
        Toronto
        Ottawa
    USA
        New York
        Texas

Я хочу, чтобы пользователи могли выбирать, скажем, Европу и находить весь контент, соответствующий Франции, Германии или Великобритании и их дочерним узлам.

Ответы [ 4 ]

0 голосов
/ 22 марта 2010

Я полагаю, что он имеет в виду, что это делается с помощью Views, поэтому, когда кто-то ищет и говорит «Япония», результаты также помечаются и с Азией. Для этого потребуется аргумент, Таксономия: Термин ID (с глубиной).

Оттуда вы будете проверять $ node-> taxonomy и, используя tid, получить его родителя, использовать taxonomy_get_tree, чтобы получить дочерние элементы, и вернуть все значения. Это требует написания некоторого PHP-кода для проверки и возврата таксономии. Если вы не знаете, как это сделать, я могу уточнить.

0 голосов
/ 28 февраля 2010

вы можете использовать модуль дерева таксономии отсюда , это обойдется вам менее чем в 10 минут :), прочитайте файл QUICKSTART оттуда.

0 голосов
/ 22 марта 2010

Когда вы сохраняете элемент с помощью таксономии Шанхай, статья получает только таксономию Шанхая.

В идеале вы хотели бы, чтобы статья получила таксономию Азии, Китая, Шанхая. Таким образом, вы получите статью, когда кто-то ищет даже Азию.

Способ сделать это - использовать модуль выбора иерархии. В нем есть параметр, который заставляет сохранять всю таксономию родительских элементов (например, Азия, Китай) и при сохранении Шанхая.

Пожалуйста, спросите меня, если у вас есть проблемы с поиском этого параметра.

0 голосов
/ 22 февраля 2010

Вы можете использовать taxonomy_get_tree () с аргументом $ parent термина, чтобы получить список терминов, а затем использовать это в предложении WHERE x IN (), это уродливо и будет ограничено определенным количество терминов, но будет делать то, что вы хотите.

Вы можете обнаружить, что solr сделает это из коробки, но я точно не знаю.

...