【问题标题】:Generate dynamic meta-tags based on URL基于 URL 生成动态元标记
【发布时间】:2012-05-21 17:16:41
【问题描述】:

我正在尝试为每个页面动态分配专有元标记:

即: url.com/index.php?action=signup

标题 - 注册标题

关键字 - 注册元关键字

说明 - 注册说明

url.com/index.php?action=about

标题 - 关于标题

关键字 - 关于元关键字

描述 - 关于描述

你明白了。

我正在使用数组...但还没有想出如何将每个数组分配给每个页面。

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']; ?>" >

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

【问题讨论】:

    标签: php dynamic meta-tags


    【解决方案1】:

    你在正确的轨道上:-)

    按以下方式进行:

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

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

    同样从你的 config.php 文件中删除最后 3 行,你不需要它们。

    祝你好运,使用 PHP 可以确保你获得有关使用数组的良好知识。这是关键。

    编辑:

    $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
    
    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?action=signup / 关于 - index.php?action=about...等
    • 我使用switch方法来赋值。但是现在我在分配从 MySQL 选择中获取的变量时遇到了问题……我该怎么做?例如:url.com/news/$id/$title - 在这种情况下如何分配元标签?
    • 在这种情况下,您必须使用 strpos($haystack, $findme) 方法在完整 URL 上搜索特定单词。如果您发现新闻,您应该使用这些元标记等。因此,您可以通过 2 种方式做到这一点:1)使用操作或 2)如果操作为空白,则使用 strpos 查找您的关键字并从配置中获取正确的元标记。
    • 你能说得更具体些吗?
    • @Darkeden 我添加了一个示例来支持我的评论。请检查。
    猜你喜欢
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 2021-12-13
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多