2016-09-21 59 views
2

有两个文件,我可以修改修改先前呼应变量

header.tplproduct.tpl

我没有任何控制器或模型文件的访问

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

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

当前$description没有任何输出。然而,在我的product.tpl我有一个变量<?php echo $heading_title ?>这实际上是我想在标题meta数据中的文本。

这甚至有可能实现不访问模型/控制器,或者我只是浪费我的时间?

+0

javascript是一个选项吗? – Derek

+0

我不确定,但你是否可以做一些像'$ _SESSION ['description'] = $ heading_title;'在所有tpl页面和'“/>' –

+0

搜索引擎不会从我理解的数据中读取数据,如果它通过JavaScript放置。我也使用Facebook的'og:image'相同的概念,它不会与'js' – NooBskie

回答

2

不那么漂亮,但实用的解决方案

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

只要接受你的,我的反正就不会有太大的不同。 ;) – Yoshi

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代码简单的阅读,因而更容易在长期内保持额外的好处。即使在这个小代码示例中,您也可以看到不同之处。