NAVIGATION
This shows you the differences between two versions of the page.
|
english:phpwcms_replacer_rts:frontend_init:cp_trigger [2009/05/18 18:09] Knut Heermann (flip-flop) |
english:phpwcms_replacer_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]] \\ | Forum: [[http://forum.phpwcms.org/viewtopic.php?p=107107#p107107]] \\ | ||
| Line 37: | Line 37: | ||
| </code> | </code> | ||
| - | You can also limit your function to work for special [[:english:phpwcms-system:article:contentparts|content parts]] (especially [[:english:technics:internally-function-call:content-part-types|content part types]]): | + | You can also limit your function to work for special [[:english:phpwcms-system:article:contentparts|content parts]] (especially [[:english:technics:internal-function-call:content-part-types|content part types]]): |
| <code php> | <code php> | ||
| function cp_trigger_function_name($param1, & $param2) { | function cp_trigger_function_name($param1, & $param2) { | ||
| Line 98: | Line 98: | ||
| === Content Part Types === | === Content Part Types === | ||
| - | Please have a look into: [[:deutsch:technik:aufruf-interner-funktionen:content_part_typen|Content Part Types]] | + | Please have a look into: [[:/english/technics/internal-function-call/content-part-types|Content Part Types]] |
| Line 107: | Line 107: | ||
| Add a class to an image, based on the cp image <div>. The given output: | Add a class to an image, based on the cp image <div>. The given output: | ||
| - | <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> |
| The construction structurally is look like: | The construction structurally is look like: | ||
| Line 114: | Line 114: | ||
| ==== Method of resolution: ==== | ==== Method of resolution: ==== | ||
| - using a trigger to **border="0"** and replace to **class="MY_CUSTOM_CLASS" border="0"** ends in this result: \\ | - using a trigger to **border="0"** and replace to **class="MY_CUSTOM_CLASS" border="0"** ends in this result: \\ | ||
| - | <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 211: | Line 211: | ||
| \\ | \\ | ||
| - | ===== 4. example: Shorten the CAPTION text ===== | + | ===== 4. example: CP_SEARCH_NO_SUMMARY ===== |
| - | When using the CPs //image <div>// and //image special//, the caption text is to be shortened for the the simple FE output. In LightBox the whole caption text is available. | ||
| - | Assumed template entry: | + | Using the content part //search// in search result we need only the article title without the summary. |
| - | <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> | + | |
| - | It is triggered to the character sequence ##<span class="cut_caption">## //cption-text// ##</span>##. \\ | + | At this moment (2009/09) a non summary output is not possible. If we insert the value zero into [results per page (summary)] it is the same as an "empty" input. -> (If empty, show all). |
| - | //caption-Text// is thus separated, selected and processed. \\ | + | |
| - | The place //<span ...> .... </span>// is signed over with the result. | + | |
| - | In this example the character stream //substr('$1', **0**, **8**)// from position 0 to 8 is cutting out and returned. | ||
| - | Result: Yes We Can //do many things with this cms// -> **Yes We C** | + | The standard output encloses the found summary in each case with **<p>... Summary ...</p>**. Thus it is possible to search for **<p>...</p>** and replace all **<p>...</p>** by an empty quantity. |
| - | \\ | + | Forum: [[http://forum.phpwcms.org/viewtopic.php?p=120031#p120031]][DE] |
| - | <code php|h cp_trig_cut_caption_text.php |h> | + | <code php|h cp_search_no_sum.php |h> |
| <?php | <?php | ||
| // ------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------- | ||
| Line 239: | Line 230: | ||
| 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); | + | |
| } | } | ||
| - | |||
| return $text; | return $text; | ||
| } | } | ||
| - | + | ||
| - | register_cp_trigger('CP_CUT_CAPTION_TEXT'); | + | register_cp_trigger('CP_SEARCH_NO_SUMMARY'); |
| - | + | ||
| ?> | ?> | ||
| </code> | </code> | ||
| \\ | \\ | ||
| - | |||
| - | ===== 5. example: Shorten the CAPTION text V1.1 ===== | ||
| - | |||
| - | FIXME translate | ||
| - | |||
| - | 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: | ||
| - | <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> | ||
| - | |||
| - | Es 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## getriggert und verarbeitet. | ||
| - | * **-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**">. | ||
| - | |||
| - | Ergebnis: Yes We Can //do many things with this cms// -> **Yes We Can** | ||
| - | \\ | ||
| - | |||
| - | <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-pchar[word] | ||
| - | // e.g. <span class="cut_caption-c20-w4-pchar">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> | ||
| - | |||