Вы здесь

Как программно вывести ноды с определённым термином?

0

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

В принципе вывести сами ноды имеющие связь с одним и тем же термин можно и вьюсом, но очень хочется похардкодить) + мне нужно проверить связь не на один словарь, а на два)

Версия Drupal: 
7.x
Категория: 
Node APITaxonomy API
Вопрос задан 08.05.2017 - 19:56

Если у вас утановлен entity api, то можно EntityFieldQuery
у xandeadx есть универсальная функция
или немного доработанная у меня
Если нет entity api
то node_load()
что то примерно вот так

$nid = db_select('node', 'n')
->condition('n.type', 'your_node_type')
->condition('n.title', 'your node title')
->condition('n.status', 1)
->fields('n', array('nid'))
->execute()->fetchField();


if($nid !== FALSE) { $node = node_load($nid); }
Комментарий оставлен 08.05.2017 - 21:38

На сколько я понимаю функция что указана тут, выводит одну ноду, а как вывести все ноды которые совпадают с условиями поиска?
Или Ваша откорректированная функция именно это и делает?)

Правильный ли запрос?

      $node_address = batkor_forms_entity_load(
        'node',
        array('type' => 'address'),
        array('field_state_address' => array('tid' => 1)),
        array('field_city_address' => array('tid' => 8483))
      );

Почему то срабатывает только первое и второе правило..
type и field_state_address..

Я так понимаю моя ошибка как раз в формировании условия к двум полям?

      $node_address = batkor_forms_entity_load(
        'node',
        array('type' => 'address'),
        array(
          'field_city_address' => array('tid' => 8483),
          'field_state_address' => array('tid' => 41)
          )
      );
Комментарий оставлен 09.05.2017 - 12:47

Ответы

0
$nids = db_query("SELECT nid FROM {taxonomy_index} WHERE tid = :tid", array(':tid' => $tid))->fetchCol();
$nodes = node_load_multiple($nids);
$build = node_view_multiple($nodes);
echo render($build);
Ответ дан 09.05.2017 - 02:04
Аватар пользователя xandeadx
xandeadx
1455