Variablen in node-content Erstellung verwenden
Eingetragen von vistree (238)
am 15.07.2008 - 14:20 Uhr in
am 15.07.2008 - 14:20 Uhr in
Hallo,
wie kann ich in einem Fließtext, bei neu erzeugtem Content, variablen Text einbinden?
So möchte ich z.B. den Seitennamen ($site_name) in den Text einbauen. Super wäre auch das Einbinden von anderen Variablen, die ich gerne in Abhängigkeit von dem Seitennamen auswählen können möchte.
Wie geht das? Habe folgendes schon versucht: node - Eingabeformat auf php dann im Text an der gewünschten Stelle
<?php
print $site_name
?>
Da kommt dann aber gar nichts. Es wäre aber noch besser, wenn man im Editor z.B. ein Schlüsselwort eingeben könnte, dass dann automatisch umgesetzt wird (da auch eher unbedarfte Text erzeugen können sollen).
Jemand eine Idee für mich?
- Anmelden oder Registrieren um Kommentare zu schreiben
Teillösung gefunden
am 15.07.2008 - 14:49 Uhr
... für den Seitennamen habe ich eine Lösung gefunden. Man muss nur den php-code folgendermaßen anpassen, dann funktioniert das Einfügen in den content eines node (nicht vergessen das Eingabeformat auf php umzustellen).
<?php
print variable_get('site_name',false)
?>
Ist natürlich für den unbedarften Nutzer keine echte Lösung - von daher fänd ich es spannend hier doch noch eure Meinungg zu hören.
Viele Grüße
Kai
Weiss nicht, ob das wirklich
am 15.07.2008 - 15:45 Uhr
Weiss nicht, ob das wirklich funktioniert...
Vielleicht könntest du mittels BUEditor http://ufku.com/drupal/bueditor einen Button erzeugen.
Findest du PHP-Eingabeformat für unbedarfte Nutzer nicht zu unsicher?
LG
-----------
Luca Curella
Kooperative Netze - Berlin
Filter
am 15.07.2008 - 15:57 Uhr
Du suchst mit Deiner Aufgabenstellung nach einer typischen Filteranwendung. Sieh Dir mal Customfilter an.
EDIT: Bin mir inzwischen nicht ganz sicher, ob Dich richtig verstanden habe. Cuzstomfilter nimmt (auch dynamisch) Textersetzungen für Platzhalter vor. Vielleicht suchst Du ja aber eine andere Form der Textumgestaltung, die auch über die Template-Dateien möglich wäre. So kann ich natürlich Variablen in eine node.tpl.php injizieren, die dort (bei Vorhandensein) ausgegeben werden bzw. auch IF ... ELSE - Anweisungen unterbringen. Werd' mal konkreter.
Hallo Ihr beiden! Danke für
am 15.07.2008 - 16:52 Uhr
Hallo Ihr beiden!
Danke für die Antworten.
Ja, prinzipiell ist mir das PHP-Eingabeformat zu unsicher und der von mir beschriebene Weg auch zu umständlich (für normale Nutzer).
Was soll das ganze: Ich sitze gerade an einem Multidomain-Projekt. Dort sind ca. 70% des Content für alle Domains gleich. Alle Domains haben einen Seitennamen (sitename) der immer gleich aufgebaut ist. Jetzt möchte ich gerne erreichen, dass auch bei dem Domain-übergreifenden Content kleine "Lokalisierungen" im Content möglich sind. Dazu möchte ich jetzt aber den entsprechenden Content nicht X-mal kopieren, nur um z.B. aus "Willkommen beim Bier" ein "Willkommen bei ner Cola" zu machen (ist vielleicht ein nicht ganz so schönes Beispiel ;-) Ganz konkret möchte ich den sitename im normalen Fließtest verwenden, um dann z.B. auf der domain1.de "Herzlich Willkommen auf den Seiten von domain1-Name" und auf ner anderen dann "Herzlich Willkommen auf den Seiten von domain2-Name" auszugeben. Mit dem sitename lässt sich da schon was machen. Nun sind die Seiten regional und es wäre natürlich super, wenn ich z.B. den Domainnamen noch weitere regionale Variablen, wie z.B. einen Stadtnamen zuordnen könnte. Dann wäre statt "Das regionale Angebot von Berlin ist wunderbar" auch ein "Das regionale Angebot von Hamburg ist wunderbar".
Also noch mal ganz klar gesagt: ich habe viele Domains mit gemeinsamen Content. Ein Teil des Contents wird gefilter nur bestimmten Domains zugeführt (verwende dazu übrigens das Modul domain access - ist super!).
Ja und nun wäre es schön, wenn ich den Nutzern sagen könnte, "also, wenn du einen Text schreibst, dann kannst du die und jene Variable verwenden, die dann auf domain 1 mit X und auf doamin2 mit Y ersetzt wird.
Das mit BUeditor und eigenem Knopf ist ja vielleicht schon ein Weg - aber nur über PHP-Freigabe zu realisiern, oder?
Viele Grüße
Kai
Im Prinzip hast du alle
am 15.07.2008 - 17:17 Uhr
Im Prinzip hast du alle Parameter in der URL, mittels Taxonomy? Dann könntest du eigentlich diese in der node.tpl.php abfragen und einen Platzhalter wie [sitename] durch den entsprechenden Taxonomy Term ersetzen.
Wie allerdings stellst du sicher, dass User nicht trotzdem Hamburg als Wort in einen Beitrag schreiben? Ist das ein redaktionelles Team?
-----------
Luca Curella
Kooperative Netze - Berlin
Hmm, ja. Aber nur im ersten
am 15.07.2008 - 18:14 Uhr
Hmm, ja. Aber nur im ersten Teil der URL, also ohne Argumente!!! Aber wie gesagt, auch im sitename.
Wie würde man das in der node denn anstellen? Dort einfach irgendwo ein php-Funktion, die die Variable setzt?
Also z.B.
<?php
$ort = variable_get('site_name',false);
?>
Und wie bekomme ich $ort dann in den content-editor (fckeditor)? Muss das Eingabeformat dann auch auf php stehen?
Und ja, das Team ist ein redaktionelles (zu mindest für die hier relevanten Inhaltsseiten).
Grüße
Kai
Mit Filter
am 15.07.2008 - 20:19 Uhr
Meines Erachtens wäre Cunstomfilter eine gute Lösung: ein Redakteur hat einige Platzhalter zur Verfügung wie [Ort], [Site] usw. und die schreibt er genau so in den Body hinein. In Customfilter legt man sich ein eigenes Filter-Set an und nennt es SiteVariables oder so was in der Art. In diesem Set bekommt jeder Platzhalter eine eigene Filterregel spendiert, was dann so aussieht wie im angehängten Beispiel (siehe jpg unten). Das Filterset wird dann unter dem für die Beitragserstellung zugedachten Eingabefilter für alle die Inhaltstypen aktiviert, für die man es braucht. Voila.
Hey, das sieht super aus!
am 15.07.2008 - 22:22 Uhr
Hey, das sieht super aus! Werde ich probieren!
Danke und einen schönen Abend
Klasse, das funktioniert
am 16.07.2008 - 12:38 Uhr
Klasse, das funktioniert super. Einziger Wehrmuttropfen - ich muss bei den betroffenen Inhaltstypen doch das Eingabeformat auf PHP umstellen. Sonst wird der Ersetzungtext nicht dynamisch auf den verschiedenen Domains ausgewechselt, sondern bleibt immer auf dem der Erstellungs-Domain stehen.
Gibt es da noch einen Trick wie ich bei Full-HTML nur den php-Teil der Filterregeln freigeben kann? Dachte, ich würde das durch positionieren meines Filters an die erste Filterstelle erreichen - funktioniert so aber leider nicht ;-(
Gruß
Custom Filter brauchen kein PHP als Eingabeformat
am 16.07.2008 - 13:36 Uhr
Einziger Wehrmuttropfen - ich muss bei den betroffenen Inhaltstypen doch das Eingabeformat auf PHP umstellen
Custom Filter setzen beim Node bearbeiten KEIN PHP-Code - Eingabeformat voraus.
Was Du tun kannst ist die erstellten Custom Filter einem normalen HTML - Eingabeformat zuzuordnen.
Beispiel:
Wobei "Insert Flickr images" ein Custom Filter ist.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Hallo quiptime, die
am 16.07.2008 - 13:52 Uhr
Hallo quiptime,
die Zuordnung habe ich bereits so gemacht und auch ausprobiert. Habe meinen neuen Filter mit folgender Regel erstellt:
Name: portalersetzen
Pattern: /\[portal\]/i
PHP-Code ON
Replacement text:
$portal = variable_get('site_name',false);
return $portal;
Wobei $portal der Name (Head-title) meiner Domains ist. In dem Text füge ich nun einfach [portal] ein und es wird korrekt in den Doaminnamen umgesetzt.
Den Filter habe ich sowohl bei dem Full-HTML als auch beim PHP-Eingabeformat zugeordnet.
Die Regel funktioniert auch beides Mal! Beim HTML-Filter aber nur nach dem Speichern der Seite.
Besuche ich die Seite bei Full-HTML-Eingabeformat über die Erstellerseite und eine beliebige andere Domain, so steht dort immer der Titel der Erstellerdomain.
Aktiviere ich das PHP-Eingabeformat, so wird korrekt auf allen Domains der korrekte Titel der aktiven Domain angezeigt. Aktiviere ich im Full-HTML-Eingabeformat zusätzlich den php-Filter, so funktioniert es auch dort.
Komisch, oder? Woran könnte das liegen?
Viele Grüße
Umsortieren der einzelnen Filter innerhalb eines Eingabeformates
am 16.07.2008 - 14:28 Uhr
Eventuell hilft ein Umsortieren der einzelnen Filter innerhalb eines Eingabeformates.
Probiere mal, Deinen Custom Filter vor den Filter "HTML Korrektur" zu setzen. Und den PHP-Code Filter deaktivieren.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Cache
am 16.07.2008 - 14:33 Uhr
Aktiviere ich das PHP-Eingabeformat, so wird korrekt auf allen Domains der korrekte Titel der aktiven Domain angezeigt. Aktiviere ich im Full-HTML-Eingabeformat zusätzlich den php-Filter, so funktioniert es auch dort.
Komisch, oder? Woran könnte das liegen?
Nimm mal im Edit-Modus Deines Filtersets den Haken raus bei "Cache" und siehe, was sich tut.
Das war es!
am 16.07.2008 - 14:44 Uhr
Ha, tumblingmug, das war es! Nach dem ausschalten des Caches läuft es auch im Full-HTML-Eingabeformat.
So ist das ne super Lösung!
1000 Dank