Перенос Верхнего меню в PHP

130
14 июня 2019, 05:50

Надо вывести "Меню" <li> в код через PHP. Смысл в том, чтобы не повторять одну и тоже строку <li>, а сократить 8 строк в 1 php вывод.
(Простите за непонятное объяснение, я только начал программировать.)

   <div class="mainmenu-area" data-spy="affix" data-offset-top="100">
            <div class="container">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#primary-menu">
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a href="#"><img src="images/LOGO.png" alt="iPhone" class="navbar-brand logo">               
                    </a>
                </div>
                <nav class="collapse navbar-collapse" id="primary-menu">
                    <ul class="nav navbar-nav navbar-right">
                        <li class="active"><a href="#home-page"><?php echo $lang['home-page'] ?></a></li>
                        <li><a href="#service-page"><?php echo $lang['service-page'] ?></a></li>
                        <li><a href="#feature-page"><?php echo $lang['feature-page'] ?></a></li>
                        <li><a href="#price-page"><?php echo $lang['price-page'] ?></a></li>
                        <li><a href="#team-page"><?php echo $lang['team-page'] ?></a></li>
                        <li><a href="#faq-page"><?php echo $lang['faq-page'] ?></a></li>
                        <li><a href="#blog-page"><?php echo $lang['blog-page'] ?></a></li>
                        <li><a href="#contact-page"><?php echo $lang['contact-page'] ?></a></li>
                    </ul>
                </nav>
            </div>
            <div class="lenguige">
                <ul class="nav navbar-nav navbar-right">
                    <li class="lenguige"><a href = "?lang=sk">|SK|</a></li>
                    <li class="lenguige"><a href = "?lang=en">|ENG|</a></li>
                </ul>
            </div>
        </div>
Answer 1
$menu = [
   ['langKey' => 'home-page', 'active' => true, 'link' => '#home-page'],
   ['langKey' => 'service-page', 'link' => '#service-page']
];
foreach($menu as $mi){
  echo '<li', 
            (isset($mi['active'])?' class="active"':''),
            '><a href="', $mi['link'], '">', $lang[$mi['langKey']],
        '</a></li>';
}

Мы создаем массив в котором помещаем наш список навигации на сайте. В качестве элемента массива используем еще массив с тремя составляющими: ключ массива lang, ссылку и состояние, активное или нет.

Полный пример:

<div class="mainmenu-area" data-spy="affix" data-offset-top="100">
            <div class="container">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#primary-menu">
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a href="#"><img src="images/LOGO.png" alt="iPhone" class="navbar-brand logo">               
                    </a>
                </div>
                <nav class="collapse navbar-collapse" id="primary-menu">
                    <ul class="nav navbar-nav navbar-right">
                        <?php
                         $menu = [
                            ['langKey' => 'home-page', 'active' => true, 'link' => '#home-page'],
                            ['langKey' => 'service-page', 'link' => '#service-page']
                         ]; 
                         foreach($menu as $mi){
                           echo '<li', 
                                (isset($mi['active'])?' class="active"':''),
                                '><a href="', $mi['link'],'">',$lang[$mi['langKey']],
                                '</a></li>';
                         }
                        ?>
                    </ul>
                </nav>
            </div>
            <div class="lenguige">
                <ul class="nav navbar-nav navbar-right">
                    <li class="lenguige"><a href = "?lang=sk">|SK|</a></li>
                    <li class="lenguige"><a href = "?lang=en">|ENG|</a></li>
                </ul>
            </div>
        </div>
Answer 2

Примерно так:

<ul class="nav navbar-nav navbar-right">
    <?php foreach ($lang as $item): ?>
        <li><a href="#"><?php echo $item ?></a></li>
    <?php endforeach; ?>
</ul>

Но только вам еще нужно решить вопрос о хранении ссылок данных пунктов меню. К примеру лучше всего также хранить их (в вашем случае) в том же массиве $lang. И в цикле выводит title и href. Если переделать массив, то будет выглядеть код, примерно так:

<ul class="nav navbar-nav navbar-right">
    <?php
    $lang = [
        'service-page' => ['href' => '/service', 'title' => 'Сервис'],
        'price-page' => ['href' => '/price', 'title' => 'Прайс'],
        'blog-page' => ['href' => '/blog', 'title' => 'Блог']
    ];
    ?>
    <?php foreach ($lang as $item): ?>
        <li><a href="<?php echo $item['href'] ?>"><?php echo $item['title'] ?></a></li>
    <?php endforeach; ?>
</ul>
READ ALSO
Отправка документа на стену docs.save vk api

Отправка документа на стену docs.save vk api

При выполнении данного кода возникает ошибка в последней строке

163
Twig цикл в ассоциированном массиве

Twig цикл в ассоциированном массиве

У меня есть массив такого вида:

132
Opencart 2.3 Ocmod заменяет строки

Opencart 2.3 Ocmod заменяет строки

Почему-то неправильно отрабатывает ocmod в opencart 23

146