NAVIGATION
This shows you the differences between two versions of the page.
deutsch:ersetzer_rts:frontend_init:cp_trigger [2009/05/19 01:27] Knut Heermann (flip-flop) |
deutsch:ersetzer_rts:frontend_init:cp_trigger [2018/06/03 18:09] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
{{indexmenu_n>10}} | {{indexmenu_n>10}} | ||
- | ====== cp_trigger ====== | + | ====== CP-trigger ====== |
Forum: [[http://forum.phpwcms.org/viewtopic.php?p=107107#p107107]] - Autor: OG | Forum: [[http://forum.phpwcms.org/viewtopic.php?p=107107#p107107]] - Autor: OG | ||
Line 105: | Line 105: | ||
Forum: [[http://forum.phpwcms.org/viewtopic.php?p=107107#p107107]] | Forum: [[http://forum.phpwcms.org/viewtopic.php?p=107107#p107107]] | ||
- | Eine Klasse zu einem Bild hinzuzufügen, das aus dem CP Bilder <div> generiert wird. Gegeben ist diese Ausgabe: | + | Eine Klasse zu einem Bild hinzufügen, das aus dem CP Bilder <div> generiert wird. Gegeben ist diese Ausgabe: |
- | <code html><img src="content/images/xyz.jpg" alt="Alt-Text" title="Titel-Text" **border="0"** width="120" height="90"></code> | + | <code html><img src="content/images/xyz.jpg" alt="Alt-Text" title="Titel-Text" border="0" width="120" height="90"></code> |
Die Konstruktion soll strukturell etwa so aussehen: | Die Konstruktion soll strukturell etwa so aussehen: | ||
Line 114: | Line 114: | ||
==== Lösungsmethode: ==== | ==== Lösungsmethode: ==== | ||
- mit einem Trigger auf **border="0"** und Ersetzung nach **class="MY_CUSTOM_CLASS" border="0"** ergibt: \\ | - mit einem Trigger auf **border="0"** und Ersetzung nach **class="MY_CUSTOM_CLASS" border="0"** ergibt: \\ | ||
- | <code html><img src="content/images/xyz.jpg" alt="Alt-Text" title="Titel-Text" **class="MY_CUSTOM_CLASS" border="0"** width="120" height="90"></code> | + | <code html><img src="content/images/xyz.jpg" alt="Alt-Text" title="Titel-Text" class="MY_CUSTOM_CLASS" border="0" width="120" height="90"></code> |
\\ | \\ | ||
Line 210: | Line 210: | ||
\\ | \\ | ||
+ | ===== 4. Beispiel: CP_SEARCH_NO_SUMMARY ===== | ||
+ | Der Contentpart //Suche/search// soll im Suchergebnis nur den Artikeltitel ausgeben ohne den Schlagtext (summary). Im Augenblick //(Sept. 2009)// ist es nicht möglich im Feld [max. Anzahl Worte (Summary)] den Wert Null zu führen, da dies als "Alles ausgeben" gewertet wird. | ||
- | ===== 4. Beispiel: Kürzen des CAPTION-Textes ===== | + | Die Standardausgabe umschließt den gefundenen Schlagtext jeweils mit **<p>... Summary ...</p>**. Also ist es möglich hiernach zu suchen und den gesamten Inhalt von **<p>...</p>** durch eine leere Menge zu ersetzen. |
- | Bei der Verwendung der CPs //Bilder <div>// und //Bilder Spezial// soll der Captiontext //(Bildunterzeile)// in der einfachen FE-Ausgabe gekürzt werden. In der LightBox bleibt der Text vorhanden. | ||
- | Angenommener Templateeintrag: | + | Forum: [[http://forum.phpwcms.org/viewtopic.php?p=120031#p120031]] |
- | <file> | + | |
- | [CAPTION]<p style="margin:3px 0 0 0; width:200px; height:15px;"><span class="cut_caption">{CAPTION}</span></p>[/CAPTION] | + | |
- | [CAPTION_ELSE]<p>{IMGNAME}</p>[/CAPTION_ELSE] | + | |
- | </file> | + | |
- | Es wird auf die Zeichenfolge ##<span class="cut_caption">## //Caption-Text// ##</span>## getriggert. \\ | + | <code php|h cp_search_no_sum.php |h> |
- | //Caption-Text// wird somit separiert, ausgelesen und verarbeitet. \\ | + | |
- | Die Stelle <span ...> .... </span> wird mit dem Ergebnis überschrieben. | + | |
- | + | ||
- | In diesem Beispiel werden die Zeichen //substr('$1', **0**, **8**)// von Position 0 bis 8 ausgeschnitten und zurückgegeben. | + | |
- | + | ||
- | Ergebnis: Yes We Can //do many things with this cms// -> **Yes We C** | + | |
- | + | ||
- | \\ | + | |
- | + | ||
- | + | ||
- | <code php|h cp_trig_cut_caption_text.php |h> | + | |
<?php | <?php | ||
// ------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------- | ||
Line 239: | Line 225: | ||
if (!defined('PHPWCMS_ROOT')) { | if (!defined('PHPWCMS_ROOT')) { | ||
die("You Cannot Access This Script Directly, Have a Nice Day."); } | die("You Cannot Access This Script Directly, Have a Nice Day."); } | ||
+ | // ------------------------------------------------------------------------------------------- | ||
+ | // 01.10.09 KH (flip-flop) Kill all summary entries between <p> and </p> in search result | ||
// ------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------- | ||
- | // Cutting the caption text in FE output (substr('$1', 0, 8) = cutting out charakter 0 to 8) | + | function CP_SEARCH_NO_SUMMARY($text, & $data) { |
- | // K.Heermann (flip-flop) 17.05.09 | + | |
- | /* | + | if( $data['acontent_type'] == 13 ) // CP: 13 => search |
- | * cp_trigger_function_name - the unique function name | + | { |
- | * $text - holds the content part html source on which you can parse or do custom processing | + | $text = preg_replace("/\<p\>(.*?)\<\/p\>/si", '', $text); // kill all <p> ....</p> |
- | * $data - is a reference to an array which holds content part values like ID, dates and other values - see db table phpwcms_articlecontent | + | |
- | + | ||
- | Always return $text; | + | |
- | */ | + | |
- | + | ||
- | + | ||
- | /* e.g. Template ------------------------------------------------------------- | + | |
- | [CAPTION]<p style="margin:3px 0 0 0; width:200px; height:15px;"><span class="cut_caption">{CAPTION}</span></p>[/CAPTION] | + | |
- | [CAPTION_ELSE]<p>{IMGNAME}</p>[/CAPTION_ELSE] | + | |
- | ----------------------------------------------------------------------------- */ | + | |
- | + | ||
- | function CP_CUT_CAPTION_TEXT($text, & $data) { | + | |
- | + | ||
- | + | ||
- | // CPs: 29 => image <div>, 31 => image special | + | |
- | if ( $data['acontent_type'] == 29 OR $data['acontent_type'] == 31 ) | + | |
- | { | + | |
- | $text = preg_replace("/<span class=\"cut_caption\">(.*?)<\/span>/e","substr('$1', 0, 8).' ...'" , $text); | + | |
- | + | ||
- | // First word in string | + | |
- | // $text = preg_replace("/<span class=\"cut_caption\">(.*?)<\/span>/e","substr('$1', 0, strpos('$1', ' ')).' ...'" , $text); | + | |
} | } | ||
- | |||
return $text; | return $text; | ||
} | } | ||
- | + | ||
- | register_cp_trigger('CP_CUT_CAPTION_TEXT'); | + | register_cp_trigger('CP_SEARCH_NO_SUMMARY'); |
- | + | ||
?> | ?> | ||
</code> | </code> | ||
Line 280: | Line 244: | ||
\\ | \\ | ||
- | ===== 5. Beispiel: Kürzen des CAPTION-Textes V1.1 ===== | ||
- | |||
- | Bei der Verwendung der CPs //Bilder <div>// und //Bilder Spezial// soll der Captiontext //(Bildunterzeile)// für die einfache FE-Ausgabe gezielt gekürzt werden. In der LightBox bleibt der gesamte Text vorhanden. \\ | ||
- | Dies wird erreicht durch den Einsatz eines CP triggers im Ordner /template/inc_script/frontend_init/ \\ | ||
- | |||
- | In das Template wird //(siehe unten)// eine genau definierte Zeichenfolge um den {CAPTION}-Platzhalter eingebaut. Diese Zeichenfolge wird von dem Trigger-Programm im .../frontend_render/ ausgefilter und ausgewertet. Es können hier Steuerparamter über einen einfachen Klassennamen vom Template an das Programm übergeben werden. | ||
- | |||
- | |||
- | Angenommener Templateeintrag: | ||
- | <file> | ||
- | [CAPTION]<p style="margin:3px 0 0 0; width:200px; height:15px;"><span class="cut_caption-c20-w3">{CAPTION}</span></p>[/CAPTION] | ||
- | [CAPTION_ELSE]<p>{IMGNAME}</p>[/CAPTION_ELSE] | ||
- | </file> | ||
- | |||
- | Im frontend_init-Programm wird auf die Zeichenfolge ##<span class="cut_caption####-c20####-w3####">## //Caption-Text// ##</span>## getriggert. \\ | ||
- | //Caption-Text// wird somit separiert, ausgelesen und verarbeitet. \\ | ||
- | V1.1.1: Zusätlich werden die Parameter in **cut_caption**##-c20####-w3## erkannt und verarbeitet. \\ | ||
- | **Parameterbedeutung:** | ||
- | * **-c**XX -> Ausgabe von max. XX Zeichen autom. Schaltung in den Modus [**char**] | ||
- | * **-w**XX -> Ausgabe von max. XX Wörtern autom. Schaltung in den Modus [**word**] | ||
- | Werden beide Parameter angegeben, gilt folgendes: Ist der String "XX Worte" im Modus [**word**] länger als max. Zeichen in **-c**XX angegeben, wird autom. auf den Modus [**char**] umgeschaltet. | ||
- | |||
- | |||
- | Die Stelle //<span ...> .... </span>// wird mit dem Ergebnis überschrieben. | ||
- | |||
- | In diesem Beispiel würden die ersten drei Worte ausgegeben wenn vorhanden oder falls der Wortstring länger als 20 Zeichen sein sollte, diese ausgegeben. \\ | ||
- | |||
- | **Templateaufruf:** <span class="cut_caption**-c20-w3**">. \\ | ||
- | **Gegeben:** Yes We Can //do many things with this cms// \\ | ||
- | **Ergebnis:** **Yes We Can ...** | ||
- | |||
- | **Templateaufruf:** <span class="cut_caption**-c8-w6**"> \\ | ||
- | **Gegeben:** Yes We Can //do many things with this cms// \\ | ||
- | **Ergebnis:** **Yes We C ...** | ||
- | |||
- | **Templateaufruf:** <span class="cut_caption**-w6**"> \\ | ||
- | **Gegeben:** Yes We Can //do many things with this cms// \\ | ||
- | **Ergebnis:** **Yes We Can do many things ...** | ||
- | |||
- | ^ Templateaufruf ^ Gegeben //(Zeichenkette)// ^ Ergebnis ^ Kommentar ^ | ||
- | | <span class="cut_caption**-c20-w3**"> | Yes We Can //do many things with this cms// | **Yes We Can ...** | 20 Zeichen / 3 Wörter | | ||
- | | <span class="cut_caption**-c8-w6**"> | Yes We Can //do many things with this cms// | **Yes We C ...** | 8 Zeichen / 6 Wörter | | ||
- | | <span class="cut_caption**-w6**"> | Yes We Can //do many things with this cms// | **Yes We Can do many things ...** | 6 Wörter | | ||
- | |||
- | \\ | ||
- | |||
- | <code php|h cp_trig_cut_caption_text.php |h> | ||
- | // ------------------------------------------------------------------------------------------- | ||
- | // obligate check for phpwcms constants | ||
- | if (!defined('PHPWCMS_ROOT')) { | ||
- | die("You Cannot Access This Script Directly, Have a Nice Day."); } | ||
- | // ------------------------------------------------------------------------------------------- | ||
- | |||
- | // Cutting the caption text in FE output V1.1.1 | ||
- | // K.Heermann (flip-flop) 18.05.09 | ||
- | |||
- | /* | ||
- | * cp_trigger_function_name - the unique function name | ||
- | * $text - holds the content part html source on which you can parse or do custom processing | ||
- | * $data - is a reference to an array which holds content part values like ID, dates and other values - see db table phpwcms_articlecontent | ||
- | |||
- | Always return $text; | ||
- | */ | ||
- | |||
- | |||
- | /* e.g. Template ------------------------------------------------------------- | ||
- | [CAPTION]<p style="margin:3px 0 0 0; width:200px; height:15px;"><span class="cut_caption-c20-w3">{CAPTION}</span></p>[/CAPTION] | ||
- | [CAPTION_ELSE]<p>{IMGNAME}</p>[/CAPTION_ELSE] | ||
- | ----------------------------------------------------------------------------- */ | ||
- | |||
- | |||
- | /* ----------------------------------------------------------------------------- | ||
- | [$text=whole string] | ||
- | |||
- | [$param=mode e.g. -c20-w3] | ||
- | -cX = max characters to show | ||
- | -wX = max words to show (if word string > max charakters, max.char is used) | ||
- | |||
- | Yes, I know the php function str_word_count, | ||
- | but there is a problem with utf-8 Sonderzeichen like ä, ü, ö .... | ||
- | ----------------------------------------------------------------------------- */ | ||
- | |||
- | function String_Word_Limiter($text, $param=''){ | ||
- | |||
- | // Default, if there is no parameter from client | ||
- | $max_char = 100; | ||
- | $limit_word = 4; | ||
- | $prio_char_word = 'char'; | ||
- | |||
- | if (!empty($text) ) { // parameter set by user ? | ||
- | $string = $text; // Yes and save | ||
- | $param = strtolower($param); // convert all to lower char | ||
- | $_param = explode('-',$param); // Cut out all parameters $_param[1] - [2] | ||
- | |||
- | foreach ($_param as $key=>$value) { // Cutting out and allocate the parameters | ||
- | if (substr($value, 0, 1) == 'c') { | ||
- | $max_char = substr($value, 1); | ||
- | $prio_char_word = 'char'; | ||
- | } | ||
- | elseif (substr($value, 0, 1) == 'w') { | ||
- | $limit_word = substr($value, 1); | ||
- | $prio_char_word = 'word'; | ||
- | } | ||
- | } | ||
- | } else { // No parameter set by user | ||
- | $string = $param; | ||
- | } | ||
- | |||
- | if ($prio_char_word == 'word') { // Is it the word mode? | ||
- | $explode = explode(' ',$text); // Cut out all words | ||
- | $string = ''; | ||
- | |||
- | |||
- | for($i=0; $i<$limit_word; $i++){ // Generate the new word string | ||
- | $string .= $explode[$i]." "; | ||
- | } | ||
- | // Fallback, if word string is too lang | ||
- | if (strlen($string) > $max_char ) $string = substr($text, 0, $max_char); | ||
- | |||
- | } | ||
- | // It is the Charakter mode | ||
- | else $string = substr($text, 0, $max_char); | ||
- | |||
- | |||
- | $dots = (strlen($text) > strlen($string) ) ? ' ...' : ''; // Dots set | ||
- | |||
- | return $string.$dots; | ||
- | } | ||
- | |||
- | // ---------------------------------------------------------------------------- | ||
- | |||
- | function CP_CUT_CAPTION_TEXT($text, & $data) { | ||
- | |||
- | |||
- | // CPs: 29 => image <div>, 31 => image special | ||
- | if(($data['acontent_type'] == 29 OR $data['acontent_type'] == 31)) | ||
- | { | ||
- | //<span class="cut_caption">Caption-Text</span> // $1 = -c20-w4 | ||
- | // e.g. <span class="cut_caption-c20-w4">Caption-Text</span> | ||
- | |||
- | $search = "/<span class=\"cut_caption(.*?)\">(.*?)<\/span>/e"; | ||
- | $replace = "String_Word_Limiter('$2','$1')"; | ||
- | |||
- | $text = preg_replace($search,$replace , $text); | ||
- | |||
- | } | ||
- | |||
- | return $text; | ||
- | } | ||
- | |||
- | register_cp_trigger('CP_CUT_CAPTION_TEXT'); | ||
- | |||
- | </code> | ||
- | <note>Bei der Verwendung eines utf-8 Zeichensatzes und | ||