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 - 11: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 - 13: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 - 15: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

  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • wmtbpo361x
  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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
Weiter

Neue Kommentare

  • Rollen
    vor 5 Tagen 13 Stunden
  • Inzwischen sind wir bei
    vor 2 Wochen 2 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 2 Wochen 2 Tagen
  • melde mich mal wieder, da ich
    vor 10 Wochen 2 Stunden
  • Hey danke
    vor 10 Wochen 21 Stunden
  • Update: jetzt gibt's ein
    vor 10 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 10 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 11 Wochen 3 Tagen
  • In der entsprechenden View
    vor 11 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250239
Registrierte User: 20467

Neue User:

  • LorisBen
  • StevenEness
  • ocvk2810

» 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 46 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