我使用的是symfony 1.0.6。
在我的网站中,我有两个网址。
http://newe4s.com/news/articles/view/033/job-news-and-information
和
http://newe4s.com/news/articles/view/033/job-news-and-information/graduate/Connections-help-graduates-get-jobs
现在,所有新文章都使用相同的布局,上面的两个链接都从数据库中获取相同的数据。 Google正在报告重复内容,因为它获取了相同内容的多个网址。 当我搜索解决方案时,我得到了使用“规范”结构修复了这个需要
的问题<link rel="canonical" href="http://newe4s.com/news/articles/view/033/job-news-and-information />
将添加到页面的主题部分
http://newe4s.com/news/articles/view/033/job-news-and-information/graduate/Connections-help-graduates-get-jobs
但问题是,两者都使用相同的布局并基于文章ID(上例中为033),数据被提取和显示。 我不能改变或硬编码规范href。
有没有办法在action.class或模板文件中手动添加链接标记?
答案 0 :(得分:2)
根据an old ticket(基于old thread in the old symfony forum) - 哪个点to the final source,您可以创建一个向您的网页添加链接标记的帮助程序(例如/lib/helper/CanonicalHelper.php
}):
/**
* Add link tag to slot 'links'
*
* @param String $href [Absolute or internat URI]
* @param String $rel [value for 'rel' attribtue, e.g. 'canonical']
*
* @return void
*/
function add_link($href, $rel)
{
$slot = get_slot('links');
try {
$href = url_for($href, true);
$slot .= "\n<link rel=\"$rel\" href=\"$href\" />";
} catch (InvalidArgumentException $e) {
$slot .= "\n<!-- Could not add Link '$href': Only absolute or internal URIs allowed -->";
}
slot('links', $slot);
}
然后你可以在你的模板中调用它:
<?php add_link(
'http://newe4s.com/news/articles/view/033/job-news-and-information',
'canonical'
); ?>
最后,不要忘记在layout.php
中添加广告位:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Title</title>
<link rel="shortcut icon" href="/favicon.ico" />
<?php include_javascripts() ?>
<?php include_stylesheets() ?>
<?php include_slot('links'); ?>
</head>
如果你想从actions
添加它,它也在博客文章中定义。
修改强>
如果您创建了一个名为CanonicalHelper.php
的帮助程序,请不要忘记在要使用add_link
函数时包含它:
<?php use_helper('Canonical') ?>
答案 1 :(得分:1)
Symfony 1.0.11
function add_link($href, $rel)
{
slot('links');
echo "\n<link rel=\"$rel\" href=\"$href\" />\n";
end_slot();
}
答案 2 :(得分:0)
您好我正在做如下,请告诉我如果我是对或错。
在/lib/symfony/CanonicalHelper.php
中<?php
function add_link($href, $rel)
{
$slot = get_slot('links');
try {
$href = url_for($href, true);
$slot.= "\n<link rel=\"$rel\" href=\"$href\" />";
}
catch (InvalidArgumentException $e) {
$slot.= "\n<!-- Could not add Link '$href': Only absolute or internal URIs allowed -->";
}
return $slot;
}
?>
在layout.php中:
<?php include_slot('links'); ?>
在成功档案中:
<?php use_helper('Canonical');?>
<?php echo add_link('nonsense', 'canonical');?>