- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева

Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Коллеги, здравствуйте! Вопрос следующий, решил спросить у сообщества, правильно ли я делаю и не будет ли у меня серьёзных проблем в обозримом будущем с данной конструкцией. Итак, я делаю свой личный сайт-визитку на PHP-Includes (РНР Инклудах). Проблема возникла с тем, чтобы подключить меню на сайте, и не просто его подключить в виде внешнего php файла, ("menu.inc.php"), а чтобы при этом подсвечивался активный пункт меню.
Иными словами, чтобы вы понимали, я хочу сделать таким образом, чтобы когда у меня на сайт будет 500+ страниц, меню у меня подгружалось на все эти страницы с одного-единственного внешнего файла "menu.inc.php". Если вдруг я приму решение добавить ещё один пункт меню, мне необходимо будет его добавлять не на всех 500+ страницах отдельно, а только в одном внешнем файле, что жизненно важно для меня.
В общем суть такова... Но вот с реализацией этого вопроса у меня возникли некоторые трудности, поскольку сам РНР я знаю пока-что лишь на самом начальном уровне, а сайт делать УЖЕ надо (точнее, надо было ещё позавчера). Потому, не мудрствуя лукаво, я решил взять очень простую, скажем так "деревянную" РНР-конструкцию и реализовать вышеуказанное меню в отдельном файле таким вот незамысловатым образом:
На самом сайте, например, в страничке "index.php" или "about.php" я подключаю вышеизложенный файл "menu.inc.php" таким вот образом:
Соответственно, переменная "$current_page" принимает на страничке то значение, в соответствии с документом, в котором необходимо это самое меню подсвечивать. И, таким образом, внешний файл меню у меня подключается к каждой страничке сайта, при этом, само меню лежит удалённо. Как вам такой вариант выхода из этой ситуации, с учётом моих достаточно скудных познаний в самом РНР? Да, мне предлагали это сделать несколько иначе через конструкцию FOREACH, однако конструкция IF-ELSEIF-ELSE для меня ближе, я хотя-бы понимаю, что конкретно я делаю.
Заранее благодарен за все ваши замечания и пожелания!
PHP код:
это жесть конечно 🙄
а когда элементов меню будет 500 какая простыня там получится?
вот набросал по-быстрому исходя из поставленной задачи (и ничего более) добавлять class="active" в списке меню:
menu.php:
$menu=[ '/index.php'=>'index',
'/about.php'=>'about',
'/contacts.php'=>'contacts',
];
$keys=array_keys($menu);
foreach($keys as $key)
{
echo "<li";
if($key==$_SERVER['SCRIPT_NAME'])
{
echo " class=\"active\"";
}
echo "><a href=\"$key\">$menu[$key]</a></li>";
}
?>
в массив $menu вписываем относительный путь к файлу и то как он в меню подписан будет.
и все. дальше в каждый файл просто вставляем:
index.php:
include('menu.php');
?>
about.php:
include('menu.php');
?>
contacts.php:
include('menu.php');
?>
и по переменной $_SERVER['SCRIPT_NAME'] поймет скрипт где делать пометку class="active"
конструкция IF-ELSEIF-ELSE для меня ближе
Могу лишь повторить то, что Вам уже сказали несколько дней назад: это, мягко говоря, плохой код. Так называемый "индусский". Или "китайский".
Sitealert
Да, согласен с вами, этот код так-себе... Но пока, наверное, оставлю его именно таким. Не думаю, что у меня там будет 500+ разделов меню. А если когда-то и станет такое количество, перепишу просто этот код на новый, оптимизированный формат. Ведь не сразу Москва строилась, не правда ли?
Хотя я понимаю, что искусство программирования - штука серьёзная. Спасибо ещё раз за ваши конструктивные замечания!
roman1981, сделайте хотя бы промежуточный вариант без цикла:
Иногда используют тернарный оператор, чтобы была только одна php-вставка:
И так каждый пункт.
---------- Добавлено 23.01.2018 в 01:38 ----------
Ну еще можно if ... echo ..., чтобы было и ветвление, и одна вставка.
ТС, обратите внимание.
Вы спрашиваете:
правильно ли я делаю
Вам отвечают - "неправильно".
Ваша реакция:
согласен с вами, этот код так-себе... Но пока, наверное, оставлю его именно таким
Вам понятно, что собеседник в результате чувствует, что над ним издеваются?
(PS Расхожее: "Код, который исполняется процессором, любой дурак написать может")
Во-во. ТС походу надеялся, что его подбодрят, а его опять ткнули носом, да еще припомнили тему, где его на ЭТОМ опустили.
Эх... А я так надеялся, что найдётся хотя-бы один человек, который подбодрит меня, похвалит, подчеркнёт мою исключительность и невероятную сообразительность. Да ещё и коллегам мой код в пример будет ставить!
Так нет же, только ругают и ругают. Всё, не интересно тут с вами, пойду в другую песочницу играться. Вот только лопатку с ведёрком заберу...
roman1981, первый признак детсадовского мышления – отвечать на эмоциональные посты и игнорить посты по существу вопроса ;)
miketomlin
Видно, что вы мне даже репутацию подпортили. Как по вашему - это не детсадовское мышление с вашей стороны? Рассуждаете о детсадовском мышлении, а сами как поступаете? ;)
Репу по правилам обсуждать нельзя. Безосновательно гнать на меня – очередной детсад. Успехов.