SixCMS-Inhalte in Drupal anzeigen
olav — Fri, 10/31/2008 - 14:37
Auch die andere Richtung ist möglich, also die Anzeige von Inhalten aus dem Wirtsystem (wieder dem SixCMS) in Drupal. Als Beispiel wollen wir einen Block einbinden, der eine Artikelliste aus dem SixCMS anzeigt. Die folgende Abbildung zeigt diesen Block.
Die Einträge in diesem Block stammen aus dem SixCMS. Die Links ebenfalls auf Seiten, die über SixCMS-Templates dargestellt werden. Eine solche Navigation würden Sie typischerweise dann einbauen, wenn Sie Drupal zur Realisierung ganzer Teilbereiche Ihrer Site, etwa für Foren oder Weblogs, nutzen. Das Navigationsmenü stellt in solch einem Fall die Verbindung zwischen den redaktionellen und den interaktiven Teilen der Site her.
Den erforderlichen Verbindungs-Code implementieren wir in einem eigenen Drupal-Modul namens dbuchsix. Legen Sie dazu ein Verzeichnis sites/all/dbuchsix an und darin zunächst eine Datei dbuchsix.info mit folgendem Inhalt:
; $Id$ name = Drupalbuch SixCMS description = Integrate Drupal with SixCMS7 core = 6.x
Der eigentliche Code folgt in der Datei dbuchsix.module mit diesem Inhalt:
/** * hook_init() */
function dbuchsix_init() { global $prefs; require_once $_SERVER[‘DOCUMENT_ROOT’] . ‘/sixcms_config_user.php’;
// 1 require_once $prefs[‘sixcms_path_fs’] . ‘/functions/config.php’; require_once $prefs[‘sixcms_path_fs’] . ‘/functions/cms_db_functions.php’; require_once $prefs[‘sixcms_path_fs’] . ‘/functions/cmsfunc.php’;
}/** * Wrapper for SixCMS embed function */
// 2
function dbuchsix_embed($template, $kind=‘template’) { return cmsfunc_EMBED(array( $kind => $template, ));
}
Die für die Verbindung erforderlichen Definitionen binden wir in einem hook_init() ein (Zeile 1). Die Funktion dbuchsix_embed() ab Zeile 2 erlaubt es uns dann, aus Drupal heraus ein SixCMS-Template aufzurufen. Diese Funktion nutzen wir dann in unserem Block, den wir der Einfachheit halber nicht per hook_block(), sondern direkt durch Einfügen des erforderlichen PHP-Codes in einen manuell angelegten Block definieren. Aktivieren Sie aber zunächst Ihr neues Modul wie gewohnt über Administer | Site building | Modules.
In diesem Block wollen wir ein Page-Template aus dem SixCMS über den Aufruf unserer Funktion dbuchsix_embed() einbinden. Ein Page-Template im SixCMS stellt eine Kombination aus Suchanfrage und formatierter Listenausgabe bereit. Da dies ein Buch über Drupal und keins über SixCMS ist, wollen wir die erforderlichen Schritte auf der Seite des SixCMS nicht im Detail vorstellen. Jedenfalls sollte Ihr Template-Container im SixCMS ein Page-Template wie in der folgenden Abbildung enthalten, damit die Einbindung dieses Templates in Drupal nicht zu einem Fehler führt.
Legen Sie als nächstes unter Administer | Site building | Blöcke einen neuen Block für Ihr Theme an, positionieren ihn in der linken Spalte, setzen sein Eingabeformat auf PHP-Code und geben ihm folgenden Inhalt:
<?php
echo dbuchsix_embed('dbuch_menu', 'page');
?>
Mit diesem Code binden wir die Ausgabe eines SixCMS-Template namens _dbuch_menu_ vom Typ page in einem Drupal-Block ein. Das Ergebnis ist der oben gezeigte Block.




Kommentiert
11 weeks 6 days ago
13 weeks 3 days ago
13 weeks 4 days ago
17 weeks 2 days ago
49 weeks 5 days ago
1 year 20 weeks ago
1 year 28 weeks ago
1 year 39 weeks ago
1 year 46 weeks ago
2 years 6 days ago