[gelöst] Feld Value ändern nach speichern
am 28.06.2011 - 13:19 Uhr in
Hallo gibt es in Drupal 7 ein Module was einem ermöglicht nach dem Speichern eines Node ein Gefülltes Feld in das Titlefeld zu schreiben ? in dem Fall möchte ich einfach den Title mit einem anderen ausgefüllten Feld nach dem speichern ergänzen. Das Module Rules unterstützt in der Drupal 6 Version so etwas ... mit eine Integration mit CKK kann man Felder nach dem speichern überschreiben oder ergänzen ... die Aktuelle Version von Rules D7 unterstützt das nicht oder ich weiß nicht wo das geht.
1. neuer Node
2. tilte ausfüllen (A)
3. zusatzfeld (B)
4. Speichern
5. title = (zusatzfeld B + title A)
6. neuer Title
mfg Hacky
- Anmelden oder Registrieren um Kommentare zu schreiben

Das ist Theming ... z.B. im
am 28.06.2011 - 14:16 Uhr
Geht auch mit Theming ...
z.B. im Garland Theme steht in der node.tpl.php folgendes:
<h2<?php print $title_attributes; ?>><a href="<?php print $node_url; ?>"><?php print $title; ?></a></h2>das
<?php print $title; ?>müsstest Du dann nur mit Deinem entsprechenden Feldwert ergänzen.Ja aber dann steht der Title
am 28.06.2011 - 15:44 Uhr
Ja aber dann steht der Title immer noch dort. der muss ja schon etwas früher generiert werden. Wenn ich den Inhalt in der Node-**.tpl.php Komplet lösche ist zwar der Content weg aber nicht die Überschrift des Nodes. Und deswegen dacht ich ehr das Problem DB seitig zu lösen.
Ich glaube ich verstehe Dein
am 28.06.2011 - 16:29 Uhr
Ich glaube ich verstehe Dein Problem nicht! Um welche Anzeige gehts Dir denn? Um die im Node, oder die im Browser ... für letzteres gibts das Modul http://drupal.org/project/page_title. Dort kannst Du mit Tokens für das entsprechende Feld arbeiten.
Die Überschrift kommt an der
am 28.06.2011 - 19:40 Uhr
Die Überschrift kommt an der Stelle vermutlich nicht aus der node.tpl.php, sondern aus der page.tpl.php, weil das an der Stelle nicht der Node-Titel, sondern der Seiten-Titel ist.
Also musst du mal schauen, ob in deiner page.tpl.php irgendwo der Titel ausgegeben wird und dort dann entsprechend Thoors vorhergehendem Posting verfahren.
In Garland steht z. B. ab Zeile 46 folgendes:
<?php if ($title): ?><h1<?php print $tabs ? ' class="with-tabs"' : '' ?>><?php print $title ?></h1>
<?php endif; ?>
dort wird mit
<?php print $title ?>der Titel ausgegeben, wenn man dort z. B macht<?php print $title . " " . $node->mein_feld ?>(nur als Beispiel, muss dann natürlich ordentlich gemacht werden), dürfte es klappen.Hm okay aber man kann das
am 30.06.2011 - 09:22 Uhr
Hm okay aber man kann das doch auch mit dem ModuleRules lösen. in der Drupal 6 Version war das kein Problem aber in der neuen Drupal 7 Version geht das leider nicht mehr so einfach .... Mir wär es ganz lieb das ganze auf der Datenbank Seite zu lösen ... hat jemand eine Idee wie man das realisiert ?
mfg
Tja, in Rules für D7 scheint
am 30.06.2011 - 11:15 Uhr
Tja, in Rules für D7 scheint es keine Aktion zu geben, mit der man einfach mal den Titel des Nodes ändern kann. Aber du könntest das Core-Modul "PHP Filter" aktivieren. Dann kannst du in deiner Rule eigenen PHP-Code ausführen und mit dem dann selbst den neuen Titel in die Datenbank schreiben.
page.tpl.php
am 01.07.2011 - 15:11 Uhr
Okay also ich hab an der page.tpl.php die Modifikation vorgenommen in dem Fall sage ich wenn der $node typ der If Anweisung übereinstimmt dann soll er vor dem $title den vorgeschriebenen wert schreiben. Wenn es nicht eintrifft "else" dann soll er den normalen title schreiben. Nun kommt es aber auf anderen nodes wo die If Anweisung gar nicht zutrifft zu Fehlern. Daten werden nicht Korrekt angezeigt oder Komplet Ignoriert ... etwas seltsam, weil ich doch nur den Title ausgebe wenn die If Anweisung nicht zutrifft.
<?php
//page.tpl.php
If($node->typ != "xY"){
print $title;
}else{
print $node->FieldXY['de'][0]['value'] . ' ' . $title;
}
?>
mfg
Nicht alle Seiten sind
am 01.07.2011 - 15:33 Uhr
Nicht alle Seiten sind Node-Seiten und daher ist $node->typ nicht unbedingt definiert. Du mußt vor der If-Anweisung noch prüfen, ob Du Dich auf einer Node-Seite befindest z.B. mit
<?phpif(arg(0) =='node' && is_numeric(arg(1)) { ....... }
?>
Beste Grüße
Werner
Parse error: parse error in
am 01.07.2011 - 15:48 Uhr
Parse error: parse error in Zeile: if(arg(0) =='node' && is_numeric(arg(1)) {
geht das auch in Drupal 7 und was passiert da genau ? arg ?
gruß hacky
Copy&Paste ist schon eine
am 01.07.2011 - 15:55 Uhr
Copy&Paste ist schon eine böse Sache ;-) Hinter dem
is_numeric(arg(1))fehlt noch ein ')'arg() liefert die Argumente aus der URL. Wenn du also den Pfad example.com/node/123 hast, dann steht in
arg(0)"node" und inarg(1)steht "123".Damit wird die Url, unter der
am 01.07.2011 - 16:01 Uhr
Damit wird die Url, unter der die Seite aufgerufen wird auseinander genommen. z.B wenn der Pfad lautet admin/content/types, dann ist arg(0)='admin', arg(1)='content' und arg(2)='types'. Also prüft der Code, ob die Url mit node/### beginnt. So sehen Drupal-intern alle Node-Seiten aus. der Fehler liegt aber in einer Fehlenden runden Klammer
if(arg(0) =='node' && is_numeric(arg(1))) {Beste Grüße
Werner
Rules
am 15.07.2011 - 14:57 Uhr
Hallo.
Eventuell hast Du es ja schon gelöst, hier jedoch nochmal der Vollständigkeit halber:
Über die Aktion "Set a data value" kannst Du den Node-Titel setzen.
Danke danach hab ich
am 28.07.2011 - 15:18 Uhr
Danke danach hab ich gesucht.
mfg hacky