function my_module_node_delete($node) { //Удаление фотографий галереи, в случае удаления самой галереи if($node->type == 'node_gallery_gallery') { $res = db_select('node_gallery_relationship', 'gr')->condition('gr.ngid', $node->nid)->fields('gr', array('nid'))->execute(); while($r = $res->fetchAssoc()) { $nids[] = $r['nid']; } node_delete_multiple($nids); } } }
Удаление дочерних материалов Node Gallery
Модуль Node Gallery позволяет создавать на сайте галереи. Причём каждое фото одной галереи - это отдельная нода.
Пересматривать такую галереи не очень удобно, так как придётся обновлять страницу, а не использовать AJAX. Но зато можно темизировать каждую страницу фото, заполнять мета тэги и повысить кликабельность сайта. Для чего это нужно - решайте сами. и нужно ли вам это вообще.
Тем не менее этот модуль имеет право на существование.
Однако в нём есть один недостаток, скорее баг, нежели фича.
Суть его в следующем: если у галереи есть несколько фотографий-то при удалении само фотогалереи приаттаченые фотографии не удаляются.
Решается эта проблема очень просто. Создаёте свой модуль и имплементируете в нём hook_node_delete
Этот хук перехватит удаление ноды. Соответственно перед удаление галереи можно посмотреть её nid и по нему найти и удалить все дочерние фотографии.
Для модуля с именем my_module код выглядит следующим образом:
Актуально для Drupal 7.