Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

[gelöst] Einen Taxonomy term automatisch erstellen

Eingetragen von Schnittmenge@dr... (288)
am 10.04.2012 - 10:04 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Wenn ich eine neue Node erstelle, möchte ich automatisch eine Topic-ID vergeben, die aus Text-node:url-user-uid-node-:created:raw-current besteht, welche als ein neuer Taxonomy Term gespeichert werden soll.

Ich schaffe es mit der Hilfe von Token diese Topic-ID in ein Field zu schreiben, doch wie lege ich diesen Wert als neuen Taxonomy Term automatisch fest.

Dank im Voraus.

Saludos,
Schnittmenge

‹ Plupload Tabellen-schemen und Contenttypes ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Also ich vermute, dass ich

Eingetragen von Schnittmenge@dr... (288)
am 10.04.2012 - 11:22 Uhr

Also ich vermute, dass ich mit http://drupal.org/project/computed_field folgenden hook aufrufen muss => http://api.drupal.org/api/drupal/modules!taxonomy!taxonomy.api.php/function/hook_taxonomy_term_insert/7 um die entsprechende Topic-ID als Taxonomy Term festzulegen. Geht das in die richtige Richtung oder gibt es da noch andere Ansätze?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Rules

Eingetragen von Schnittmenge@dr... (288)
am 10.04.2012 - 22:00 Uhr

Mit Rules sollte man das lösen können => http://drupal.org/project/rules

Das Erzeugen des Term funktioniert wie gewünscht, jedoch noch nicht das zuweisen zu dem ursprünglichen Node. Habe jetzt den Term unabhängig vom Node erstellt.

Das Zuweisen wäre einfach, wenn man den Term kennen würde, ist aber hier nicht der Fall. Wo stehe ich auf dem Schlauch?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: Ich schaffe es mit der

Eingetragen von torfnase (1525)
am 11.04.2012 - 00:22 Uhr
Zitat:

Ich schaffe es mit der Hilfe von Token diese Topic-ID in ein Field zu schreiben, doch wie lege ich diesen Wert als neuen Taxonomy Term automatisch fest.

und

Zitat:

Das Zuweisen wäre einfach, wenn man den Term kennen würde

Das klingt für mich danach, dass du sehr wohl den Term kennst.

lieben Gruß
Berthold Lausch

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja, Berthold, Du hast recht,

Eingetragen von Schnittmenge@dr... (288)
am 11.04.2012 - 06:32 Uhr

Ja, Berthold, Du hast recht, der Term steht zur Verfügung, wird aber nicht zur Liste dazu gefügt.

Es müsste funktionieren, tut es aber nicht ... Der Report:
Rules debug information:
" Reacting on event After saving new content.

0 ms Reacting on event After saving new content.
10.369 ms Evaluating conditions of rule Rule new topic id. [edit]
10.91 ms The condition node_is_of_type evaluated to TRUE [edit]
10.921 ms AND evaluated to TRUE.
" Rule Rule new topic id fires. [edit]
0 ms Rule Rule new topic id fires.
17.783 ms Evaluating the action entity_create. [edit]
18.136 ms Added the provided variable entity_created_topic_id of type taxonomy_term [edit]
20.116 ms Evaluating the action list_add. [edit]
23.148 ms Evaluating the action drupal_message. [edit]
23.342 ms Rule Rule new topic id has fired.
34.344 ms Saved entity_created_topic_id of type taxonomy_term.
35.587 ms Finished reacting on event After saving new content.

Die drupal_message gibt den richtigen entity_created_topic_id Wert aus, jedoch wird dieser nicht zu der Liste der taxonomy_terms des Nodes dazu gefügt. Kann das daran liegen, dass der entity_created_topic erst später (34.344 ms) gespeichert wird? Wie sollte ich vorgehen?

Saludos,
Schnittmenge

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen Dank an yannickoo

Eingetragen von Schnittmenge@dr... (288)
am 12.04.2012 - 06:50 Uhr

Es hat sich bestätigt, dass es ein zeitliches Problem gibt. So liegt zum Beispiel die nid nicht vor dem Speichern des Nodes vor, welche ein Bestandteil von der Topic-ID war.

Lösung:
Die Topic-ID wird vor dem ersten Aufruf des Nodes als Taxonomy Term angefügt. Der Code =>

<?php

/**
* Implements hook_node_view()
*/
function wiki9999_node_view($node) {
 
// Wenn eine Node des Typs "topic" gespeichert wurde...
 
if($node->type == 'topic') {
   
// Wir speichern uns das Topic in eine Variable. http(s):// loeschen wir.
   
$topic = 'wiki9999-' . str_replace(array('https://', 'http://'), array('', ''), $GLOBALS['base_url'] ) . '/node/' . $node->nid . '-' . $node->uid . '-' . $node->created;
   
   
// Wir bauen uns einen Term-Array auf
   
$term = array(
     
// Id des Vokabulars 'topic-id-taxonomy'.
     
'vid' => 2,
     
'name' => $topic,
    );

   
// Wir gucken ob es den Term schon gibt, und speichern uns die Anzahl als Boolean (TRUE oder FALSE).
   
$term_exists = db_query('SELECT name FROM {taxonomy_term_data} WHERE name = :topic', array(':topic' => $topic))->rowCount();
   
$term_exists = (bool) $term_exists;

   
// Falls der Term noch nicht existiert, legen wir ihn an.
   
if(!$term_exists) {
     
taxonomy_term_save((object) $term);
    }

   
// Wir holen uns den ersten Term mit dem Namen $topic.
   
$saved_term = taxonomy_get_term_by_name($topic);
   
$saved_term = array_shift(array_values($saved_term));

   
// Wir setzen eine Variable, in welcher spaeter steht, ob die Node einen Term hat.
   
$node_has_topic_term = FALSE;

    if(isset(
$node->field_topic_id_taxonomy[$node->language])) {
      foreach(
$node->field_topic_id_taxonomy[$node->language] as $topic_term) {
       
// Falls es bereits einen Term mit dem $topic gibt...
       
if($topic_term['tid'] == $saved_term->tid) {
         
$node_has_topic_term = TRUE;
        }
      }
    }

   
// Wenn die Node noch nicht das $topic als Term hat...
   
if(!$node_has_topic_term) {
     
// ... setzen wir manuell den Term in das Node-Objekt...
     
$node->field_topic_id_taxonomy[$node->language][] = array('tid' => $saved_term->tid, 'taxonomy_term' => $saved_term);
     
// ... und speichern die Node.
     
node_save($node);
    }

  }
}

?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Tagen 10 Stunden
  • Hey danke
    vor 3 Tagen 5 Stunden
  • Update: jetzt gibt's ein
    vor 3 Tagen 23 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 1 Tag
  • Da scheint die Terminologie
    vor 1 Woche 1 Tag
  • Kannst doch auch alles direkt
    vor 1 Woche 5 Tagen
  • In der entsprechenden View
    vor 1 Woche 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 5 Tagen
  • gelöst
    vor 4 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 14 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association