PHP导航,有更好的方法吗?
我对使用PHP相当陌生,在本次导航之前,我的PHP使用范围很简单 我编写了一个navigation.php文件,该文件使用variables.php中从数组中提取的变量动态生成导航链接 总体目标是仅通过编辑变量来添加/减去链接、子AV、子AV、子AV。php 我用来生成HTML结构的方法对我来说很笨拙,它工作得很好,但我觉得有一种更简单的方法来实现这一点 此外,我还需要为存在subnav的任何LI提供额外的样式(箭头指示存在subnav)。我想动态地生成它 也就是说,我的问题是:PHP导航,有更好的方法吗?,php,html,navigation,nav,Php,Html,Navigation,Nav,我对使用PHP相当陌生,在本次导航之前,我的PHP使用范围很简单 我编写了一个navigation.php文件,该文件使用variables.php中从数组中提取的变量动态生成导航链接 总体目标是仅通过编辑变量来添加/减去链接、子AV、子AV、子AV。php 我用来生成HTML结构的方法对我来说很笨拙,它工作得很好,但我觉得有一种更简单的方法来实现这一点 此外,我还需要为存在subnav的任何LI提供额外的样式(箭头指示存在subnav)。我想动态地生成它 也就是说,我的问题是: 有没有更简单的
My variables.php:
导航PHP文件main nav.PHP
您所做的几乎是一目了然,但您正在让自己围绕自己的代码编写
相反,允许它是泛型的,因此编写一个函数,如果需要,可以调用它自己来执行此操作:
$menu_items = array(
'Home' => 'index.php'
'About' => array('about.php',
array('Our Team'=>'ourteam.php'),
etc
);
?>
- 从
- 循环给定的数组
- 添加
- 如果是字符串(),则是一项附加
- 如果是_array(),则存在子项,
- 添加
- 将第二个元素发送到此函数并附加它返回的html
- 关闭
现在,对于您的迷你菜单,只需在使用一个函数创建html之前,按其键(Home、About、Services)从主数组中选择元素即可一个更简洁的解决方案是使用它们构建导航。如果数组的
值
是另一个数组,那么您知道它有一个子菜单。乍一看,我想知道为什么您不使用多维数组或php编写html。为了回答你的问题-是的,是的。我尝试了一个多维数组,但我无法让它工作,即使在看了其他一些代码之后。毫无疑问是因为我缺乏知识。这是有道理的。你能提供一个函数可能是什么样子的例子,或者一个指向某个地方的链接来帮助我理解它吗?谢谢
<!-- NAVIGATION ARRAY -->
<?php
$nav_mini = array(
'Home' => 'index.php',
'About' => 'about.php',
'Services' => 'services.php'
);
?>
<?php
$nav_main = array(
'Home' => 'index.php',
'About' => 'about.php',
'Services' => 'services.php',
'Portfolio' => 'contact.php',
'Clients' => 'about.php',
'Gallery' => 'services.php',
'News' => 'services.php',
'Contact Us' => 'contact.php'
);
?>
<?php // SUB NAV ARRAYS
$nav_sub_about = array(
'Our Team' => 'about.php'
);
$nav_sub_michael = array(
'Michael' => 'index.php',
'Aaron' => 'about.php',
'Kenny' => 'about.php',
'David' => 'about.php'
);
$nav_sub_services = array(
'Get Found' => 'about.php'
);
?>
<?php
foreach ( $nav_main as $key => $value ) {
echo "<li><a ";
echo "class='"; // STARTS CLASS=
if ( $title == $key) {
echo "active "; }// ADDS ACTIVE CLASS TO LINK OF CURRENT PAGE
echo "' "; // END QUOTES FOR CLASS="
echo "href='$value'>$key";
if ( $key == "About") { // STARTS IF SEQUENCE FOR SUBNAV ARROWS
echo "<span class='arrow'> +</span>";}
elseif ( $key == "Services") {
echo "<span class='arrow'> +</span>";}
echo "</a>\n"; // END ANCHOR TAG FOR MAIN NAV LINKS
//----------------------------------------------------------------------------------------------------------//
// PLEASE START SUB-NAVS HERE ------------------------------------------------------------------------------//
// AT THIS POINT A NEW <LI> IS GENERATED FROM THE FIRST FOREACH, IF THE BELOW IS TRUE IT POPULATES A SUBNAV //
if ( $key == "About"){ // START SUBNAV FOR ABOUT
echo "<ul class='main-sub-nav'>"; // THIS LINE WAS ADDED TO START THE <UL> FOR THE SUBNAV, IT ENDS ON LINE 14
foreach ( $nav_sub_about as $key => $value ) {
echo "<li><a href='$value'>$key";
if ( $key == "Our Team") { // STARTS IF SEQUENCE FOR SUBNAV ARROWS
echo "<span class='arrow'> +</span>";}
echo "</a>\n"; // ENDS ANCHOR TAG FROM SUBNAV LI
// SUB-SUB-NAV STARTS HERE
if ( $key == 'Our Team') {
echo "<ul class='main-sub-sub-nav'>"; // THIS STARTS THE UL FOR SUB-SUB-NAV
foreach ($nav_sub_michael as $key => $value ) {
echo "<li><a href='$value'>$key</a></li>\n";
}
echo "</ul>"; // THIS ENDS THE SUB-SUB-NAV UL STARTED ON LINE 34
echo "</li>";}// THIS IS THE END IF <LI> FROM THE SECOND FOREACH ON LINE 35
}
echo "</ul>"; // THIS WAS ADDED TO END THE SUBNAV <UL> STARTED ON LINE 11
echo "</li>";} // THIS IS THE END OF THE <LI> FROM THE FIRST FOREACH ECHO FROM LINE 8
//----------------------------------------------------------------------------------------------------------//
// AT THIS POINT A NEW <LI> IS GENERATED FROM THE FIRST FOREACH, IF THE BELOW IS TRUE IT POPULATES A SUBNAV //
if ( $key == "Services"){
echo "<ul class='main-sub-nav'>"; // THIS LINE WAS ADDED TO START THE <UL> FOR THE SUBNAV, IT ENDS ON LINE 14
foreach ( $nav_sub_services as $key => $value ) {
echo "<li><a href='$value'>$key</a></li>\n";}
echo "</ul>"; // THIS WAS ADDED TO END THE SUBNAV <UL> STARTED ON LINE 11
echo "</li>";} // THIS IS THE END OF THE <LI> FROM THE FIRST FOREACH ECHO FROM LINE 8
} // THIS BRACKET ENDS THE ENTIRE SET OF PHP. ITS PAIR IS ON LINE 19
?>
$menu_items = array(
'Home' => 'index.php'
'About' => array('about.php',
array('Our Team'=>'ourteam.php'),
etc
);
?>