{{indexmenu_n>10}}
====== CP-trigger ======
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 [[:deutsch:phpwcms-system:artikel:contentparts|ContentPart]] geparst wird.
!!Der Unterschied zu einer Funktion in [[:deutsch:ersetzer_rts:frontend_render|/frontend_render/]] liegt in der gezielten Abarbeitung eines Content-Teilbereichs. Es wird nur der Inhalt des/der CPs verarbeitet, nicht der gesamte Inhalt der Seite. !!
===== Definition =====
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 [[:deutsch:phpwcms-system:artikel:contentparts|ContentPart]] platziert.
Benutzerfunktionen werden wie folgt definiert:
function cp_trigger_function_name($param1, & $param2) {
$param1 = do_this_or_that($param2['acontent_id']);
return $param1;
}
* **cp_trigger_function_name** - der eindeutige Funktionsname
* **$param1** - beinhaltet den ContentPart html Quelltext der geparst werden oder auf den ein Benutzerprozess angewendet werden kann.
* **$param2** - ist eine Referenz zu einem Array welches die ContentPart-Werte wie ID, Datum und andere Parameter beinhaltet - zu sehen in der DB Tabelle phpwcms_articlecontent.
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 [[:deutsch:phpwcms-system:artikel:contentparts|ContentPart]] (siehe [[:deutsch:technik:aufruf-interner-funktionen:content_part_typen|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;
}
==== TABELLE phpwcms_articlecontent ====
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.
==== ContentPart Typen ====
Bitte schaue dir folgendes an: [[:deutsch:technik:aufruf-interner-funktionen:content_part_typen|ContentPart-Typen]]
===== 1. Beispiel: CP_IMGDIV_img_class =====
Forum: [[http://forum.phpwcms.org/viewtopic.php?p=107107#p107107]]
Eine Klasse zu einem Bild hinzufügen, das aus dem CP Bilder

Die Konstruktion soll strukturell etwa so aussehen:
==== Lösungsmethode: ====
- mit einem Trigger auf **border="0"** und Ersetzung nach **class="MY_CUSTOM_CLASS" border="0"** ergibt: \\

\\
**Der Ersetzer:**
\\
===== 2. Beispiel: CP_PLAINTEXT_P =====
Der Contentpart //Einfacher Text/plain text// liefert seinen Inhalt zwischen ** ...
** 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\>/si", $text, $g) ? $g[1] : $text;
}
return $text;
}
register_cp_trigger('CP_PLAINTEXT_P');
\\
===== 3. Beispiel: CP_PLAINTEXT_P_BR =====
Der Contentpart //Einfacher Text/plain text// ersetzt mehrere aufeinanderfolgende **
** in einen einleitenden **** Tag. Um dieses Verhalten rückgängig zu machen kann der nachfolgende Trigger verwendet werden. (Wandelt alle **
** und **
** in **
** um).
plain text
{
$text = str_replace('', '
', $text);
$text = str_replace('
', '
', $text);
}
return $text;
}
register_cp_trigger('CP_PLAINTEXT_P_BR');
?>
\\
===== 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.
Die Standardausgabe umschließt den gefundenen Schlagtext jeweils mit **... Summary ...
**. Also ist es möglich hiernach zu suchen und den gesamten Inhalt von **...
** durch eine leere Menge zu ersetzen.
Forum: [[http://forum.phpwcms.org/viewtopic.php?p=120031#p120031]]
and in search result
// -------------------------------------------------------------------------------------------
function CP_SEARCH_NO_SUMMARY($text, & $data) {
if( $data['acontent_type'] == 13 ) // CP: 13 => search
{
$text = preg_replace("/\(.*?)\<\/p\>/si", '', $text); // kill all
....
}
return $text;
}
register_cp_trigger('CP_SEARCH_NO_SUMMARY');
?>
\\