自动构建网站导航的一种解决方案是在文件夹中扫描以下文档:
foreach(glob('pages/*.pg.php') as $_SITE_NAV_filePath):
$_SITE_NAV_filePath = explode('.pg',pathinfo($_SITE_NAV_filePath,PATHINFO_FILENAME));
$_SITE_NAV_fileName = $_SITE_NAV_filePath[0];
$_SITE_NAV_qv = preg_replace('/([A-Z])/','-$1',$_SITE_NAV_fileName); $_SITE_NAV_qv = trim($_SITE_NAV_qv,'-');
$_SITE_NAV_name = preg_replace('/([A-Z])/',' $1',$_SITE_NAV_fileName);
?>
<li><a href="?page=<?=$_SITE_NAV_qv?>" class="<?=$_SITE_NAV_qv == $_SITE_PAGE['qv']?'active':''?>"><?=$_SITE_NAV_name?></a></li>
<?php
endforeach;
此代码将“AnAwesomePage.pg.php”转换为如下菜单项:
<li><a href="?page=An-Awesome-Page">An Awesome Page</a></li>
这可能是不好的做法(?) 无论如何;我不经常使用这种方法,因为大多数时候网站都有一个数据库,并且有更好的解决方案......
但我的问题是:
有没有办法在文件名前加一个整数,后跟和下划线(3_AnAwesomePage.pg.php),用于排序顺序,并以某种方式将其传递到查询字符串之外的目标页面,而没有任何异步javascript?
我可以在"_"
再次爆炸文件名以获取排序顺序并以某种方式存储在某处?
这是处理页面查询请求的代码:
$_SITE_PAGE['qv'] = $_GET['page'];
if (empty($_SITE_PAGE['qv'])){ $_SITE_PAGE['qv'] = explode('-','Home'); }
else { $_SITE_PAGE['qv'] = explode('-',$_GET['page']); }
$_SITE_PAGE['file'] = 'pages/'.implode($_SITE_PAGE['qv']).'.pg.php';
此代码将“An-Awesome-Page”变回“AnAwesomePage.pg.php”,因此可以将其包含在php中。
但是使用前缀,并不是那么容易。
问题是;现在没有办法知道它之前有什么前缀号,因为它已从查询字符串中删除。所以我需要在“背景”中以某种方式发送它。
我提出的一个非常糟糕的解决方案是将导航链接转换为表单按钮,只需_POST
前缀整数和表单。在拳头上它听起来像一个很好的解决方案,但后来我意识到,一旦用户刷新他们的页面,它看起来不是很好。毕竟,这不是什么形式......
那里有什么好的解决方案吗? 还是其他一些更好的处理方法?
答案 0 :(得分:0)
有两种方法可以保存该号码,您可以使用cookie或php会话变量。 但在这种情况下,如果用户首先在浏览器或新浏览器中输入网址,则应将其设为默认编号。 就像你有:
1_first-page.php
2_first-page.php
3_first-page.php
如果用户输入了以下网址:domain.com/?page=first-page,则必须将他带到1_first-page.php到您想要默认的任何号码。