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

  • Probleme mit der darstellun der ogg:image Tags.
  • [gelöst]Abhängigkeiten zweier oder mehrerer Inhaltstypen
  • Lokale Entwicklungsumgebung auf Windows
  • Drupalcenter tot?
  • Drupal-Forks und ihre Schwächen/Stärken
  • Was kann ich gegen ständige Blutergüsse tun?
  • Mir gefällt die Drupal Symfony und deren Composer
  • Mir ist da was aufgefallen ;)
  • Matomo Installation
  • Verständnisfrage private_files in Drupal
  • [gelöst] Drupal 7 Forum Beitrag mit Bilder einstellen
  • erfahrung mit dem Modul script manager
Weiter

Neue Kommentare

  • Kontextfilter und Relationen sind der richtige Ansatz
    vor 16 Stunden 21 Minuten
  • Zusatzfragen
    vor 1 Tag 17 Stunden
  • DDEV verwaltet Container, sowohl Docker als auch andere
    vor 1 Tag 17 Stunden
  • Entwicklungsumgebung ist nicht nur Server
    vor 1 Tag 18 Stunden
  • Danke
    vor 3 Tagen 57 Minuten
  • [gelöst] Danke!
    vor 3 Tagen 1 Stunde
  • Ja natürlich tun wir dass.
    vor 3 Tagen 19 Stunden
  • Drupal.de verweist aufs Drupal Center
    vor 3 Tagen 20 Stunden
  • Und falls du auf grüne
    vor 3 Tagen 21 Stunden
  • Danke euch beiden, das bringt
    vor 3 Tagen 21 Stunden

Statistik

Beiträge im Forum: 250046
Registrierte User: 20363

Neue User:

  • LilliNELP
  • Wavermype
  • tom082

» Alle User anzeigen

User nach Punkten sortiert:
wla9456
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3855
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 2 User und 11 Gäste online.

Benutzer online

  • dinmikkith
  • dinmikkith

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