我有网页example.org,其中我有多个子类别,如:
我在index.php中包含了head.php文件,其中包含:
if(!empty($settings->meta_description) && (!isset($_GET['page']) || (isset($_GET['page']) && $_GET['page'] != 'category')))
echo '<meta name="description" content="' . $settings->meta_description . '" />';
elseif(isset($_GET['page']) && $_GET['page'] == 'category' && !empty($category->description))
echo '<meta name="description" content="' . $category->description . '" />';
是否可以为所有页面(子类别)设置默认元描述?或者如何手动将描述写入所有页面(大约25页,所以我可以手动编写,但是如何?)
因为用户可以添加页面,所以我需要设置默认的元描述(因为我不想要重复的元描述)
有解决方案吗?抱歉我的英文。
答案 0 :(得分:0)
重新发明轮子,但出于学习目的,以下内容对您有意义吗?老实说,你应该看看一些MVC框架如何处理这个问题。
<?php
$pageData = [
'category' => ['title' => 'This is a title', 'description' => 'Hello world...'],
'login' => ['title' => 'This is a title', 'description' => 'Hello world...'],
'names' => ['title' => 'This is a title', 'description' => 'Hello world...'],
]
if (isset($_GET['page']) {
if (isset($pageData[$_GET['page'])) {
//we have defined meta data specific for this page
echo '<meta name="description" content="' . $pageData[$_GET['page']['description'] . '" />';
} else {
//page paramter was passsed but no specific values assigned for the page
echo '<meta name="description" content="This is some default/fallback text." />';
}
} else {
//page paramter not passsed in
echo '<meta name="description" content="This is some other default/fallback text." />';
}
答案 1 :(得分:0)
实际上,最好的方法是设置一个包含name
列和description
列的数据库表。然后,您可以查看每个页面的描述,例如(此示例使用mysql
语法):
$result = $mysql->query("SELECT description FROM pageinfo WHERE page = '"
. $mysql->escape_string($_GET['page']) . "'");
if($result->num_rows){
$description = $result->fetch_array()[0];
} else {
$description = 'Default description...';
}
#echo the description here...
但是,如果您不想使用数据库或者不想学习语法,可以使用纯PHP来实现:
您可以使用开关块检查您所在的页面,然后根据页面设置说明($desc
将是本例中的页面说明)。
#use a switch block to check what page the user is on
$desc = '';
switch($_GET['page']){
case 'login':
$desc = 'Login page description';
break; #make sure you include the break statement
case 'category':
$desc = 'Category description';
break;
#( include the rest of the page names )
default:
#this will happen if none of the other conditions are met
$desc = 'Default description';
break;
}
以下是来自php.net的switch block
的一些信息:
switch语句类似于同一表达式上的一系列IF语句。在许多情况下,您可能希望将相同的变量(或表达式)与许多不同的值进行比较,并根据它所等的值执行不同的代码。