如何在包含文件中设置默认(或更改)元描述

时间:2018-03-21 20:38:47

标签: php metadata

我有网页example.org,其中我有多个子类别,如:

  • 的index.php?页=登录
  • 的index.php?页=类别
  • 页=登录资讯?页=名称

我在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页,所以我可以手动编写,但是如何?)

因为用户可以添加页面,所以我需要设置默认的元描述(因为我不想要重复的元描述)

有解决方案吗?抱歉我的英文。

2 个答案:

答案 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.netswitch block的一些信息:

  

switch语句类似于同一表达式上的一系列IF语句。在许多情况下,您可能希望将相同的变量(或表达式)与许多不同的值进行比较,并根据它所等的值执行不同的代码。