За последние 24 часа нас посетили 18946 программистов и 1633 робота. Сейчас ищут 888 программистов ...

Меню с выводом материала на странице

Тема в разделе "PHP для новичков", создана пользователем TyronNIKO, 10 май 2017.

  1. TyronNIKO

    TyronNIKO Новичок

    С нами с:
    6 апр 2017
    Сообщения:
    23
    Симпатии:
    4
    Доброго времени суток! Столкнулся с задачей, решить сам не могу... уже пару часов ломаю голову.
    Есть папка с материалами для сайта www/mysite.com/content в ней 5 файлов.
    Нужно сделать пункты меню для выводы этих материалов на сайте.
    Файлы могут добавляться по мере необходимости, потому 5 - это просто для теста.
    Набрал кучу примеров, а объединить их в итоге не могу...

    Основная страница index.php выглядит так:
    Код (Text):
    1. <?php include 'menu.php';
    2. echo $content;?>
    Файл menu.php следуюее содержание:
    Код (Text):
    1. <?php
    2. $itemId = isset($_GET['itemId']) ? $_GET['itemId'] : 0; // выбранный пункт меню
    3. $menuItems = array( // все пункты меню
    4.     1 => 'главная',
    5.     2 => 'вторая',
    6.     3 => 'третяя',
    7.     4 => 'четвертая',
    8.     5 => 'пятая',
    9. );
    10. $files = scandir('content');
    11.  
    12. ?>
    13. <nav class="main-menu">
    14.         <ul class="menu-links">
    15.        
    16.         <?php
    17.         echo '<ul>';
    18.             foreach($menuItems as $menuItemId => $menuItem) {
    19.                 echo '<li><a href="?itemId=', $menuItemId, '" ',($menuItemId == $itemId ? 'class="active"':''), // если активный совпадает с текущим, то выделить его с помощью класса CSS
    20.                      '>', $menuItem, '</a></li>';
    21.             }
    22.             echo '</ul>';
    23.            
    24.         ?>
    25.         </ul>
    26.       </nav>
    $files = scandir('content'); - выводит содержимое папки в виде массива.

    Как мне заставить пункты меню выводить содержимое папки?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    Путем рекурсией - когда во функции по условию вызывает сама себя, пока не дойдет до конечной структуры, либо другое действие. Можно в гугле задать - php рекурсия функция директория
    --- Добавлено ---
    а почему у тебя запятые место точек прописаны возле переменных ?
     
  3. TyronNIKO

    TyronNIKO Новичок

    С нами с:
    6 апр 2017
    Сообщения:
    23
    Симпатии:
    4
    Вроде не влияет на результат ) но так было в примере... решил ничего не трогать...
     
  4. TyronNIKO

    TyronNIKO Новичок

    С нами с:
    6 апр 2017
    Сообщения:
    23
    Симпатии:
    4
    Код (Text):
    1. <?php
    2.  
    3. $id = $_GET['id'];
    4. $content = file_get_contents("content/$id");
    5. ?>
    6.  
    7. <nav class="main-menu">
    8.         <ul class="menu-links">
    9.      
    10.         <?php
    11.                 $files = scandir('content');
    12.              
    13.                 foreach($files as $file) {
    14.                     if(is_file('content/' . $file)){
    15.                         echo "<li><a href=\"index.php?id=$file\">$file</a></li>";
    16.                     }
    17.                 }
    18.         ?>
    19.         </ul>
    20.       </nav>
    Получилось побороть таким образом, но теперь $file получает название файла и выводит его, а мне нужно подменить его на нужное. Как это можно сделать? Еще один массив в массиве?
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    А откуда php знать какое, оно нужное название то?
    Как вариант, массив подмены
    PHP:
    1. $repl = array("file1.txt"=>"Мое понятное имя 1","file2.txt"=>"Мое понятное имя 2");
    и потом
    PHP:
    1. echo "<li><a href=\"index.php?id=$file\">{$repl['$file']}</a></li>";
     
  6. TyronNIKO

    TyronNIKO Новичок

    С нами с:
    6 апр 2017
    Сообщения:
    23
    Симпатии:
    4
    Немного переделал код... уже бесит )
    Короче... для меню сделал отдельный массив, меню теперь идеальное так как я хотел, но! на странице index.php, где находится
    Код (Text):
    1. <?php include 'menu.php';
    2. echo $content;?>
    -тупо отображается содержимое $content

    Как его скрыть, что бы отображалось только после запроса через $_GET ?
     
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    PHP:
    1. if (isset($_GET['name'])) {
    2.   echo $content;
    3. }
    как то так, или мысль вашу не понял
     
    TyronNIKO нравится это.
  8. TyronNIKO

    TyronNIKO Новичок

    С нами с:
    6 апр 2017
    Сообщения:
    23
    Симпатии:
    4
    Да, именно оно! Только вместо name - мой запрос
     
  9. TyronNIKO

    TyronNIKO Новичок

    С нами с:
    6 апр 2017
    Сообщения:
    23
    Симпатии:
    4
    Еще вопрос:
    Как то можно сделать по умолчанию страницу? Потому что в моем случае страницы отображаются только после нажатие на меню, а при переходе на сайт просто пустая страница с меню
     
  10. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    как-то можно
    PHP:
    1. if (isset($_GET['name'])) {
    2.   echo $content;
    3. } else {
    4. echo ..... страница по умолчанию
    5. }
     
    TyronNIKO нравится это.
  11. TyronNIKO

    TyronNIKO Новичок

    С нами с:
    6 апр 2017
    Сообщения:
    23
    Симпатии:
    4
    да, так и сделал... вообще туплю по полной )))
     
    denis01 нравится это.