Ist Drupal Feedgeil?

Logo DrupalDrupal 5.x

Die Implementierung der Feed-Funktionalität in Drupal ist so absolut, daß bereits nach einer Neuinstallation des Systemes, einer neuen Drupalwebsite, auf der allgemeinen "Herzlichen Glückwunsch, ..." - Seite die Feedfunktion zur Verfügung steht. Aber in dieser Situation gibt es noch gar keine Inhalte auf der Website die einen Feed rechtfertigen.
Die Absolutheit der Implementierung der Feed-Funktionalität setzt sich dahingehend fort, daß es keine Möglichkeit gibt, die Feedfunktion abzustellen. Weder in der Administration noch durch irgend ein Template.
Diese Situation habe ich bei Drupal 5.x untersucht um der Frage nachzugehen: Wie deaktiviere ich die Feed-Funktionalität komplett?
Folgende Lösung habe ich gefunden.

Leider besteht meine Lösung in einem Teil in einer Änderung des Code von 2 Core-Modulen.

Um die Feeds komplett zu deaktivieren sind 2 Funktionalitäten zu verändern.

Feedicon im Textbereich

Dieses Icon kann leicht deaktiviert werden. In der Datei "page.tpl.php" sollte es einen Eintrag in dieser Form geben:

<?php print $feed_icons ?>

Hier reicht eine einfache Änderung der Datei an dieser Stelle aus, um das Feedicon im Textbereich nicht mehr anzuzeigen.

Feedfunktion in der Browser-URL

Komplizierter wird es beim Feedicon in der URL des Browser. Hier muss der HTML-Code im Header der HTML-Seite beseitigt werden, welcher im Browser die Feedfunktion ermöglicht. Beispiel für solchen Code:

<link rel="alternate" type="application/rss+xml" title="" href="/blog/feed" />

Verantwortlich für die Erzeugung dieses Code ist die Funktion drupal_add_feed() in der Datei "common.inc".

Diese Funktion wird in 2 Modulen aufgerufen.

  1. Im Modul node in der Datei "node.module".
    In der Funktion node_page_default().
  2. Im Modul taxonomy in der Datei "taxonomy.module".
    In der Funktion taxonomy_term_page().

Der Aufruf im Modul node erzeugt die Feedfunktion auf der Startseite. Der Aufruf im Modul taxonomy erzeugt die Feedfunktion auf allen anderen Seiten.

Hierbei betrachte ich jetzt nicht die durch einen View mit dem Argument "RSS Feed Selector" generierten Seiten!

Leider gibt es in den beiden Dateien der Module node und taxonomy nicht die Möglichkeit, mit einem Template die Feed-Funktion zu beeinflussen. So bleibt momentan nur die Änderung des Code.

Feedfunktion im Browser deaktivieren

Folgende 2 Änderungen deaktivieren die Feed-Funktion in der Browser-URL:

Datei "node.module", in der Funktion node_page_default()

if (db_num_rows($result)) {
$feed_url = url('rss.xml', NULL, NULL, TRUE);
//drupal_add_feed($feed_url, variable_get('site_name', 'Drupal') .' '. t('RSS'));

Datei "taxonomy.module", in der Funktion taxonomy_term_page()

$breadcrumbs = array_reverse($breadcrumbs);
menu_set_location($breadcrumbs);

$output = taxonomy_render_nodes(taxonomy_select_nodes($tids, $terms['operator'], $depth, TRUE));
//drupal_add_feed(url('taxonomy/term/'. $str_tids .'/'. $depth .'/feed'), 'RSS - '. $title);

Fazit

Nun ist aber ein Hack an Code von Modulen nicht die saubere Lösung. Besser wäre es, wenn in beiden Modulen an den Stellen, an denen die Funktion drupal_add_feed() aufgerufen wird, in eine theme_function zu verzweigen.
Oder aber die Feed-Funktionalität wird derart administrierbar, daß man sie wie beispielsweise das Favicon aktivieren/deaktivieren kann.

Und meine Meinung: Ja, Drupal ist Feedgeil.

Powered by Drupal. Created with ZenWalk.