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

Ramiro

  • 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

  • Grundsatzfrage
  • Drupal 9 Hosting
  • Seite auf Xamp wird nicht geladen
  • Anregung für die Installation von Drupal
  • [simplenews_stats] [D10] Keine Öffnungen/Ansichten der Newsletter werden gezählt
  • Theme Olivero - Rand entfernen?
  • Olivero veraendern
  • Upgrade Drupal 9 auf 10
  • Matomo(?) in Seite, aber Deinstalliert!
  • Upgrade Drupal 7 auf Drupal 9 / Inhalt erstellen zeigt nur Fehler an
  • Fehlermeldung nach Update auf Drupal 10
  • Wie Button erstellen?
Weiter

Neue Kommentare

  • Hallo! Welchen Host nutzt du
    vor 15 Stunden 23 Minuten
  • Also bei mir funktioniert es
    vor 16 Stunden 24 Minuten
  • Hat mir auch sehr geholfen,
    vor 16 Stunden 26 Minuten
  • Releases Stand 20-9-2023
    vor 2 Tagen 35 Minuten
  • Hi, Das ist leider nicht das
    vor 2 Tagen 19 Stunden
  • Wie plötzlich passierte
    vor 3 Tagen 23 Stunden
  • Sowas geht immer mit
    vor 5 Tagen 22 Stunden
  • vielen Dank fuer Deine Tipps.
    vor 6 Tagen 4 Stunden
  • Routinefrage: Kann es ein
    vor 6 Tagen 23 Stunden
  • @onkel Bob,Erst mal
    vor 1 Woche 6 Tagen

Statistik

Beiträge im Forum: 248809
Registrierte User: 19835

Neue User:

  • inklusion
  • sofortnovo
  • MacLeod1639

» Alle User anzeigen

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