Benutzer-Werkzeuge

Webseiten-Werkzeuge


cookbook:droplets

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

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)''​
cookbook/droplets.1411381958.txt.gz · Zuletzt geändert: 2014/09/22 00:00 (Externe Bearbeitung)