【问题标题】:Change title and description dynamically动态更改标题和描述
【发布时间】:2020-06-23 12:53:02
【问题描述】:

我想从需要 MySQL 查询的页面生成动态标题和描述:

index.php

<html>
<head>
    <?php
    switch($page):
        case 'home':
            $body   = 'home.php';
            $title    = 'Home';  
        break;
    
        case 'contact':
            $body   = 'contact.php';
            $title    = 'Contact';  
        break;
    
        case 'members':
            $body   = 'members.php';
            $title    = 'I should put here the member profile';  
        break;
        
    /*
     * More pages
     */
        
        
    endswitch;

    ?>

    <title><?php echo $title; ?></title>
</head>

<body>
    <?php
        require_once $body;
    ?>
    
</body>

那么例如我应该调用页面,例如:

members.php 页面

<?php
$sql = "SELECT * FROM members WHERE mem_id = :mem_id";
/*
 * More codes
 */

foreach($res as $f):
    $mem_name       = $f['mem_name'];
endforeach;

$newTitle   = 'Profile of '.$meme_name;

 ?>

那么我怎样才能将从 MySQL 查询生成的 $newTitle 放在 title 标签内

提前致谢

【问题讨论】:

  • 答案是“是”吗?
  • 对不起,如何将MySQL查询生成的标题放入标题标签中?
  • 我可以调用页面,问题只是动态标题
  • 您必须在设置标题之前包含members.php。为此,您需要更新代码以在变量中返回每个页面的正文并将其显示在 &lt;body&gt; 标记中。您当前的问题是您在设置标题后需要 members.php 脚本,因此在这个意义上没有回头路。
  • 需要调用** require_once $body; $title 之前 值设置并在 $title 中设置 $newTitle 值

标签: php title


【解决方案1】:

正如我们从给定的代码中看到的,您可以在下面执行此操作。 如果您真的不想重写整个代码。

members.php

<?php
$sql = "SELECT * FROM members WHERE mem_id = :mem_id";
/*
 * More codes
 */

foreach($res as $f):
    $mem_name       = $f['mem_name'];
endforeach;

$newTitle   = 'Profile of '.$meme_name;

require_once $body;
 ?>

// put this at the buttom of your body
<script>
document.title="<?php echo $newTitle;?>"
</script>

但仍然建议您一开始就准备好服务器端变量,这样您就不会遇到这种问题。

【讨论】:

  • 有效,不会影响ContactHome等固定标题,还是先做些检查
  • 如果你不想在$newTitle没有设置的情况下执行,你可以添加一些条件..
  • 在这之间,我注意到添加了title,但是在源码中,并没有添加到title标签,这是否影响了SEO爬取?
猜你喜欢
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 2019-04-16
  • 2015-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多