基于URL生成动态元标记

3
我正在尝试为每个页面动态分配独占的元标签,例如:url.com/index.php?action=signup。其中:
Header - 注册标题
Keywords - 注册关键字
Description - 注册描述
你懂了。
我正在使用数组……但还不知道如何将每个数组分配到每个页面。 CONF.PHP
<?php
$metas = array( 
'index.php' => array( 
'header' => 'Home Title', 
'keywords' => 'Home Meta Keywords', 
'description' => 'Home Meta Description' 
), 
'signup' => array( 
'header' => 'Signup Title', 
'keywords' => 'Signup Meta Keywords', 
'description' => 'Signup Meta Description' 
), 
'about' => array( 
'header' => 'About Title', 
'keywords' => 'About Meta Keywords', 
'description' => 'About Meta Description' 
) 
);
?>

INDEX.PHP

<TITLE><?php echo $metas['title']; ?></TITLE>
<meta name="description" content="<?php echo $metas['description']; ?>" >
<meta name="keywords" content="<?php echo $metas['keywords']; ?>" >

如何将这些值分配给每个页面?
1个回答

8

您走上了正确的道路 :-)

按照以下方式操作:

<TITLE><?php echo $metas['index.php']['title']; ?></TITLE>

您可以从 $_SERVER 超全局数组/变量中获取脚本名称。

同时,从您的 config.php 文件中删除最后3行,它们不是必需的。

祝您好运,确保您对操作数组有足够的了解。这很关键。

编辑:

$page = 'index.php';
if ( isset( $_GET['action'] ) && $_GET['action'] != "" )
{
    $page = $_GET['action'];
}

<TITLE><?php echo $metas[$page]['title']; ?></TITLE>

编辑:(2012年5月27日)

我认为这就是全部内容:

您在config.php中的代码

<?php

$meta['INDEX']['title'] = "Home page";
$meta['INDEX']['keywords'] = "kwd1, kwd2, kwd3";
$meta['INDEX']['description'] = "Home description";

$meta['SIGNUP']['title'] = "Sign up..!";
$meta['SIGNUP']['keywords'] = "kwd1, kwd2, kwd3";
$meta['SIGNUP']['description'] = "Sign up description";

$meta['ABOUT']['title'] = "About Company";
$meta['ABOUT']['keywords'] = "kwd1, kwd2, kwd3";
$meta['ABOUT']['description'] = "About company description";

您在任何应用程序页面/屏幕(.php文件)中的代码:

您在任何应用程序页面/屏幕(.php文件)中的代码:

<?php

include "config.php";

// Choice 1: if you want to specify page hardcoded at each page then you can say $page = 'ABOUT' for about-us page and $page = 'INDEX' for home page etc.
$page = 'ABOUT';
if( strtoupper($_SERVER['REQUEST_URI'], $page) !== false )
{
    $title = $meta[$page]['title'];
    $keywords = $meta[$page]['keywords'];
    $description = $meta[$page]['description'];
}
// Now you have your meta - use it the way you want
echo $title;

// Choice 2: If you want to make it little more dynamic
// Here you don't need to define any hardcoded variable at page level as everything will be considered from the URL being requested
$page_index = array_keys($meta);

foreach($page_index as $page)
{

    if ( strpos( strtoupper($_SERVER['REQUEST_URI']), $page ) !== false)
    {
        $title = $meta[$page]['title'];
        $keywords = $meta[$page]['keywords'];
        $description = $meta[$page]['description'];
        break;
    }
}
// Now you have your meta - use it the way you want
echo $title;

?>

但是,如果所有页面都在index.php中加载,我该如何将index.php数组放在index.php中? 注册 - index.php?action = signup / 关于 - index.php?action = about ...等 - Genesis
我使用了switch方法来分配值。 但现在我遇到了从MySQL select获取变量的问题...我该怎么做?

例如: url.com/news/$id/$title

在这种情况下如何分配元标记?
- Genesis
在这种情况下,您必须使用strpos($haystack, $findme)方法在完整的URL上搜索特定单词。如果您找到了新闻,应该使用那些元标记等等。因此,您可以通过两种方式进行操作:1)使用操作或2)如果操作为空,则使用strpos查找关键字并从配置中获取正确的元标记。 - deej
你能再具体一些吗? - Genesis
@Darkeden 我已经添加了一个示例来支持我的评论。请查看。 - deej
@Darkeden,我更新了答案并提供了更新的代码/示例,这样更清晰明了了吗? - deej

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接