Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
cookbook:droplets [2014/09/22 12:32] shadowcat [Das Droplet bekannt machen] |
cookbook:droplets [2015/04/01 00:00] (aktuell) |
||
---|---|---|---|
Zeile 17: | Zeile 17: | ||
</WRAP> | </WRAP> | ||
+ | <WRAP center round important 100%> | ||
+ | **Wichtige Voraussetzung:** Da es hier um zusätzlich einzubindende Dateien geht, ist es natürlich notwendig, diese irgendwo zu hinterlegen. Daher erfordern diese Funktionalitäten, daß zum Droplet auch ein Modul gehört. | ||
+ | </WRAP> | ||
===== Seitentitel, -beschreibung und -Schlüsselwörter ändern ===== | ===== Seitentitel, -beschreibung und -Schlüsselwörter ändern ===== | ||
Zeile 48: | Zeile 51: | ||
''CAT_Helper_Droplet::register_droplet_header( //String// $droplet_name, //Integer// $page_id, //String // $module_directory)'' | ''CAT_Helper_Droplet::register_droplet_header( //String// $droplet_name, //Integer// $page_id, //String // $module_directory)'' | ||
- | Diese Funktion wird im Droplet selbst aufgerufen. Um zu vermeiden, daß sich ein Droplet mehrfach registriert, existiert eine entsprechende Funktion | + | Diese Funktion kann im Droplet selbst aufgerufen werden, da ja nur das Droplet "weiß", auf welcher Seite es eingebunden ist. Um zu vermeiden, daß sich ein Droplet mehrfach registriert, existiert eine entsprechende Funktion |
''CAT_Helper_Droplet::is_registered_droplet_header( //String// $droplet_name, //Integer// $page_id)'' | ''CAT_Helper_Droplet::is_registered_droplet_header( //String// $droplet_name, //Integer// $page_id)'' | ||
Zeile 61: | Zeile 64: | ||
} | } | ||
</sxh> | </sxh> | ||
+ | |||
+ | Natürlich sind 'mydropletname' und 'mymodulename' durch die tatsächlichen Werte zu ersetzen! | ||
+ | |||
+ | ===== Droplet-CSS und -JS einbinden ===== | ||
+ | |||
+ | Manchmal ist es notwendig, für ein Droplet eigene CSS- und JavaScript-Dateien einzubinden. In Website Baker und LEPTON gibt es ohne das DropletsExtension-Modul keine validen Möglichkeiten dafür. In BlackCat CMS natürlich schon. | ||
+ | |||
+ | Analog zu den obigen Funktionen existieren für das Einbinden von CSS- und JS-Dateien entsprechende Funktionen: | ||
+ | |||
+ | ''is_registered_droplet_css( //String// $droplet_name, //Integer// $page_id)''\\ | ||
+ | ''register_droplet_css( //String// $droplet_name, //Integer// $page_id, //String// $module_directory, //String// $file)'' | ||
+ | |||
+ | ''is_registered_droplet_js( //String// $droplet_name, //Integer// $page_id)''\\ | ||
+ | ''register_droplet_js( //String// $droplet_name, //Integer// $page_id, //String// $module_directory, //String// $file)'' | ||
+ | |||
+ | <WRAP center round important 100%> | ||
+ | Wichtig! Das ''$module_directory'' muß relativ zu CAT_PATH angegeben werden, also z.B. ''/modules/mymodule''. Liegt die Datei in einem Unterverzeichnis - z.B. ''/modules/mymodule/css'' - kann das Unterverzeichnis bei ''$file'' angegeben werden. | ||
+ | </WRAP> | ||
+ | |||
+ | Beispiel: | ||
+ | |||
+ | <sxh php> | ||
+ | if(!CAT_Helper_Droplet::is_registered_droplet_css('mymodule',$page_id)) { | ||
+ | CAT_Helper_Droplet::register_droplet_css('mymoduledroplet',$page_id,'/modules/mymodule','/css/frontend.css'); | ||
+ | } | ||
+ | </sxh> | ||
+ | ===== Das Droplet in die Suchfunktion einbeziehen ===== | ||
+ | |||
+ | Da war doch noch die Einschränkung mit der Suche... | ||
+ | |||
+ | Ein Droplet kann sehr einfache bzw. für die Suche nicht relevante Informationen in die Seite einbinden, z.B. das Datum der letzten Änderung, das Suchformular selbst oder eine Login-Box. Es kann aber auch sehr komplexe Inhalte liefern, z.B. einen Veranstaltungskalender. Und die möchte man dann bei der Suche durchaus auch finden können. | ||
+ | |||
+ | Hierzu existiert analog zur Funktion ''<module_directory>_droplet_header($page_id)'' eine Funktion ''<module_directory>_droplet_search($page_id)'', die in der Datei ''droplet.extension.php'' hinterlegt werden kann. Auch diese wird auf dem 'üblichen' Weg bekannt gemacht: | ||
+ | |||
+ | <sxh php> | ||
+ | global $page_id; | ||
+ | // ... maybe more code here... | ||
+ | if(!CAT_Helper_Droplet::is_registered_droplet_search('mydropletname',$page_id)) { | ||
+ | CAT_Helper_Droplet::register_droplet_search('mydropletname',$page_id,'mymoduledirname'); | ||
+ | } | ||
+ | </sxh> | ||
+ | |||
+ | Als Rückgabe wird eine Gruppe von assoziativen Arrays erwartet, mit der Struktur: | ||
+ | |||
+ | <sxh php> | ||
+ | foreach ($items as $item) { | ||
+ | $result = array( | ||
+ | 'url' => $page_url, // URL der Seite, die die Fundstelle anzeigt | ||
+ | 'params' => $params, // zusaetzliche Parameter die uebergeben werden sollen | ||
+ | 'title' => $title, // Titel der Fundstelle | ||
+ | 'description' => $description, // Kurzbeschreibung der Fundstelle | ||
+ | 'text' => $text, // der zu durchsuchende Text der Fundstelle | ||
+ | 'modified_when' => $modified_when, // UNIX Timestamp | ||
+ | 'modified_by' => $modified_by // User ID | ||
+ | ); | ||
+ | } | ||
+ | </sxh> | ||
+ | |||
+ | Wobei die Funktion ''<module_directory>_droplet_search($page_id, $page_url)'' einfach alle in Frage kommenden Fundstellen zurückliefern soll - die eigentliche Suche wird von der CMS-Suchfunktion durchgeführt, die hierzu auf das Feld 'text' zugreift. Daher sollte in dem Feld 'text' plain text ohne HTML Formatierungen stehen. | ||
+ | |||
+ | ===== Droplet-Registrierungen entfernen ===== | ||
+ | |||
+ | Bei der Deinstallation des Moduls sollten natürlich auch die Registrierungen entfernt werden, da es sonst zu Fehlermeldungen im Frontend kommt. Hierzu existieren für jeden Typ entsprechende ''unregister''-Methoden: | ||
+ | |||
+ | ''unregister_droplet_search( //String// $droplet_name, //Integer// $page_id)''\\ | ||
+ | ''unregister_droplet_header( //String// $droplet_name, //Integer// $page_id)''\\ | ||
+ | ''unregister_droplet_css( //String// $droplet_name, //Integer// $page_id)''\\ | ||
+ | ''unregister_droplet_js( //String// $droplet_name, //Integer// $page_id)'' |