我有一个个人网站,我想在其中展示我所做的一些下载。每个下载都有一个描述和下载链接,但是我不想为每个项目创建一个单独的页面(如“item1.php”、“item2.php”等),因为格式几乎是“标准的。 " 因此,我将所有文本放在一个 XML 文件中,然后使用 PHP 对其进行解析。
这是我的 XML 的样子:
<txtdb>
<txt name="index">
<str key="title">Index</key>
<str key="metadescription">Personal site</key>
<str key="navigation">Navigation</key>
<str key="description"><!CDATA[[<h2>Description</h2>]]></key>
<str key="download"><!CDATA[[<h2>Download</h2>]]></key>
</txt>
<txt name="item1">
<str key="title">Item 1</key>
<str key="metadescription">Item 1 is awesome, get it now!</key>
<str key="description"><!CDATA[[<p>Item 1 is an incredible item that you must get right away!</p>]]></key>
<str key="download"><!CDATA[[<a href="http://dropbox.com">Here</a>]]></key>
</txt>
<!-- ... -->
</txtdb>
这是我的 index.php:
<?php
$current = 'index';
class TextDatabase()
{
private $_xdb;
private $_name;
public function __construct($xdt)
{
$this->_xdb = simplexml_load_file('./incl/txt.xml');
$this->_name = $xdt;
}
public function getString($key, $name = null)
{
if (empty($name))
{
$name = $this->_name;
}
$str = $this->_xdb->xpath(sprintf("//txt[@name='%s']/str[@key='%s']", $name, $key));
return empty($str[0]) ? null : (string) html_entity_decode($str[0]);
}
}
session_start();
if (isSet($_GET['name']))
{
$current = $_GET['name'];
$_SESSION['name'] = $current;
}
else if (isSet($_SESSION['name']))
{
$current = $_SESSION['name'];
}
else
{
$current = 'index';
}
$TxtDb = new TextDatabase($current);
include_once('incl/header.php');
include_once('incl/sidebar.left.php');
if ($current == 'index'):?>
<h2><?php echo $TxtDb->getString('navigation'); ?></h2>
<ul>
<li><a href="index.php?name=item1"><?php echo $TxtDb->getString('title','item1'); ?></a></li>
<li><a href="index.php?name=item2"><?php echo $TxtDb->getString('title','item2'); ?></a></li>
<!-- more items -->
</ul>
<?php else: ?>
<h2><?php echo $TxtDb->getString('description','index'); ?></h2>
<article><?php echo $TxtDb->getString('description'); ?></article>
<h2><?php echo $TxtDb->getString('download','index'); ?></h2>
<article><?php echo $TxtDb->getString('download'); ?></article>
<?php endif;
include_once('incl/sidebar.right.php');
include_once('incl/footer.php');
?>
目前,它有效。如果我转到“index.php”,我会看到我的项目列表。然后,当我单击其中一个时,我将被发送到 'index.php?name=item n '。但是,我在标题中有一个指向“index.php”的链接,当我单击它时,页面会重新加载,但我没有回到索引。为了返回索引,我必须将链接更改为指向“index.php?name=index”,但我不喜欢这样。有没有办法让“index.php”(不带参数)返回索引而不是当前项目(我相信它存储在 PHP 会话中)?
这是我第一次使用 PHP(我更喜欢 C#),如果这是一个愚蠢的问题,很抱歉。谢谢你的帮助。