[Gelöst]Newbiefrage: Content bei Ausgabe ändern

Das Board für alle Fragen und Diskussionen, die keinen direkten Bezug zu CMS made simple haben
Post Reply
cyberman

Re: Newbiefrage: Content bei Ausgabe ändern

Post 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

Code: Select all

{content|modifier}
oder

Code: Select all

{$entry->author|modifier}
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).
cyberman

Re: Newbiefrage: Content bei Ausgabe ändern

Post 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

Code: Select all

{content assign='content'}
Damit erfolgt der Output des content-Tags in die Variable $content, die du dann überall innerhalb CMSms mit

Code: Select all

{$content} 
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.
cyberman

Re: [Gelöst]Newbiefrage: Content bei Ausgabe ändern

Post 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 ...
Last edited by cyberman on Sat May 08, 2010 5:33 pm, edited 1 time in total.
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm
Location: Schweiz / Switzerland

Re: Newbiefrage: Content bei Ausgabe ändern

Post 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:

Code: Select all

{content|replaceContent}
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.
[this message is written with 100% recycled bits]
cyberman

Re: [Gelöst]Newbiefrage: Content bei Ausgabe ändern

Post by cyberman »

Dafür gibts dann auch noch die post- und outputfilter ;) ...
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm
Location: Schweiz / Switzerland

Re: [Gelöst]Newbiefrage: Content bei Ausgabe ändern

Post 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.
[this message is written with 100% recycled bits]
Post Reply

Return to “Stammtisch”