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

Beim Speichern eines Nodes den Inhalt von einem Taxonomy-Feld in ein anderes Taxonomy-Feld kopieren/verschieben

Eingetragen von DrupalFan (1646)
am 12.11.2015 - 20:26 Uhr in
  • Module

Gegeben ist ein Inhaltstyp mit 2 Felden:

- Feld1 "Neuer Tag", Typ: Referenz auf Taxonomy-Begriffe, Element: Autovervollständigen-Feld

- Feld2: "Tags", Typ: Referenz auf Taxonomy-Begriffe, Element: Ankreuzfelder/Auswahlknöpfe (also Checkboxes)

Beim Speichern (nach Erstellen oder Ändern) eines Nodes sollen alle im Feld1 mittels Autovervollständigen-Feld eingegebene Werte in das Feld2 kopiert werden.

--> Dazu suche ich die Codestellen (z. Bsp. in tempplate.php) bzw. ungefähre Codesnippets, wie das funktonieren könnte. Test und genaue Umsetzung kann ich selbst machen, nur der erste Ansatz fehlt mir noch.

Nach dem Speicher wird also dieser (zu progammierende) Code aufgerufen und damit werden die unter "Neuer Tag" eingegebene Begriffe zu den normalen Begriffen im Feld "Tags" kopiert bzw. dorthin verschoben.

Öffnet man nach dem Speicher die Node wieder, dann ist das Feld "Neuer Tag" leer und das Feld "Tags" erweitert um die kopierten Werte. Beim Kopieren wurde darauf geachtet, dass es keine Doppel-Begriffe im Vokabular gibt. (Das Taxonomy-Vokabular wurde ebenfals um diese Werte erweitert.)

Weiters sollten dabei auch die dem Node zugeordneten Begriff alphabetisch sortiert werden.

Wie kann man das realisieren?
Entweder mit eigenem Code, der an der richtigen Stelle nach dem Speichern eines Nodes eingreift ...
... oder gibt es eine ganz andere Lösung?
DANKE!

‹ Search API: Keine Ergebnisse bei verwandten Wörtern no Flexslider - kein css angewendet / kein JS ausgeführt ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

ich verstehe zwar den Sinn dieser Redundanz nicht

Eingetragen von ronald (3857)
am 12.11.2015 - 21:47 Uhr

aber mit Rules solltest du das gemanaged bekommen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wirklich mit Rules?

Eingetragen von DrupalFan (1646)
am 12.11.2015 - 22:00 Uhr

Wieso, warum soll das mit Rules gehen?

Nach dem Kopieren der neuen Begriffe aus dem Feld "Neue Tags" zu den Taxonomy-Tags müsste für jeden neuen Begriff auch ein Url-Alias angelegt werden.

Ich glaube im Moment noch nicht, dass das alles mit Rules geht.

Geht das nicht viel einfacher mit ein paar Zeilen Code?
Nur wo setzt man an?

Der Sinn des ganzen ist es, das Verhalten von Taxonomy Super Select, welches nur für Drupal 6 gibt, nachzubauen. Oder kennst Du jemanden der Taxonomy Super Select nach Drupal 7 portieren kann?

  • Anmelden oder Registrieren um Kommentare zu schreiben

DrupalFan schriebGegeben ist

Eingetragen von Ionit (1802)
am 12.11.2015 - 23:43 Uhr
DrupalFan schrieb

Gegeben ist ein Inhaltstyp mit 2 Felden:
Beim Speichern (nach Erstellen oder Ändern) eines Nodes sollen alle im Feld1 mittels Autovervollständigen-Feld eingegebene Werte in das Feld2 kopiert werden.

--> Dazu suche ich die Codestellen (z. Bsp. in tempplate.php) bzw. ungefähre Codesnippets, wie das funktonieren könnte. Test und genaue Umsetzung kann ich selbst machen, nur der erste Ansatz fehlt mir noch.

Nach dem Speicher wird also dieser (zu progammierende) Code aufgerufen und damit werden die unter "Neuer Tag" eingegebene Begriffe zu den normalen Begriffen im Feld "Tags" kopiert bzw. dorthin verschoben.

Öffnet man nach dem Speicher die Node wieder, dann ist das Feld "Neuer Tag" leer und das Feld "Tags" erweitert um die kopierten Werte. Beim Kopieren wurde darauf geachtet, dass es keine Doppel-Begriffe im Vokabular gibt. (Das Taxonomy-Vokabular wurde ebenfals um diese Werte erweitert.)

1. Eigenes Modul mit hook_form_FORM_ID_alter und hook_node_presave! Darüber kommt man an die Form-Values ran und kann sie ins andere Feld kopieren - danach über die hooks Feld1 "Neuer Tag" leeren (Feld1 zu leeren, geht auch mit Rules).

2. Wenn der Node zum editieren geöffnet wird, kann man die Werte aus Feld2: "Tags" wieder auslesen und das Formfeld von Feld1 "Neuer Tag" vorfüllen (danach kommt wieder 1 - sodass die Werte von Feld1 niemals in der Datenbank gespeichert werden)!

DrupalFan schrieb

Weiters sollten dabei auch die dem Node zugeordneten Begriff alphabetisch sortiert werden.

Das weiß ich nicht!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Genauer

Eingetragen von DrupalFan (1646)
am 12.11.2015 - 23:55 Uhr

Danke.

Dein Punkt 2 ist aber nicht gewünscht. Wenn Du die Funktionen von Taxonomy Super Select (D6) kennst, dann weißt Du, dass die Begriffe über die vielen Checkboxes ausgewählt werden können und über das Autocomplete-Feld neue Begriffe hinzugefügt werden können, die dann aber übernommen werden in die Datenbank. Dein Punkt 2 passt also nicht.

