За последние 24 часа нас посетили 22806 программистов и 1242 робота. Сейчас ищут 692 программиста ...

Правильно ли реализована функция для автозаполненеия тэга h1?

Тема в разделе "PHP для новичков", создана пользователем sofiyavv96, 1 июн 2020.

  1. sofiyavv96

    sofiyavv96 Новичок

    С нами с:
    12 апр 2020
    Сообщения:
    16
    Симпатии:
    0
    всем привет. Правильно ли я реализовала функцию, которая бы на созданных страницах отображала название раздела в теге <h1> или возможно реализовать данную задачу другим более корректным способом?

    PHP:
    1. $menu = [
    2.  
    3. ['title' => "О нас", 'path' => "/route/about/", 'sort' => 2],
    4. ['title' => "Главная", 'path' => "/", 'sort' => 1],
    5. ['title' => "Новости о нашем проекте", 'path' => "/route/news/", 'sort' => 4],
    6. ['title' => "Каталог выполненных проектов", 'path' => "/route/catalog/", 'sort' => 5],
    7. ['title' => "Контакты", 'path' => "/route/contacts/", 'sort' => 3]
    8. ];
    9.  
    10. $sort = array_column($menu, 'sort');
    11. array_multisort($sort, SORT_NUMERIC, SORT_ASC, $menu);
    12. $menu = "<ul>";
    13. foreach ($menu as $menu_item) {
    14.     $menu .=
    15.     "<li>
    16.        <a href=\"{$menu_item['path']}\">
    17.            {$menu_item['title']}
    18.        </a>
    19.    </li>";
    20. }
    21. $menu .= "</ul>";
    22. echo $menu;
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Весь нюанс вот в этих палочках / . Если вязаться жестко к path, и пользователь например перейдет по такой ссылке /route/news. Что будет?
    Лучше все таки <h1></h1> тащить не из массива предназначенного для href. А из того что вы будете показывать на этой странице. То есть из БД.
    Но это мое мнение ,все делают по разному. Можно и из этого массива со всякими проверками, но это наверно гемор.
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    @Artur_hopf, да, все верно ты говоришь. Меню в общем нужно отделять от сущностей, на которые ссылаются пункты меню. Построение меню в частном случае еще можно завязать на сущности, но не наоборот.

    Про h1 я один нифига не понял? В коде же ничего такого нет.

    P.S. Сортировка меню выглядит забавно. Почему бы не использовать исходный порядок (без всяких доп. полей вроде 'sort')?
    --- Добавлено ---
    P.P.S. Вот коллега особо не парился:
    https://gency.ru/comment/114 – захардкодил меню в конфиге и готово :D
    --- Добавлено ---
    Сами сущности в БД (там sql-файл прилагается к статье).
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Использовать этот массив для роутинга, извлечения отдельных тайтлов однозначно гемор. Нужен обход в цикле. Меню по моей ссылке в этом принципиально отличается от меню ТСа.
     
  5. sofiyavv96

    sofiyavv96 Новичок

    С нами с:
    12 апр 2020
    Сообщения:
    16
    Симпатии:
    0
    В этом и суть задачки, чтобы сделать это именно геморным способом
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Смотрите, заработаете гемор один раз, будете страдать им хронически :D
     
  7. sofiyavv96

    sofiyavv96 Новичок

    С нами с:
    12 апр 2020
    Сообщения:
    16
    Симпатии:
    0
    наверно я не умею объяснять, но в общем заголовок автоматические download.png должен формироваться тут
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    В вашем коде этого вообще нет.

    1. Роутинг и выборка основного контента из БД.
    2. Подстановка выбранных данных в шаблоны и вывод.

    Если нужна готовая основа, могу записать в тестеры этого движка за символическую плату и при условии, что вы сможете показать, что вам не нужно разжевывать элементарные вещи (пока я этого не увидел). Там все просто:
    1)
    PHP:
    1. <h1><?= $page['name'] ?></h1>
    2. <?= $page['content'] ?>
    2)
    PHP:
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <title><?= $page['name'] ?> | Site</title>
    5. </head>
    6. <body>
    7. <?= $page['content'] ?>
    8.  
    9. </body>
    10. </html>
    Источник (1 выводится на месте контента в 2, как показано там же в демке). Сами данные в БД (MySQL), о чем я уже писал в первом посте.
     
    #8 miketomlin, 3 июн 2020
    Последнее редактирование: 3 июн 2020
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    P.S. Если нужна именно адресная ветка /route/, без проблем создается (см. последний коммент там же). Трэйлинг слеши тоже можно использовать без особых проблем.

    P.P.S. Вот недавно показывал, как создать коллекцию users и шаблон для нее:
    https://php.ru/forum/posts/626249/ (коллекцию route создаете точно так же).
     
    #9 miketomlin, 3 июн 2020
    Последнее редактирование: 3 июн 2020