Page 1 of 1
Re: Newbiefrage: Content bei Ausgabe ändern
Posted: Sat May 08, 2010 12:55 pm
by cyberman
Hallo Markus,
moehm wrote:
Ich bin der Neue und begrüße das Forum hier
Herzlich willkommen im deutschen Forum zu CMS made simple ...
Ich bin heute morgen auf CMSms gestoßen und wirklich begeistert
Der Name ist absolut Programm!
... und danke für die Blumen.
Im in der DB gespeicherten Content werden spezielle Wörter vorkommen, die ich dann per PHP bei der Anzeige im Browser verändert haben möchte (also über die PHP-Funktion $Content = replace(....,...,$Content))
Für replace-Aktionen bringt Smarty einen eigenen Modifikator mit
http://www.smarty.net/manual/de/plugins.modifiers.php
http://www.smarty.net/manual/de/languag ... eplace.php
Die kannst du sowohl auf Funktionen als auch auf Variablen anwenden, also
oder
Modifikatoren können auch gekoppelt werden, also
Code: Select all
{$entry->author|modifier|modifier|modifier}
Abgearbeitet werden diese dann von links nach rechts.
Möglicherweise wäre das ein Ansatzpunkt für deinen Wunsch (weiß ja nicht, wie viele Wörter du austauschen möchtest).
Re: Newbiefrage: Content bei Ausgabe ändern
Posted: Sat May 08, 2010 1:30 pm
by cyberman
(Fast) alles ist möglich ...
Entweder du modifizierst den replace-Modifikator, dass er alle deine gewünschten Ersetzungen vornimmt (zu finden in /lib/smarty/plugins/modifier.replace.php). Die zu ersetzenden Elemente könnte man evtl. auch über zusätzliche Content-Blöcke festlegen.
Oder du wählst einen anderen Weg. So hat der content-Tag einen Parameter assign
Damit erfolgt der Output des content-Tags in die Variable $content, die du dann überall innerhalb CMSms mit
ausgeben kannst.
Diese Smarty-Variable kannst du dann auch php-seitig abfragen
http://www.smarty.net/manual/de/api.get ... e.vars.php
und nach Wunsch modifizieren (entweder über einen benutzerdefinierten Tag oder eine separate Funktion).
Wenn du das Ergebnis anschließend wieder Smarty zuweist,
http://www.smarty.net/manual/de/api.assign.php
kannst du die Variable wieder im CMSms-Template verwenden.
Re: [Gelöst]Newbiefrage: Content bei Ausgabe ändern
Posted: Sat May 08, 2010 5:22 pm
by cyberman
Jetzt, wo du es sagst, fällt mir ein, dass es da vor längerem Mal für diesen Zweck ein Modul namens TagRep gab ... keine Ahnung, ob es noch läuft
http://dev.cmsmadesimple.org/projects/tagrep
Wäre vielleicht interessant, das Teil zu reaktiveren ...
Re: Newbiefrage: Content bei Ausgabe ändern
Posted: Sat May 08, 2010 5:44 pm
by nockenfell
moehm wrote:
Hallo beisammen
Ich habe ein kleines PHP-Script erstellt:
smarty/plugins/
modifier_replaceContent.php
<?php
Code: Select all
function smarty_modifier_replaceContent($string)
{
$Ersetzen = array(
'Ein Text' => '<b>Ein Text</b>',
'PKW' => '<acronym title="PersonenKraftWagen">PKW</<acronym>>',
'...' => '...',
'...' => '...');
return str_replace(array_keys($Ersetzen), $Ersetzen, $string);
}
?>
Aufruf VOR {content} im Template:
Dafür könntest du auch einen Prefilter einsetzen.
Erstelle die Datei prefilter.replaceContent.php im plugins Verzeichnis.
Code: Select all
function smarty_cms_prefilter_replaceContent($tpl_source, &$smarty)
{
$Ersetzen = array(
'Ein Text' => '<b>Ein Text</b>',
'PKW' => '<acronym title="PersonenKraftWagen">PKW</<acronym>>',
'...' => '...',
'...' => '...');
return str_replace(array_keys($Ersetzen), $Ersetzen, $tpl_source);
}
Der Prefilter wird immer vor der Contentausgabe angewant. (Allerdings nur bei der Ausgabe der "normalen" Contents). Für Plugins gilt der Filter nicht, soweit ich weiss.
Re: [Gelöst]Newbiefrage: Content bei Ausgabe ändern
Posted: Sat May 08, 2010 6:51 pm
by cyberman
Dafür gibts dann auch noch die post- und outputfilter

...
Re: [Gelöst]Newbiefrage: Content bei Ausgabe ändern
Posted: Sat May 08, 2010 8:08 pm
by nockenfell
cyberman wrote:
Dafür gibts dann auch noch die post- und outputfilter

...
Kannst du mich da mal aufklären. Bisher habe ich keine Doku dazu gefunden (was ja nichts heissen muss)
Was macht ein
-prefilter
-postfiler
-outputfilter
Ziel der Frage ist die Definition für was welcher Filter genau taugt. Ich nutze derzeit den Postfilter um E-Mailadressen zu maskieren.
Re: [Gelöst]Newbiefrage: Content bei Ausgabe ändern
Posted: Sat May 08, 2010 8:17 pm
by cyberman