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 (1640)
am 12.11.2015 - 21: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 (3834)
am 12.11.2015 - 22:47 Uhr

aber mit Rules solltest du das gemanaged bekommen

Grüße
Ronald

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wirklich mit Rules?

Eingetragen von DrupalFan (1640)
am 12.11.2015 - 23: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 (1780)
am 13.11.2015 - 00: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!

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Genauer

Eingetragen von DrupalFan (1640)
am 13.11.2015 - 00: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 (1780)
am 13.11.2015 - 01: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).

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Bsp-Code

Eingetragen von DrupalFan (1640)
am 13.11.2015 - 01: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 (1780)
am 13.11.2015 - 01: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).

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

DANKE! Modul selbst geschrieben

Eingetragen von DrupalFan (1640)
am 29.11.2015 - 03: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

  • Drupal 8: Fußzeilenmenü auf Login-Seite verschwunden
  • Vom jeweiligen User die Kunstwerke ausgeben.
  • Fullcalendar - Grösse Dialogfenster
  • Notify-Modul: Einmalige Benachrichtigung ueber neue Nodes senden
  • [gelöst]Drupal 9 und Ubuntu 20.04
  • [gelöst] Swiftmailer installieren um Simplenews zum Laufen zu bringen
  • Installiert ja, aber kein einziger link funktioniert
  • Drupal 9 - "read more" übersetzen nun anders, nur wie?
  • [gelöst] Nur editierbare Medien in Media-View anzeigen
  • Probleme mit dem Adminmenü
  • Inhalte ändern/erstellen nicht möglich - Problem mit Datenbank-Verbindung?
  • Groups und Drupal 9
Weiter

Neue Kommentare

  • irgendwo wird doch die nutzer
    vor 20 Stunden 53 Minuten
  • inst schrieb Hallo, ich
    vor 20 Stunden 57 Minuten
  • Kein Problem. Ich helfe dir
    vor 2 Tagen 20 Stunden
  • ?????Bahnhof,
    vor 2 Tagen 20 Stunden
  • Wenn du es geschafft hast
    vor 2 Tagen 22 Stunden
  • All-Inkl und Composer 2
    vor 2 Tagen 22 Stunden
  • dinmikkith schrieb xampp auf
    vor 2 Tagen 22 Stunden
  • Ich bin auch bei All-Inkl und
    vor 2 Tagen 22 Stunden
  • Hallo, ok, verstehe. Aktuell
    vor 2 Tagen 22 Stunden
  • d.h. ohne Know How wie z.B.
    vor 2 Tagen 22 Stunden

Statistik

Beiträge im Forum: 246302
Registrierte User: 18907

Neue User:

  • Demophobie
  • JorgeClayton
  • fel

» Alle User anzeigen

User nach Punkten sortiert:
wla9036
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3917
ronald3834
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 6 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