NAVIGATION
Forum: http://forum.phpwcms.org/viewtopic.php?p=107107#p107107 - Autor: OG
Eine sehr einfache Methode um eine Benutzerfunktion einzubinden, die immer durchlaufen wird, wenn ein ContentPart geparst wird.
Datei: /template/inc_script/frontend_init/disabled/trigger_test.php
Diese Datei wird ein Verzeichnis nach oben kopiert in - /template/inc_script/frontend_init/.
Der Ersetzer Tag {CPDATE} wird im ContentPart platziert.
Benutzerfunktionen werden wie folgt definiert:
function cp_trigger_function_name($param1, & $param2) { $param1 = do_this_or_that($param2['acontent_id']); return $param1; }
Es wird immer $param1; zurückgegeben.
Die Funktion muss in phpwcms registriert werden, damit diese vom System geparst wird:
register_cp_trigger('cp_trigger_function_name', 'LAST');
Die Funktion kann auch auf einen speziellen ContentPart (siehe ContentPart -Typen) begrenzt werden:
function cp_trigger_function_name($param1, & $param2) { if($param2['acontent_type'] == 14) { // 14 is CP WYSIWYG $param1 = do_this_or_that($param2['acontent_id']); } return $param1; }
Kurze Beschreibung der Tabelle phpwcms_articlecontent
Einiger der Felder sind sehr speziell. Leider ist die Namensgebung historisch bedingt nicht immer eindeutig.
acontent_id auto increment unique ID acontent_aid ID of parent article acontent_uid ID of the user has saved CP at last acontent_created Date: CP created, MySQL date format acontent_tstamp Date: CP updated, MySQL date format acontent_title Title text acontent_text Plain Text (in general) acontent_type Type of the Cntent Part - look at include/inc_lib/article.contenttype.inc.php acontent_sorting sort value: [value] acontent_image Holds image information (older CP) acontent_files Hold file information (older CP) acontent_visible Visible [0/1] acontent_subtitle Subtitle text acontent_before Space: before [value] acontent_after Space: after [value] acontent_top Top anchor jump [0/1] acontent_redirect can hold an URL (cannot remember at the moment) acontent_html also Text, can be HTML styled text but also other texts acontent_trash 0= available 9= trash acontent_alink Also older CP - article link acontent_media CP Multimedia information acontent_form more complex - current CPs store serialized infos there acontent_newsletter ?? (mediumtext) acontent_block display: e.g. [Content] - in general empty mean main block acontent_anchor anchor: [0/1] acontent_template template filename if there acontent_spacer ?? (int(1)) acontent_tid ?? (int(11)) acontent_livedate Livedate (not in use ??) acontent_killdate Killdate (not in use ??) acontent_module Module name acontent_comment notes: [value] acontent_paginate_page Paginate subsection: [value] acontent_paginate_title subsection title: [value] acontent_category ?? acontent_granted if set [0/1] visible for logged-in users only
Als Hilfe kann der Aufruf der integrierten Funktion dumpVar($varname); dienen um mehr Imformationen über die tatsächlichen Daten zu erhalten.
Bitte schaue dir folgendes an: ContentPart-Typen
Forum: http://forum.phpwcms.org/viewtopic.php?p=107107#p107107
Eine Klasse zu einem Bild hinzufügen, das aus dem CP Bilder <div> generiert wird. Gegeben ist diese Ausgabe:
<img src="content/images/xyz.jpg" alt="Alt-Text" title="Titel-Text" border="0" width="120" height="90">
Die Konstruktion soll strukturell etwa so aussehen:
<img CLASS="MY_CUSTOM_CLASS" src="content/images/xyz.jpg ...."
- mit einem Trigger auf border=“0” und Ersetzung nach class=“MY_CUSTOM_CLASS” border=“0” ergibt:
<img src="content/images/xyz.jpg" alt="Alt-Text" title="Titel-Text" class="MY_CUSTOM_CLASS" border="0" width="120" height="90">
Der Ersetzer:
/template/inc_script/frontend_init/rt_cp_trigger.php
<?php // http://forum.phpwcms.org/viewtopic.php?p=107107#p107107 /* ------------------------------------------------------------------ function cp_trigger_function_name($param1, & $param2) { if($param2['acontent_type'] == 14) { // 14 is CP WYSIWYG $param1 = do_this_or_that($param2['acontent_id']); } return $param1; } * cp_trigger_function_name - the unique function name * $param1 - holds the content part html source on which you can parse or do custom processing * $param2 - is a reference to an array which holds content part values like ID, dates and other values - see db table phpwcms_articlecontent Always return $param1; */ // ------------------------------------------------------------------ // obligate check for phpwcms constants if (!defined('PHPWCMS_ROOT')) { die("You Cannot Access This Script Directly, Have a Nice Day."); } // ------------------------------------------------------------------ function CP_IMGDIV_img_class($text, & $data) { if($data['acontent_type'] == 29) { // 29 is CP img div $text = preg_replace('/border="0"/i', 'border="0" class="MY_CUSTOM_CLASS"', $text); } return $text; } register_cp_trigger('CP_IMGDIV_img_class'); /* ------- and the next one function CP_Other_CP($text, & $data) { if($data['acontent_type'] == XX) { // XX is CP Other CP $text = custom processing ; } return $text; } register_cp_trigger('CP_Other_CP'); ---------- and so on */ ?>
Der Contentpart Einfacher Text/plain text liefert seinen Inhalt zwischen <p> … </p> Tags aus. Je nach Planung der Seite ist dies in vielen Fällen ungünstig. Diese Tags können jedoch recht einfach beseitigt werden.
function CP_PLAINTEXT_P($text, & $data) { if($data['acontent_type'] == 0) { // 0 is CP plain text $text = preg_match("/\<p\>(.*?)\<\/p\>/si", $text, $g) ? $g[1] : $text; } return $text; } register_cp_trigger('CP_PLAINTEXT_P');
Der Contentpart Einfacher Text/plain text ersetzt mehrere aufeinanderfolgende <br /> <br /> in einen einleitenden <p> Tag. Um dieses Verhalten rückgängig zu machen kann der nachfolgende Trigger verwendet werden. (Wandelt alle <p> und </p> in <br /> um).
<?php // ------------------------------------------------------------------------------------------- // obligate check for phpwcms constants if (!defined('PHPWCMS_ROOT')) { die("You Cannot Access This Script Directly, Have a Nice Day."); } // ------------------------------------------------------------------------------------------- function CP_PLAINTEXT_P_BR($text, & $data) { if( $data['acontent_type'] == 0 ) // CP: 0 => plain text { $text = str_replace('<p>', '<br />', $text); $text = str_replace('</p>', '<br />', $text); } return $text; } register_cp_trigger('CP_PLAINTEXT_P_BR'); ?>
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.
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.
Forum: http://forum.phpwcms.org/viewtopic.php?p=120031#p120031
<?php // ------------------------------------------------------------------------------------------- // obligate check for phpwcms constants if (!defined('PHPWCMS_ROOT')) { 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 // ------------------------------------------------------------------------------------------- function CP_SEARCH_NO_SUMMARY($text, & $data) { if( $data['acontent_type'] == 13 ) // CP: 13 => search { $text = preg_replace("/\<p\>(.*?)\<\/p\>/si", '', $text); // kill all <p> ....</p> } return $text; } register_cp_trigger('CP_SEARCH_NO_SUMMARY'); ?>