Twitter Subscribe to PHP Blog RSS Feed Email RSS

PHP 导航提示(面包屑型轨迹)

添加评论 2010年6月4日
可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明

导航提示(面包屑型轨迹)为Web用户提供了方便、直观的导航帮助,将用户的当前位置分解为一个超链接路径提供当前文档中网站中相对位置的总揽。总体来说,更加优于浏览器本身提供的导航工具,而且能够补充甚至替代一般网站的本地化菜单系统。

这里演示两种不同的方法,第一种使用数组将难于处理的URL树转换为更加友好的用户命名约定。这种实现对于创建对应基本静态页面的导航树比较实用。第二种使用MySQL数据库,为数据库驱动的网站创建用户友好的导航映射。最后将面包屑轨迹简单地应用到 WordPress 模板的编写中。

一、基于静态数据创建面包屑型轨迹

实现思路:

  1. 使用$_SERVER[‘PHP_SELF’] 读取文件的目录树。
  2. 将目录树各级转换为数组。
  3. 创建一个关联数组,用来为导航提供用户友好的名字。
  4. 创建URL解析和映射函数create_crumbs()。将其存储在全局网站头文件中。
  5. 在需要导航提示的页面执行create_crumbs() 函数。

[code=”php”]

function create_crumbs($crumb_site, $home_label, $crumb_labels) {

$crumb_trail = “$home_label“;
$crumb_tree = explode(‘/’, $_SERVER[‘PHP_SELF’]);
//explode()函数分割字符串到数组,这里以斜杠“/”作为分割
$crumb_path = $crumb_site.’/’;

for ($x = 1; $x < count($crumb_tree) - 1; $x++) { $crumb_path .= $crumb_tree[$x].'/'; $crumb_trail .= ' > ‘ .$crumb_labels[$crumb_tree[$x]].’‘;
}

return $crumb_trail;
}

[/code]

保存为 “breadcrumbs.php”到相应目录,这里方便示例保存到和测试页面同一目录下,即 /php/form/pmnp/mysql/ 下。接着创建3个输入参数并执行函数:

[code=”php”]

include “breadcrumbs.php”;
$crumb_site = “http://localhost”;  //这里在本机测试,如果在另外服务器替换相应域名
$crumb_labels = array(
“php” => “PHP”,
“form” => “Recent Articles”,
“pmnp” => “Beginning PHP and MySQL 5”,
“mysql” => “MYSQL”
);

echo create_crumbs($crumb_site, “Home”, $crumb_labels);

[/code]

将此代码保存执行即可得到如下面包屑型轨迹:

Home > PHP  > Recent Articles > Beginning PHP and MySQL 5 > MYSQL

二、基于数据库表数据创建面包屑型轨迹

考虑将 URL http://www.example.com/books/1590595521/ 转换为如下面包屑型轨迹:

Home > IT > Beginning PHP and MySQL5

对于数据库驱动的网站而言,用数组来处理存贮的动态信息虽然可行,但并不是最方便的方式。下面只是一个简单的实现,将指定的ISBN号码查询出匹配的书名和所属分类,输出到导航位置。

以下 categories 表提供了书类别到 books 表中存储的 书之间的一对多的映射。

[code=”sql”]

create table categories2 (
categoryID  TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(15) NOT NULL );

[/code]

表 books 用于存贮出版商的图书信息:

[code=”sql”]

create table books (
bookID TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
categoryID TINYINT NOT NULL,
isbn VARCHAR(9) NOT NULL,
author VARCHAR(50) NOT NULL,
title VARCHAR(45) NOT NULL,
description VARCHAR(300) NOT NULL );

[/code]

在books表中插入数据:

[code=”sql”]

insert into books (categoryID,isbn,author,title,description)
values (‘2′,’159059552′,’Kevin’,’Beginning PHP and MySQL5′,’How to learn PHP and MySQ’);

[/code]

创建好数据库后,现在编写PHP代码部分,以上省略了创建数据库表时提供的数据库名和用户,需自行创建并调整PHP代码连接数据库部分。

[code=”php”]

function create_crumbs($siteURL, $categoryID, $categoryName, $title) {
$crumb = “Home > $categoryName > $title”;
print $crumb;
}

$siteURL = “Http://localhost”;

mysql_pconnect(“localhost”,”website”,”secret”);
mysql_select_db(“corporate”);

$isbn =”159059552″;

$result = mysql_query(“select b.categoryID,c.name,b.isbn,b.author,b.title,b.description from books b,categories c where b.isbn = $isbn and b.categoryID = c.categoryID”);

$row = mysql_fetch_assoc($result);

$categoryID = $row[“categoryID”];
$categoryName = $row[“name”];
$isbn = $row[“isbn”];
$authorID = $row[“author”];
$title = $row[“title”];

create_crumbs($siteURL, $categoryID, $categoryName, $title);

[/code]

直接在浏览器执行这个PHP文件即可得到效果。

向 WordPress 模板添加面包屑型轨迹

由于WordPress 有大量可用的函数,在其模板里实现面包屑型轨迹是一个很简单的事情。只需要在 “single.php” 需要展示导航提示的位置添加下面代码即可实现:

[code=”php”]

目录:PHP 标签:

评论

  1. 想找兼职的设计师

    仔细看了看你的博客,觉得,还不错。如果有机会在外包领域合作。我很期待。

  2. coo

    博客不错!