Drupal7: Eigene Startseite aus SQL-Anweisungen generieren

29.08.2013 - Lesezeit: 3 Minuten

Für die Startseite verwende ich ein PHP-Skript, welches ich jetzt auch für Drupal 7 angepasst habe.

So sieht das Ergebnis aus

Das Skript soll folgendes bewirken:

  • Anzeige eines Anfangstextes (ohne Bild, da das Bild ja schon in der Slideshow ist) Dieser Text steht im Node 1
  • Falls Artikel von heute da sind, diese Anzeigen
  • Falls zukünftige Artikel (28-Tage voraus) diese Anzeigen
  • Die Vergangenheit anzeigen.

Vorgehensweise:

  • neuen Inhaltstyp anlegen für Node 1 Struktur - Inhaltstypen - Neu : wnfStartseite

  • bei diesem Inhaltstyp Anzeigeeinstellungen "Autor- und Datumsinformationen anzeigen" ausschalten Der Benutzername des Autors und das Veröffentlichungsdatum sollen nicht angezeigt werden.

  • Über PHPAdmin in der Tabelle node das Feld typ für node 1 auf wnfstartseite setzen

  • Module - PHP-Filter aktivieren

  • Neue Seite anlegen: Den Inhalt der beiliegenden Datei in den Body kopieren

  • Text-Format "PHP-Code" einstellen

  • Speichern

  • Konfiguration - System - Websiteinformationen Standardstartseite auf die eben angelegte Seite stellen



<?php

function anzeige_ohne_caption($sql){ 
  $result = db_query_range($sql,0,10);
  foreach ($result as $record) {
    $node=node_load($record->nid);
    $node->title = ''; 
    $anzeige = node_view($node, 'full');
    $rendered = render($anzeige); 
    print $rendered;
  }
}

function anzeige($sql,$caption=''){ 
  $result = db_query_range($sql,0,10);
  if (($result->rowCount()>0) and ($caption<>'')) {
    echo '<hr />';
    echo '<h2>'.$caption.'</h2>';
    }
  foreach ($result as $record) {
    //$rendered_teaser = render(node_view(node_load($record->nid), 'teaser')); 
    $rendered_teaser = render(node_view(node_load($record->nid), 'full')); 
    print $rendered_teaser;
  }
}

// Das Intro anzeigen
$sql = "SELECT * FROM {node} WHERE nid=1 ORDER BY created ASC";
anzeige_ohne_caption($sql);

// Die heutigen Termine anzeigen
$sql = "SELECT * FROM {node} WHERE type = 'article' AND status = 1 AND nid<>1  AND promote=1 AND (DATE(FROM_UNIXTIME(created))=CURDATE() OR sticky=1) ORDER BY created ASC";
anzeige($sql,'Heute in Niederfrohna');

//Zukunft anzeigen 28 Tage
$sql = "SELECT * FROM {node} WHERE type = 'article' AND status = 1 AND nid<>1  AND promote=1 AND DATE(FROM_UNIXTIME(created))>CURDATE() AND  FROM_UNIXTIME(created)<DATE_ADD(CURDATE(),INTERVAL 28 DAY)
ORDER BY created ASC";
anzeige($sql,'Die nächsten Tage in Niederfrohna');

//Vergangenheit anzeigen
$sql = "SELECT * FROM {node} WHERE type = 'article' AND status = 1 AND nid<>1  AND promote=1  AND DATE(FROM_UNIXTIME(created))<CURDATE() AND sticky<>1 ORDER BY created DESC";
anzeige($sql,'Das war los in Niederfrohna');

?>

```-
Tags: Drupal7