bei Erstellung eines bestimmten Content Typen automatisch Taxonomy Term (Term Tile=Node Tile) erstellen
Eingetragen von Neon03 (8)
am 18.12.2009 - 18:44 Uhr in
am 18.12.2009 - 18:44 Uhr in
Hallo werte Drupaler, wie die Überschrift verrät, habe ich ein nicht alltägliches Problem.
Ich möchte bei der Erstellung eines bestimmten Content Typen, automatisch ein Taxonomy Term erstllen, dessen Name identisch mit dem des Node Titel ist.
Nun die Frage wie mache ich das. Ich habe bereits den Tipp von wegen hook_nodeapi (http://api.drupal.org/api/function/hook_nodeapi/6) bekommen, jedoch habe ich von dessen bedienung überhaupt keine Ahnung.
Hat jemand eventuell eine andere Idee. Eventuell über eine Action oder so?.
Vielen Dank
- Anmelden oder Registrieren um Kommentare zu schreiben
Das geht eigentlich recht
am 18.12.2009 - 20:58 Uhr
Das geht eigentlich recht einfach über die Module Rules und Token.
Damit erstellst du dir eine neue Regel, wählst als "Auslöser", dass ein neuer Inhalt gespeichert werden soll.
Als Bedingung fügst du dann hinzu, dass der Inhalt einen bestimmten Inhaltstyp haben soll.
Dann brauchst du noch zwei Aktionen: Zuerst musst du das Vokabular laden, dem der Begriff hinzugefügt werden soll. Wenn du das gemacht hast, kannst du auch als Aktion auswählen, dass du einen Begriff hinzufügen möchtest. Dort kannst du dann mittels Token den Pattern für den Node-Titel eintragen und schon wird jedes mal der Node-Titel als neuer Begriff angelegt.
Ok super vielen Dank schon
am 03.01.2010 - 10:42 Uhr
Ok super vielen Dank schon einmal. Es entsteht jedoch nun ein Problem von doppelten Taxonomy Term Einträgen.
Ich habe bis jetzt folgendes gemacht.
Rules(Going to be saved)
ON
Saved Content is (XYZ)
DO
Load Vocabulary(Hallo)
Add a new term to Vocabulary(node:title)
Nun wird jedoch bei jedem ändern des Inhaltes dieser Term dem Vocaular hinzugefügt. Also entstehen doppelte Einträge. Jedoch war es mir nicht möglich via dem Rules Modul doppelte Einträge in der Taxonomy Term Liste zu entfernen. Ich habe es folgendermaßen versucht.
Rules (After saving a new term (Taxonomy))
ON
Nun scheitert es da ich eigentlich den Node:Tilte mit dem eventuell bereits vorhandenen Eintrag bei den Taxonomy terms vergleichen möchte. Wenn dies positiv wäre, würde ich den Term einfach löschen.
Hast du eventuell eine Idee. Vielleicht ist mein Ansatzt falsch.
Danke
Grüße aus dem fernen Tansania
Grüße aus dem fernen Tansania
so ich habe jetzt mich
am 03.01.2010 - 15:55 Uhr
so ich habe jetzt mich nochmal innig mit dem Modul beschäftigt.
nun habe ich eine Regel angelegt welche bei Änderung des Content Typen XYZ
den alten Taxonomy Term via [node_unchanged:term-id] lädt und diesen danach löschen soll. jedoch passiert einfach mal nichts?
ich bin echt ratlos
After updating existing Content
if content type is XYZ
do
Load old XYZ taxonomy term ([node_unchanged:term-id])
Delete the old term
end
end
Grüße aus dem fernen Tansania
Das mit dem löschen des
am 03.01.2010 - 16:17 Uhr
Das mit dem löschen des Taxonomy-Terms ist doch völlig unnötig. Lösch die neue Regel, welche den alten Term löschen soll, am besten gleich wieder ;-)
Du hast deine ursprüngliche Regel zum Hinzufügen des neuen Begriffes schon falsch eingestellt.
Deine "ON"- und "DO"-Anweisungen stimmen schonmal, nämlich "Wenn der Inhalt den Typ x hat, dann lade das Vokabular 'y' und füge ihm den Node-Titel als Begriff hinzu".
Das ist so in Ordnung, allerdings hast du als Event, also als Auslöser für die Regel, "Content is going to be saved" ausgewählt, zu deutsch "Inhalt soll gespeichert werden". Da wird natürlich der Term immer wieder neu gespeichert, weil die Regel eben beim ändern des Inhaltes wieder aufgerufen wird, weil du ja den Inhalt wieder speicherst.
Das Problem lässt sich ganz einfach umgehen: Nimm als Event nicht "Content is going to be saved", sondern "After saving new content" (oder auf deutsch: "Nach dem Speichern von neuem Inhalt"), dann wird die Regel nur dann ausgelöst, wenn du einen neuen Node anlegst und diesen speicherst. Das ändern von Nodes löst diese Bedingung nicht aus und damit wird auch nur ein neuer Term hinzugefügt, wenn du einen neuen Inhalt anlegst, so wie gewünscht.
mfg Exterior
Ok ich hab das jetzt mal zu
am 04.01.2010 - 09:40 Uhr
Ok ich hab das jetzt mal zu dem "after saving new content" geändert. Jedoch folgendes szenario. Jemand ändert einen eintrag bzw. den titel eines eintrages (titel des eintrages = taxonomy term). Nun soll der alte taxonomy term gelöscht werden und der neue hinzugefügt werden.
aber ich habs jetzt hinbekommen. mein fehler war das ich dem jeweiligen content nicht den taxonomy term zugeordnet habe. also konnte er natürlich auch nicht vom content gelöscht werden.
vielen dank
Grüße aus dem fernen Tansania