Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › FAQ ›

Mit Views einen generischen Node View erstellen

Eingetragen von quiptime (4972) am 16.07.2008 - 10:56 Uhr in
  • Module

Drupal 6, Views 2

Thema

Dieser FAQ beschreibt eine Möglichkeit, mittels eines View Nodes anzuzeigen.

Ich nenne einen solchen View zur Anzeige von Nodes "Generischen Node View" - auch GNV.

Normalerweise wird eine Node von Drupal durch den Aufruf der URL www.example.com/node/x angezeigt. Wobei x die Node ID ist. Die Anzeige von Nodes nach dem genannten URL-Schema ist eine Grundfunktion von Drupal.

Der Generische Node View, GNV

Der GNV macht zunächst nichts weiter als Drupals Grundfunktion der Anzeige von Nodes zu übernehmen. Er ist also als View zur Anzeige von Seiten mit der
URL node/%
konfiguriert. Wobei % als Argument eine Node ID ist. Das Argument wird beim Ansprechen des GNV mit der jeweils verwendeten URL übergeben und die entsprechende Node wird angezeigt.

Das ist Allgemein zum GNV schon Alles.

Der (exportierte) GNV ist am FAQ Ende als Text beigefügt, um ihn Importieren zu können.

Sinn des GNV

Nun entsteht die Frage warum man Drupals Grundfunktion der Nodeanzeige mit einem View ersetzen soll.

Die Antwort ergibt sich aus der weiteren Konfiguration des GNV.

Wenn man den GNV so konfiguriert das er immer nur eine einzelne Node anzeigen kann schöpft man die Möglichkeiten von Views nicht aus.

Mehrere beliebige Nodes gleichzeitig anzeigen - ohne Theming

Eine den GNV erweiternde Möglichkeit ist,
die Anzeige von mehreren Nodes zu erlauben. Dies wird gekoppelt mit der Erlaubnis, mehrere Argumente an den GNV übergeben zu können.

Damit können URL's nach dem Schema www.example.com/node/1 oder auch www.example.com/node/1+2+3+117+312 aufgerufen werden. Ergebnis:

Es werden auf einfache Weise 2 oder auch mehrere Nodes gleichzeitig zur Anzeige gebracht - ohne jedwedes Theming.

Der Zusammenhang mit der Standard Startseite

Normalerweise ist als Standard Startseite node festgelegt.

An dieser Stelle ergibt sich ein Zusammenhang mit dem GNV. Was passiert wenn man als URL nach dem Schema www.example.com/node/1

  1. keine Node ID angibt,
  2. eine nicht existente Node ID angibt?

zu 1.
In diesem Falle wird vom System nicht der GNV verwendet sondern es werden entsprechend der als Standard definierten URL node alle Nodes mit der Startseitenoption angezeigt.

zu 2.
Es wird keine Node gefunden. Um diesen Fehler abzufangen ist der GNV entsprechend konfiguriert - "Page not found".

Und wie ist es bei URL's nach dem Schema www.example.com/node/1+2+3 und wenn

  • eine der verwendeten ID's eine nicht existente Node ID angibt?

Der GNV zeigt nur die Node/Nodes's mit einer existieren ID an. Trotz voran beschriebenem Abfangen des Fehlers bei Aufruf nicht existenter Nodes wird keine entsprechende Information angezeigt. D. h., es werden nur die Nodes angezeigt die existieren.

Eine andere Standard Startseite

Um die im GNV definierte Option, das bei fehlenden Argument/en keine Seite angezeigt wird, kann man als Standard Startseite in Drupal home festlegen.
Dies setzt allerdings voraus das es einen View gibt der auf die URL home hört und alle Nodes anzeigt welche die Veröffentlichungsoption "Auf der Startseite anzeigen" haben.

Der GNV zum Importieren

Den folgenden Code mit der Importfunktion von Views aufnehmen:

$view = new view;
$view->name = 'Nodes';
$view->description = '';
$view->tag = '';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Node', 'default');
$handler->override_option('arguments', array(
  'nid' => array(
    'default_action' => 'not found',
    'style_plugin' => 'default_summary',
    'style_options' => array(),
    'wildcard' => 'all',
    'wildcard_substitution' => 'Alle',
    'title' => '',
    'default_argument_type' => 'fixed',
    'default_argument' => '',
    'validate_type' => 'none',
    'validate_fail' => 'not found',
    'break_phrase' => 1,
    'not' => 0,
    'id' => 'nid',
    'table' => 'node',
    'field' => 'nid',
    'relationship' => 'none',
    'default_argument_user' => 0,
    'default_argument_fixed' => '',
    'default_argument_php' => '',
    'validate_argument_node_type' => array(
      'ajaxstory' => 0,
      'ccktax' => 0,
      'imagestory' => 0,
      'page' => 0,
      'profile' => 0,
      'story' => 0,
      'testnode' => 0,
    ),
    'validate_argument_node_access' => 1,
    'validate_argument_nid_type' => 'nids',
    'validate_argument_vocabulary' => array(
      '1' => 0,
    ),
    'validate_argument_type' => 'tid',
    'validate_argument_php' => 'if ( is_numeric($argument) ) {
      return TRUE;
    }',
    'default_options_div_prefix' => '',
  ),
));
$handler->override_option('filters', array(
  'status' => array(
    'operator' => '=',
    'value' => 1,
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'status',
    'table' => 'node',
    'field' => 'status',
    'relationship' => 'none',
  ),
));
$handler->override_option('access', array(
  'type' => 'none',
  'role' => array(),
  'perm' => '',
));
$handler->override_option('empty', '<?php drupal_set_title(\'Page not found\'); ?>
<p>The requested page could not be found.</p>');
$handler->override_option('empty_format', '3');
$handler->override_option('use_ajax', TRUE);
$handler->override_option('row_plugin', 'node');
$handler->override_option('row_options', array(
  'teaser' => 0,
  'links' => 1,
));
$handler = $view->new_display('page', 'Seite', 'page_1');
$handler->override_option('row_plugin', 'node');
$handler->override_option('row_options', array(
  'teaser' => 0,
  'links' => 1,
));
$handler->override_option('path', 'node/%');
$handler->override_option('menu', array(
  'type' => 'none',
  'title' => '',
  'weight' => 0,
));
$handler->override_option('tab_options', array(
  'type' => 'none',
  'title' => '',
  'weight' => 0,
));

Verbesserungen oder Erweiterungen des GNV sind willkommen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Tag 12 Stunden
  • Hey danke
    vor 2 Tagen 7 Stunden
  • Update: jetzt gibt's ein
    vor 3 Tagen 1 Stunde
  • Hallo, im Prinzip habe ich
    vor 1 Woche 11 Stunden
  • Da scheint die Terminologie
    vor 1 Woche 14 Stunden
  • Kannst doch auch alles direkt
    vor 1 Woche 4 Tagen
  • In der entsprechenden View
    vor 1 Woche 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 4 Tagen
  • gelöst
    vor 4 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 16 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association