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:31]
shadowcat [Grundlagen]
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 46: Zeile 49:
 Damit BlackCat CMS weiß, daß es die o.g. Datei auf einer bestimmten Seite einbinden soll, muß diese registriert werden. Hierzu dient die Funktion Damit BlackCat CMS weiß, daß es die o.g. Datei auf einer bestimmten Seite einbinden soll, muß diese registriert werden. Hierzu dient die Funktion
  
-    ​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)''​
  
 Der vollständige Code, den ein Droplet verwenden kann, sieht (beispielhaft) demnach so aus: Der vollständige Code, den ein Droplet verwenden kann, sieht (beispielhaft) demnach so aus:
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.1411381906.txt.gz · Zuletzt geändert: 2014/09/22 00:00 (Externe Bearbeitung)