Drupal 5.x, 4.7.x
Wie binde ich einen Delicious Tagcloud als Blockmenü und Seite ein? Und zwar ohne ein zusätzliches Modul für den Tagcloud zu verwenden. Das möchte ich in diesem Beitrag erklären.
Um den Tagcloud als Inhalt zu erstellen wird eine einzelne Seite benötigt. Diese Seite enthält den erforderlichen Code. Damit man diese Seite später, wenn es viel Inhalt gibt, auch wieder findet ist es angebracht für diese Seite eine extra Kategorie zu erstellen.
Will man es ohne extra Kategorie machen sollte man einen separaten Inhaltstyp verwenden.
Extra Kategorie oder separater Inhaltstyp sind erforderlich, um im weiteren Verlauf der Einbindung des Tagcloud die einzelne Seite gezielt ansprechen zu können.
Vorraussetzung für die Kombination von Block und Seite ist die Verwendung eines Modules für einen separaten Teaser.
Denn der Code für den Tagcloud muss in verschiedener Form in die Inhaltsseite eingetragen werden. Zum Einen in verkürzter Form für die Anzeige im Block und zum Anderen in vollständiger Form für die Anzeige der Seite.
Die Seite enthält den vollständigen Tagcloud und wird durch den Link "mehr" im Block erreicht. Der Block enthält nur eine eingeschränkte Anzahl an Tags.
Hierbei wird die API von Delicious [1] verwendet.
Der separate Teaser enthält als Beispiel folgenden Code:
<script type="text/javascript" src="http://del.icio.us/feeds/js/tags/quiptime?count=10;size=12-20;color=777777-666666"></script>
Der Body (Haupttext) enth'lt als Beispiel folgenden Code:
<script type="text/javascript" src="http://del.icio.us/feeds/js/tags/quiptime?totals;size=12-24;color=666666-ff6600;title=Meine%20del.icio.us%20Tags"></script>
Wie die beiden Codebeispiele zeigen wird hier jeweils die Anzahl wie auch das Erscheinungsbild der Tags definiert.
Hierbei wird das Modul Views verwendet. Es wird ein kombinierter Block/Page View erstellt.
"View Type:" ist "Full Nodes"
"View Type:" ist "Teaser List", denn hiermit wird der separate Teaser angezeigt.
"Nodes per Block:" auf 1 setzen.
Den "[More] Link" aktivieren.
Als Filter wählt man entweder
Nun in der Block-Administration den Block freischalten und ihm eventuell noch einen passenden Namen geben.
Vermutlich muss der Link "weiter" am Block noch eine geeignetere Übersetzung wie z. Bsp. "mehr" erhalten
Als Beispiel für den beschriebenen View hier der Code zum Importieren:
$view = new stdClass();
$view->name = 'Delicious';
$view->description = '';
$view->access = array ();
$view->view_args_php = '';
$view->page = TRUE;
$view->page_title = '';
$view->page_header = '';
$view->page_header_format = '1';
$view->page_footer = '';
$view->page_footer_format = '1';
$view->page_empty = '';
$view->page_empty_format = '1';
$view->page_type = 'node';
$view->url = 'delicious';
$view->use_pager = FALSE;
$view->nodes_per_page = '1';
$view->block = TRUE;
$view->block_title = 'Delicious Tags';
$view->block_header = '';
$view->block_header_format = '1';
$view->block_footer = '';
$view->block_footer_format = '1';
$view->block_empty = '';
$view->block_empty_format = '1';
$view->block_type = 'teaser';
$view->nodes_per_block = '1';
$view->block_more = TRUE;
$view->block_use_page_header = FALSE;
$view->block_use_page_footer = FALSE;
$view->block_use_page_empty = FALSE;
$view->sort = array ();
$view->argument = array ();
$view->field = array ();
$view->filter = array (
array (
'tablename' => 'node',
'field' => 'status',
'operator' => '=',
'options' => '',
'value' => '1',
),
array (
'tablename' => 'term_data',
'field' => 'vid',
'operator' => 'OR',
'options' => '',
'value' => array (
0 => '2',
),
),
);
$view->exposed_filter = array ();
$view->requires = array(node, term_data);
$views[$view->name] = $view;
Diesen Code in der View-Verwaltung mit der Importfunktion übernehmen und auf die eigenen Gegebenheiten anpassen.
Links:
[1] http://del.icio.us/help/tagrolls
[2] http://blog.quiptime.com/node/24
[3] http://del.icio.us/help/tagrolls