Как публиковать узлы, на которые ссылаются, одновременно с публикацией узла?
У меня есть тип контента продукта и тип контента обзора. Пользователь может создать узел продукта, а затем несколько пользователей могут просмотреть его. В типе контента "Обзор" есть поле ссылки на узел, которое связывает тип продукта с помощью виджета URL-адреса ссылки на узел.
Пользователь может создавать и редактировать узел продукта, но он не публикуется. Однако есть ссылки из виджета URL-адреса ссылки на узел, который позволяет прикреплять обзоры, которые публикуются немедленно. Сейчас У меня есть просмотры на других страницах с отзывами, которые ссылаются на неопубликованный узел. Это не работает.
Как я могу разрешить делать обзоры, но не публиковать их, если продукт не опубликован, и публиковать, если продукт опубликован? Существуют ли методы, использующие правила?
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($узел). Используйте тот же код.
Разрабатываются массовые операции с представлениями правил, которые, как мы надеемся, позволят изменить триггер узла с помощью аргумента представлений, реакцию VBO, которая, например, отменит публикацию набора узлов, на которые ссылаются.
Однако мне просто нужно было скрыть отзывы в представлениях, которые были распространены по всему сайту. Это делается с помощью отношения содержимое: ссылка и добавления фильтра содержимое: опубликовано, который использует связь узла, на который ссылается, для проверки, опубликовано ли оно.
В отзывы всегда будут публиковаться. Их можно просматривать, если люди знают, где искать, что не имеет значения. Однако теперь анонимный пользователь, не попадающий на главную страницу, видит представление с новым обзором, в котором содержится ссылка на продукт, который не опубликован, что приводит к ошибке "Страница не найдена".