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

  • 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 10 Stunden
  • Hey danke
    vor 2 Tagen 5 Stunden
  • Update: jetzt gibt's ein
    vor 2 Tagen 23 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 8 Stunden
  • Da scheint die Terminologie
    vor 1 Woche 11 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 15 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