2012-08-23 6 views
0

Для начала: не Wordpress! Просто простой старый PHP. Вот что я пытаюсь сделать:Различные боковые панели на страницу темы

У меня есть горизонтальная панель навигации в верхней части моей страницы со ссылками «Home, О, Info, Контакт»

Большинство страниц также имеет вертикальная панель навигации, боковая панель. Если я нахожусь на главной странице, боковая панель не должна отображаться. Если я на странице «О себе», вы должны быть боковой панелью с различными другими темами. На странице «Контакты» необходимо указать боковую панель с ссылкой на описание маршрута и контактную форму и т. Д.

Я думал о достижении этого с помощью переменных $ GLOBAL и помещал что-то вроде $GLOBAL['sidebar] = 'home'$GLOBAL['sidebar'] = 'contact' и т. Д. ... поверх каждой страницы. В PHP-файле, который будет отображать мою боковую панель, я бы использовал структуру if, чтобы увидеть, какую боковую панель нужно визуализировать. Но использование глобальных переменных - это то, чему меня всегда учили неправильно, и его нельзя использовать. После этого мой разум переместился на переменные $ SESSION, но на самом деле это было бы точно так же, но с некоторыми дополнительными проблемами, такими как session_start() и т. Д.

Я самоучка на PHP, поэтому я не знаю, лучше всего использовать для решения этой конкретной проблемы (и я предполагаю, что это очень распространенная проблема) ». Будем очень благодарны за любые идеи по этому вопросу. Благодарю.

ответ

0

Решение будет зависеть многое о том, как вы создали структуру кода уже, но в более общем плане, как я обычно делаю это, чтобы:

Включить боковую панель, как часть вашего шаблона включены каждый страница.

Установите боковую панель вдоль линий этого:

<?php 
if (sizeof($sidebarModules)>0) { 
    ?> 
    <div id="sidebar"> 
    <?php 
    if (in_array('contact',$sidebarModules)) { 
    // display contact form 
    } 
    if (in_array('route',$sidebarModules)) { 
    // display route description 
    } 
    if (in_array('login',$sidebarModules)) { 
    // display login 
    } 
    ?> 
    <\div> 
    <?php 
} 
?> 

Затем в верхней части каждой страницы убедитесь, что вы определили массив $sidebarModules. Что-то вроде:

<?php 
    $sidebarModules = array(
    'contact', 
    'login', 
    'description' 
); 
?> 

Я не уверен, что это лучшее решение, но для меня это было хорошо для меня в прошлом.

Edit:

или сделать это более эффективно, если вы шаблоны названы в стандартной конвенции, например:

<?php 
if (sizeof($sidebarModules)>0) { 
    ?> 
    <div id="sidebar"> 
    <?php 
    foreach ($sidebarModules as $module) { // loop round all modules 
     include($module.'_tpl.php'); // include module template 
    } 
    ?> 
    <\div> 
    <?php 
} 
?> 
+0

О моей структуре коды: Каждое содержание страницы холдинга имеет 'Наверху и' 'Внизу. В файле pre_content PHP визуализируется боковая панель. Если мне нужно определить массив $ sidebarModules в верхней части каждого как файл pre_content знает о содержимом этой страницы, не будучи глобальной переменной? – Matthias

+0

, так как файл 'pre_content' находится в' require() 'вы можете использовать переменные из файла, в который он включен. Так что если вы устанавливаете '$ sidebarModules' выше, где вы используете' require ('pre_content') ', тогда вы сможете ссылаться на переменную' $ sidebarModules' внутри вашего файла pre_content. – Nick

+0

Хорошо, хорошо знать. Любая конкретная причина, по которой вы используя массив, а не, скажем, строку, содержащую слова «дом», «контакт», «около», ...? – Matthias

Смежные вопросы