Zur Navigation

Titel in dynamisches Menü einfügen

1 uwe

Hallo,
für ein dynamisches Menü will ich dieses Script verwenden:
<?php
$pages = array(
    'index.php' => 'Home',
    'navigation.php' => 'Navigation',
    'contact.php' => 'Contact',
    'faq.php' => 'FAQ',
    'tutorials.php' => 'Tutorials',
) ;

$currentPage = basename($_SERVER['REQUEST_URI']) ;

?>
<div id="menu">
    <ul id="menuList">
        <?php foreach ($pages as $filename => $pageTitle) { 
            if ($filename == $currentPage) { ?>
        <li class="current"><?php echo $pageTitle ; ?></li>
            <?php } else { ?>
        <li><a href="<?php echo $filename ; ?>"><?php echo $pageTitle ; ?></a></li>
            <?php
            } //if 
         } //foreach 
            ?>
    </ul>
</div>


</div>
Jetzt will ich die als zusätzliche Info noch den Titel zu dem Link
hinzufügen.

angefangen habe ich mit:
<?php
$pages = array(
    'index.php' => 'Home', 'titel' => 'Startseite',
    'navigation.php' => 'Navigation', 'titel' => 'Navigation',
    'contact.php' => 'Contact', 'titel' => 'e-mail schreiben',
    'faq.php' => 'FAQ', 'titel' => 'Startseite',
    'tutorials.php' => 'Tutorials',
) ;

$currentPage = basename($_SERVER['REQUEST_URI']) ;

?>

Wie zeige ich die Werte aus dem Array "Titel" mit in dem Menü an?
Gib es "Sicherheitsbedenken" mit diesem Script zu arbeiten?

11.02.2012 12:07

2 Jörg Kruse

Du benötigst hier ein mehrdimensionales Array

$pages = array(
    'index.php' => array('name' => 'Home', 'title' => 'Startseite'),
    'navigation.php' => array('name' => 'Navigation', 'title' => 'Navigation'),
    // etc.
);

So kannst du dann in der foreach Schleife auf Name und Title zugreifen:

foreach ($pages as $filename => $page_array) {
    $name = $page_array['name'];
    $title = $page_array['title'];
}

11.02.2012 13:22 | geändert: 11.02.2012 13:23

3 uwe

Hallo,
danke, so ganz richtig habe ich das noch nicht:
Es erscheint nur ein Zeile, und das nicht als Link.
$pages = array(
    'index.php' => array('name' => 'Home', 'title' => 'Startseite'),
    'navigation.php' => array('name' => 'Navigation', 'title' => 'Navigation'),
   );
<div id="menu">
    <ul id="menuList">
        <?php foreach ($pages as $filename => $page_array) {
    $name = $page_array['name'];
    $title = $page_array['title'];}
 {
            if ($filename == $currentPage) { ?>
        <li titel=<?php $title; ?>"> class="current"><?php echo $name ; ?></li>
            <?php } else { ?>
        <li titel=<?php $title; ?>"><a href="<?php echo $filename ; ?>"><?php echo $name; ?> </a></li>
            <?php
            } //if
         } //foreach
            ?>
    </ul>
</div>

11.02.2012 14:41

4 Jörg Kruse

Die beiden letzten gescheiften Klammern in diesem Abschnitt sind unsinnig:

        <?php foreach ($pages as $filename => $page_array) {
    $name = $page_array['name'];
    $title = $page_array['title'];}
 {

Damit beendest du die foreach Schleife vorzeitig und beginnst einen Block, der nur einmal ausgeführt wird

Außerdem heißt das HTML-Attribut "title" und nicht "titel". Weitere Fehler sind ein fehlendes Anführungszeichen und ein ">" zuviel:

<li titel=<?php $title; ?>"> class="current">

Korrekt wäre:

<li title="<?php $title; ?>" class="current">

11.02.2012 15:02

5 uwe

Hallo,
jetzt sind die gleichen Zeilen gezeigt und tile ist leer:
Gruss
Uwe

<ul id="menuList">
<li title="" class="current"><a href="impressum.php">Impressum </a></li>
<li title="" class="current"><a href="impressum.php">Impressum </a></li>
<li title="" class="current"><a href="impressum.php">Impressum </a></li>
</ul>


    
    <div id="menu">

 <ul id="menuList">

<?php

$pages = array(
    'index.php' => array('name' => 'Home', 'title' => 'Startseite als Titel'),
    'navigation.php' => array('name' => 'Navigation', 'title' => 'Navigation als Titel'),
    'impressum.php'  => array('name' => 'Impressum', 'title' => 'Angaben zum Author'),
   );


$currentPage = basename($_SERVER['REQUEST_URI']) ;



foreach ($pages as $filename => $page_array) {
    $name = $page_array['name'];
    $title = $page_array['title'];

?>


        <?php foreach ($pages as $filename => $page_array) {
    $name = $page_array['name'];
    $title = $page_array['title'];       }

     if ($filename == $currentPage) { ?>

           <li title="<?php $title; ?>" class="current"><?php echo $name ; ?></li>
            <?php } else { ?>
        <li title="<?php $title; ?>" class="current"><a href="<?php echo $filename ; ?>"><?php echo $name; ?> </a></li>
        <?php
            } //if
         } //foreach
            ?>
    </ul>
</div>


</div>

11.02.2012 16:58

6 Jörg Kruse

Warum jetzt zwei foreach Schleifen?

Diesen Abschnitt löschen:

?>


        <?php foreach ($pages as $filename => $page_array) {
    $name = $page_array['name'];
    $title = $page_array['title'];       }

... dann sollte es funktionieren

PS:
da fehlt auch noch jeweils ein "echo":

<li title="<?php echo $title; ?>" class="current">

11.02.2012 17:17 | geändert: 11.02.2012 17:19

1 Forenmitglied fand diesen Beitrag gut

7 uwe

Hallo Jörg,
vielen Dank.....

Gruss
Uwe

11.02.2012 17:35

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]