Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Tipps & Tricks ›

Sitemap, Index bzw. Inhaltverzeichnis für bestimmten Node

Eingetragen von chrisX (22)
am 16.08.2006 - 12:28 Uhr in
  • Tipps & Tricks

Hallo zusammen,

leider gibts ja derzeit kein Modul welche, bei bestimmten Menuepunkt der ersten Hirachie Stufe eine Art Sitemap bzw. Inhaltsverzeichnis über die Untermenüpunkt anzeigt, deshalb entstand die untenstehend eigene Variante.

Grundlage hierfür war das Modul "Site Map" von Khalid Baheyeldin welches eine Sitemap für die ganze Page erzeugt. Bei unsere Lösung wurden die Funktion teilweise bearbeitet und anschließend umbenannt damit Sie nicht mit dem "Site Map" Module ins Gehege kommen und auch ohne diese funktionieren.

Damit über dem sogenannten Node Sitemap noch Text bzw. Inhalt von User eingefügt werden kann wird das ganze als Block realisiert welcher im Bereich Content nur bei ausgewählten Seiten angezeigt wird. Der Block hat das Input Format PHP Code und folgender Code wird dort eingetragen:

<?php
$strSql
= "SELECT * FROM menu WHERE path = '". $_GET['q'] ."'";
$aryResult = db_query($strSql);
while (
$aryRow = db_fetch_object($aryResult)) {
   
$intMid = $aryRow -> mid;
}

function
fMenuTree($pid = 1, $menu = NULL) {
      if (isset(
$menu['visible'][$pid]) && $menu['visible'][$pid]['children']) {
            foreach (
$menu['visible'][$pid]['children'] as $mid) {
                 
$children = isset($menu['visible'][$mid]['children']) ? $menu['visible'][$mid]['children'] : NULL;
                 
$menu_tree .= theme('menu_item', $mid, fMenuTree($mid, $menu), count($children) == 0);
            }
      }
      if (
$menu_tree) {
           
$output = '<ul class="tree">'. $menu_tree .'</ul>';
     }
      return
$output;
}

function
fNodeSiteMapMenu($intMid) {
     
$menu = menu_get_menu();
       
$title = $menu['visible'][$intMid]['title'];
       
$menu_display = fMenuTree($intMid, $menu);
       
$output = theme('box', $title, $menu_display);
      return
$output;
}

echo
"<div class=\"block_nodesitemap\">".fNodeSiteMapMenu($intMid)."</div>";

?>

Jetzt braucht der Block nur aktiviert werden und die jeweiligen Hauptnodes, wo dieses Node Sitemap angezeigt werden soll, müssen bei "Page specific visibility settings" eingetragen werden, weil "Show block on specific pages" ja auf "Show on only the listed pages." steht.

Hinweis: Das ganze funktioniert nur mit Content wofür auch ein Menüpunkt im Menü angelgt wurde und z.B.: nicht für Books oder Taxonomy Content, welcher nicht im Menü auftaucht.

‹ Statistik-Modul erweitert Wie kann ich einen Block nur nicht angemeldeten Benutzern zugänglich machen? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Der Code ist anfällig für

Eingetragen von yaph@drupal.org (220)
am 16.08.2006 - 14:53 Uhr

Der Code ist anfällig für SQL Injection-Angriffe.

Die Zeilen:

$strSql = "SELECT * FROM menu WHERE path = '". $_GET['q'] ."'";
$aryResult = db_query($strSql);

sollte lieber durch folgende ersetzt werden:
$aryResult = db_query("SELECT * FROM menu WHERE path = '%s'", $_GET['q']);

Siehe dazu auch: http://drupal.org/node/62304
--
Ramiro.org - Software-Entwickler und IT-Consultant
Torlaune.de - Die Fußball-Community

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für den Hinweis! Mir

Eingetragen von chrisX (22)
am 16.08.2006 - 16:46 Uhr

Danke für den Hinweis! Mir ist gleich noch etwas aufgefallen, wenn nämlich Tabellen mit prefix genutzt werden funtz das ganze nicht mehr. Deswegen müsten die beiden ersten Zeilen:

$strSql = "SELECT * FROM menu WHERE path = '". $_GET['q'] ."'";
$aryResult = db_query($strSql);

ersetzt werden durch die folgende:

$aryResult = db_query("SELECT * FROM {menu} WHERE path = '%s' ", $_GET['q']);

So sollte es dann auch mit Prefix funktionieren.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
Weiter

Neue Kommentare

  • Danke ich werde mir die
    vor 5 Wochen 2 Tagen
  • Vielen Dank für Ihren
    vor 5 Wochen 4 Tagen
  • Composer ist sehr ratsam
    vor 5 Wochen 6 Tagen
  • Vielen Dank für den
    vor 6 Wochen 2 Tagen
  • Die alten CMS Vergleiche von contentmanager.de
    vor 6 Wochen 2 Tagen
  • Gut gemacht
    vor 6 Wochen 2 Tagen
  • Layout Builder etc. z.B. für Landing Pages
    vor 6 Wochen 2 Tagen
  • Links
    vor 6 Wochen 5 Tagen
  • Moin,wow, sehr gutes
    vor 6 Wochen 6 Tagen
  • Dass ist eine spannende
    vor 6 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250316
Registrierte User: 20567

Neue User:

  • Philiphelve
  • Robertspaft
  • drupalthemes

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 13 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