Атрибуты страницы с PHP и XML

Итак, я думаю, что это было бы возможно сделать, но это немного выше моих возможностей. У меня есть базовые файлы header.php, index.php и footer.php, которые будут работать с включениями. поэтому подстраница будет иметь название about.php и включать верхний и нижний колонтитулы. Что я хотел бы сделать, так это создать файл xml, в котором содержится вся информация о странице, такая как родительские страницы, заголовки, описание и т. д., и функция, которая получает текущее имя файла, запускает функцию и возвращает соответствующие данные. У меня есть функция, которая получает имя файла...

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

Эта функция отлично работает и вернет имя файла текущей страницы, например about.php. Мне нужна функция, которая отправит этот заголовок в указанную функцию, проанализирует 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>

person Greg Thompson    schedule 13.12.2011    source источник


Ответы (2)


Определенно возможно. Вот несколько общих шагов:

  1. Прочитайте файл settings.xml в var, т.е. что-то вроде file_get_contents.
  2. Использование: xml_parse_into_struc http://php.net/manual/en/function.xml-parse-into-struct.php
  3. Перемещайтесь по полученному объекту, а затем размещайте свои предметы там, где они вам нужны.
person Michael Dillon    schedule 13.12.2011

Мое решение оказалось...

Это вверху динамической страницы...

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;  
}

затем, наконец, я вызываю свои переменные в соответствующем месте...

 <title><?php echo $title ?></title>
  <meta name="description" content="<?php echo $description ?>">
person Greg Thompson    schedule 14.12.2011