[gelöst] Node Gallery und Rules
Eingetragen von fraweg (230)
am 11.03.2014 - 16:25 Uhr in
am 11.03.2014 - 16:25 Uhr in
Hallo zusammen,
ich habe mir eine Gallery mit dem Modul Node Gallery (api) erstellt. Ich habe anstatt einem Media ein Imagefield gweählt und es läuft auch alles super. Nun möchte ich, dass die Nodes mit den refrenzierten Images gelöscht werden wenn eine Gallery gelöscht wird. Das möchte ich mit Rules machen. Aber ich bekomm es einfach nicht hin. Hab mich im wesentlichen an dieser alten Rule von mit entlang gehangen.
http://www.drupalcenter.de/node/44347
Hier meine neue Rule:
{ "rules_after_delete_image_gallery" : {
"LABEL" : "After delete image gallery",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"ON" : { "node_delete" : [] },
"DO" : [
{ "entity_query" : {
"USING" : {
"type" : "node",
"property" : "node_gallery_ref_1",
"value" : [ "node" ],
"limit" : "100"
},
"PROVIDE" : { "entity_fetched" : { "entity_fetched" : "Fetched entity" } }
}
},
{ "LOOP" : {
"USING" : { "list" : [ "entity-fetched" ] },
"ITEM" : { "list_item" : "Current list item" },
"DO" : [ { "entity_delete" : { "data" : [ "list-item" ] } } ]
}
},
{ "drupal_message" : { "message" : "Images which have been a reference to the deleted gallery were also deleted." } }
]
}
}
Sieht jemand einen Fehler?
Für Hilfe wäre ich wirklich sehr dankbar..
Beste Grüße
Frank
- Anmelden oder Registrieren um Kommentare zu schreiben
... hat jemand von euch schon
am 12.03.2014 - 16:15 Uhr
... hat jemand von euch schon mal in Verbindung mit dem Module Node Gallery Rules erstellt? Bei anderen entity references klappt da nämlich :-( ...
Viele Grüße
Frank
Hallo nochmal, ich bin jetzt
am 12.03.2014 - 21:59 Uhr
Hallo nochmal,
ich bin jetzt etwas weiter. Wenn eine Node Gallery gelöscht wird, wird auch die Reference gelöscht. Deswegen kann so eine Rule wohl nicht funktionieren. :-(
Nun habe ich ein Modulecode im Internet gefunden welches referenzierte Node löscht. Ich brauche aber ja genau das gegentei. Kann mir jemand helfen wie der Code modifiziert werden muss? Bei mir klappt das nicht so ganz...
Instructions:
This handy little function will delete all children nodes that reference a parent node when you delete it. Helpful if you have multiple users adding content to your site. Or if a workflow of attaching many nodes to one node has a short life cycle. For instance, if a system of petitions attaches requests to it, it is helpful to be able to delete all requests when you delete the petition.
Create a simple module with the code below
In the info file:
name = mymodule
description = Utility module that performs operations on nodes
project = Custom Modules
core = 7.x
In the module file:
<?php
/**
* Implements hook_node_delete().
*/
function mymodule_node_delete($node) {
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')->fieldCondition('field_referencing_parent_node', 'target_id', $node->nid);
$results = $query->execute();
if (!empty($results['node'])) {
$nodes = array_keys($results['node']);
node_delete_multiple($nodes);
}
}
?>
Replace field_referencing_parent_node with the field that references the parent node. Replace mymodule with the actual module name. Entity Field Query will do the rest.
Für Hilfe wäre ich wirklich sehr Dankbar
Frank
Hallo, sooo nun hab ich es...
am 13.03.2014 - 08:49 Uhr
Hallo,
sooo nun hab ich es... für alle diejenigen welche es interessiert...hier die Rule:
{ "rules_delete_a_gallery" : {
"LABEL" : "Delete a gallery",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"ON" : { "node_delete" : [] },
"IF" : [
{ "node_is_of_type" : {
"node" : [ "node" ],
"type" : { "value" : { "node_gallery_gallery" : "node_gallery_gallery" } }
}
}
],
"DO" : [
{ "entity_query" : {
"USING" : {
"type" : "node_gallery_relationship",
"property" : "ngid",
"value" : [ "node" ]
},
"PROVIDE" : { "entity_fetched" : { "entity_fetched" : "Fetched entity" } }
}
},
{ "LOOP" : {
"USING" : { "list" : [ "entity-fetched" ] },
"ITEM" : { "list_item" : "Current list item" },
"DO" : [ { "entity_delete" : { "data" : [ "list-item:nid" ] } } ]
}
},
{ "drupal_message" : { "message" : "Images [entity-fetched:0] which have been a reference to the deleted gallery were also deleted." } }
]
}
}
Das hier " [entity-fetched:0]" war der Schlüssel welchen ich nicht getestet hatte :-(
Viele Grüße
Frank