Как публиковать узлы, на которые ссылаются, одновременно с публикацией узла?


У меня есть тип контента продукта и тип контента обзора. Пользователь может создать узел продукта, а затем несколько пользователей могут просмотреть его. В типе контента "Обзор" есть поле ссылки на узел, которое связывает тип продукта с помощью виджета URL-адреса ссылки на узел.

Пользователь может создавать и редактировать узел продукта, но он не публикуется. Однако есть ссылки из виджета URL-адреса ссылки на узел, который позволяет прикреплять обзоры, которые публикуются немедленно. Сейчас У меня есть просмотры на других страницах с отзывами, которые ссылаются на неопубликованный узел. Это не работает.

Как я могу разрешить делать обзоры, но не публиковать их, если продукт не опубликован, и публиковать, если продукт опубликован? Существуют ли методы, использующие правила?

Author: Adam S, 2011-07-19

2 answers

Я бы изучил правила. Это должно быть простое решение проблемы с ними. Если нет, то вот как вы бы закодировали его в пользовательском модуле

Drupal 6:

/**
 *  Implements hook_nodeapi()
 */
function MYMODULE_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  switch ($op) {
    case 'presave':
      //check for correct type
      if ($node->type == 'review') {
        if ($node->field_product_node_reference[0]['value']) {
           $product = node_load($node->field_product_node_reference[0]['value']);
           if ($product->status == 0) {
             //product is unpublished, set review to unpublish
             $node->status = 0;
           }
        }
      }
      break;
  }
}

Друпал 7: hook_nodeapi() был изменен. Создайте MYMODULE_node_presave($узел). Используйте тот же код.

 1
Author: iStryker, 2011-07-20 02:52:17

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

Однако мне просто нужно было скрыть отзывы в представлениях, которые были распространены по всему сайту. Это делается с помощью отношения содержимое: ссылка и добавления фильтра содержимое: опубликовано, который использует связь узла, на который ссылается, для проверки, опубликовано ли оно.

В отзывы всегда будут публиковаться. Их можно просматривать, если люди знают, где искать, что не имеет значения. Однако теперь анонимный пользователь, не попадающий на главную страницу, видит представление с новым обзором, в котором содержится ссылка на продукт, который не опубликован, что приводит к ошибке "Страница не найдена".

 1
Author: Adam S, 2011-07-20 00:55:23