Beim nächsten Editieren ist also Feld 1 (Neuer Tag) immer leer, weil die dort das letzte Mal eingegebenen Werte ja in Feld2 verschoben wurden und dort gespeichert wurden und vollständige Taxonomy-Begriffe dieses Vokabulars geworden sind und in diesem Node auch hinzugefügt wurden.

hook_form und hook_node_presave sind schon gute Ansätze, aber ich bräuchte es etwas genauer, um es umsetzen zu können.

  • Anmelden oder Registrieren um Kommentare zu schreiben

DrupalFan schrieb .... Wenn

Eingetragen von Ionit (1802)
am 13.11.2015 - 00:09 Uhr
DrupalFan schrieb

.... Wenn Du die Funktionen von Taxonomy Super Select (D6) kennst ...

Nein - ich kenne das nicht!

DrupalFan schrieb

Dein Punkt 2 ist aber nicht gewünscht. Wenn Du die Funktionen von Taxonomy Super Select (D6) kennst, dann weißt Du, dass die Begriffe über die vielen Checkboxes ausgewählt werden können und über das Autocomplete-Feld neue Begriffe hinzugefügt werden können, die dann aber übernommen werden in die Datenbank. Dein Punkt 2 passt also nicht.

Beim nächsten Editieren ist also Feld 1 (Neuer Tag) immer leer, weil die dort das letzte Mal eingegebenen Werte ja in Feld2 verschoben wurden und dort gespeichert wurden und vollständige Taxonomy-Begriffe dieses Vokabulars geworden sind und in diesem Node auch hinzugefügt wurden.

Dann lässt Du Punkt 2 halt weg oder passt ihn so an, dass Du Du beim editieren des fertigen Nodes halt die Values aus Feld1 ausliest und mit den bestehenden Values in Feld2 vergleichst - wenn etwas neues in Feld1 vorhanden ist, "hängst" Du die Values dann einfach an Feld2 ran.

DrupalFan schrieb

hook_form und hook_node_presave sind schon gute Ansätze, aber ich bräuchte es etwas genauer, um es umsetzen zu können.

So etwas ähnliches habe ich vor 3 Wochen gemacht aber ich habe jetzt keine Muße das rauszusuchen. Über die hook-Namen findest Du bei Google zahlreiche Beispiele (wie Du auf die Pre-Savevalues der Form zugreifen kannst und sie in andere Felder schreibst).

  • Anmelden oder Registrieren um Kommentare zu schreiben

Bsp-Code

Eingetragen von DrupalFan (1646)
am 13.11.2015 - 00:15 Uhr

Ja, so ähnlich.

Bräuchte noch ein kleines Beispiel oder einen Code-Ansatz.

  • Anmelden oder Registrieren um Kommentare zu schreiben

<?php function

Eingetragen von Ionit (1802)
am 13.11.2015 - 00:49 Uhr

<?php
function MODULNAME_form_DEIN_CONTENT_TYPE_MASCHINNAME_node_form_alter(&$form, &$form_state, $form_id) {

#Formfeld vorfüllen
$form['field_em_telefon']['und']['0']['value']['#default_value'] = '1234567';

$form['field_agentur_model_adresse']['und']['0']['#default_value']['street'] = $street;

#nur ausfuehren wenn Node neu ist und noch keine NID hat
if (is_null($form['nid']['#value'])) {
...
}

#nur ausfuehren wenn Node NICHT neu ist und schon eine NID hat
if (!is_null($form['nid']['#value'])) {
....
}

}

#dieser Hook ist die letzte Möglichkeit Daten zu ändern bevor die Daten in die Datenbank geschrieben werden
function MODULNAME_node_presave($node) {
  if (
$node->type =='DEIN_CONTENT_TYPE_MASCHINNAME') {
$node->field2['und']['0']['value'] = $node->field1['und']['0']['value'];

#danach Field1 leeren - das musst du mal testen
$node->field1['und']['0']['value'] = '';
}
}
?>

Wie Du bestehende Multivalue-Fields handelst und dort neue Values anhängst, musst Du selbst nachschauen (dazu wird es sicherlich auch enstprechende Hooks geben).

  • Anmelden oder Registrieren um Kommentare zu schreiben

DANKE! Modul selbst geschrieben

Eingetragen von DrupalFan (1646)
am 29.11.2015 - 02:00 Uhr

Habe das Modul jetzt selbst geschrieben.

Ähnlich wie Du es vorgeschlagen hat, allerdings doch in einigen Details anders. Diese Details kommt man erst immer beim Programmieren drauf und am Ende schaut es dann doch um einiges anders aus. Aber das Prinzip ist vergleichbar und DANKE für die HILFE!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • lstin tombent homophonic wikke
  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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
Weiter

Neue Kommentare

  • Rollen
    vor 1 Tag 18 Stunden
  • Inzwischen sind wir bei
    vor 1 Woche 5 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Woche 6 Tagen
  • melde mich mal wieder, da ich
    vor 9 Wochen 3 Tagen
  • Hey danke
    vor 9 Wochen 4 Tagen
  • Update: jetzt gibt's ein
    vor 9 Wochen 4 Tagen
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 2 Tagen
  • Da scheint die Terminologie
    vor 10 Wochen 2 Tagen
  • Kannst doch auch alles direkt
    vor 10 Wochen 6 Tagen
  • In der entsprechenden View
    vor 10 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250238
Registrierte User: 20465

Neue User:

  • FoxPiola
  • ocvk2810
  • marouane.blel

» 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 27 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