修改以前回显的变量

时间:2016-09-21 07:28:44

标签: php

我可以修改两个文件

header.tpl product.tpl

我无法访问任何控制器或模型文件

出于搜索引擎优化的目的,我试图在产品页面上修改以下元数据。

<meta name="description" content="<?php echo $description; ?>" />

目前$description没有任何输出。但是,在我的product.tpl上,我有一个变量<?php echo $heading_title ?>,它实际上是我希望在标题meta数据中包含的文字。

这是否可以在不访问模型/控制器的情况下实现,或者我只是在浪费时间?

2 个答案:

答案 0 :(得分:2)

不那么漂亮但功能性的解决方案

<?php echo $header = preg_replace('/<meta name="description" content="" \/>/', '<meta name="description" content="' . $heading_title . '" \/>', $header); ?>

答案 1 :(得分:0)

如评论中所述:一旦将某些内容发送到浏览器(或任何其他输出),就无法在服务器端进行更改。

如果您能够使用preg_replace()等编辑标题的内容,那么最佳解决方案是在之前设置变量,包括标题。
所以,而不是像这样的东西:

include "header.tpl";
$data = get_from_db ();
echo do_some_processing ($data);
include "footer.tpl";

在开始向浏览器输出任何内容之前,您将移动所有处理,这完全消除了必须更改已发送内容的悖论。哪个应该给你一个类似的代码:

// Do all of the processing first.
$data = get_form_db ();
$output = do_some_processing ();

// Then, when all of the processing is done, output to browser.
include "header.tpl";
echo $output;
include "footer.tpl";

它还有一个额外的好处,就是让您的PHP代码更多更易于阅读,从而更容易维护。即使在这个小代码示例中,您也可以看到正确分离的差异。