2011-12-13 101 views
0

好吧,我会想象这可能会做到,但它比我的能力略高。我拥有的是一个基本的header.php,index.php和footer.php,它们将与include一起工作。所以一个子页面将被称为about.php并包含页眉和页脚。我想要做的是创建一个xml文件,其中包含所有的页面信息,如父页面,标题,描述等,并有一个函数获取当前文件名,运行该函数并返回相关数据。我有一个获取文件名功能...使用PHP和XML的页面属性

$currentFile = $_SERVER["PHP_SELF"]; 
$parts = Explode('/', $currentFile); 
$filename = ($parts[count($parts) - 1]); 

此功能的伟大工程,将返回当前页面的文件名,例如about.php。我想要一个函数将这个标题发送到所说的函数,解析XML的适当内容并将其反馈回来。这甚至有可能吗?

示例XML ...

<SITE> 

<PAGE> 
<FILENAME>about.php</FILENAME> 
<DESCRIPTION>description description description </DESCRIPTION> 
<TITLE>About Us</TITLE> 
<PARENTS> 
<PARENT>Company</PARENT> 
<PARENT>People</PARENT> 
</PARENTS> 
</PAGE> 

<PAGE> 
<FILENAME>people.php</FILENAME> 
<DESCRIPTION>description description description </DESCRIPTION> 
<TITLE>People</TITLE> 
<PARENTS> 
<PARENT>Company</PARENT> 
</PARENTS> 
</PAGE> 

</SITE> 

回答

0

绝对有可能的。以下是一些常规步骤:

  1. 将您的settings.xml文件读入var,即file_get_contents之类的somethimg。
  2. 使用:xml_parse_into_struc http://php.net/manual/en/function.xml-parse-into-struct.php
  3. 导航该结果对象,然后把你的物品放在你需要它们的地方。
0

我的解决办法结束了......

这是在动态页面的顶部...

include "includes/sitestructure.php"; 
$currentFile = $_SERVER["PHP_SELF"]; 
$parts = Explode('/', $currentFile); 
$pagePath = $parts[count($parts) - 1]; 

$siteInf = getPage($pagePath); 
$description = $siteInf->DESCRIPTION; 
$title = $siteInf->TITLE; 

我基本上采取了当前模板文件的名称,然后通过发送在GETPAGE功能,并参照这里看到的功能的XML ...

function getPage($pagePath){ 

$file = "includes/sitestructure.xml"; 
$xml = simplexml_load_file($file); 
$pages = $xml->xpath('PAGE[FILENAME="'.$pagePath.'"]'); 
$pages = $pages[0]; 

return $pages; 
} 

然后最后我把我的变量在适当的PLAC e ...

<title><?php echo $title ?></title> 
    <meta name="description" content="<?php echo $description ?>">