难倒了。我想链接我的帖子标签,以便在点击它时列出所有帖子到该标签,类似于标签云 - 将该功能添加到帖子下的各个标签。
目前,我已将其设置为使用与我的标签云相同的功能,但当我将鼠标悬停在一个标签上时,它会显示所有标签,因为我在for循环中使用了博客结果(blog.tags) 。请参见屏幕截图:(悬停在一个标签上显示博客文章中的所有标签)
当我使用get all标签和for循环通过那些它工作时(当我选择特定标签时按标签给我所有帖子),但它也列出了所有标签而不是特定于帖子的标签我不想要。 (标签存储为字符串)请参阅屏幕。
如何将其设置为仅向我显示我悬停的特定标记而不是帖子中的所有标记?
枝条
{% for blog in pagination %}
<p>Tags: <span class="highlight"><a href="{{ path('AcmeDemoBundle_tag', { 'tag': blog.tags }) }}">{{ blog.tags }}</a></span></p><br><br>
{% endfor %}
控制器
public function indexAction($tag = null)
{
// Search function using code from Services/Search.php
$query = $this->get('search');
$results = $query->search();
$em = $this->getDoctrine()->getManager();
$blogs = $em->getRepository('AcmeDemoBundle:Blog')
->getBlogs();
// Get all tags
$tags = $em->getRepository('AcmeDemoBundle:Blog')
->getTags();
// Get all posts by tag
$postTags = $em->getRepository('AcmeDemoBundle:Blog')
->getPostsByTags($tag);
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$blogs,
$this->get('request')->query->get('page', 1)/*page number*/,
5/*limit per page*/
);
return array(
'blogs' => $blogs,
'query' => $query,
'results' => $results,
'tags' => $tags,
'postTags' => $postTags,
'pagination' => $pagination,
);
}
public function tagAction($tag = null)
{
$em = $this->getDoctrine()->getManager();
$tags = $em->getRepository('AcmeDemoBundle:Blog')
->getPostsByTags($tag);
if (!$tags) {
throw $this->createNotFoundException('Unable to find blog posts');
}
return array(
'tags' => $tags,
);
}
答案 0 :(得分:1)
注意到您使用的代码:
{%for blog in pagination%}
标签:{{blog.tags}}
{%endfor%} 这不是推荐的方式。
正确的方法是你必须使用嵌套循环,标签链接应该是这样的:
TAG1 TAG2 ...
将所有标记存储在一个字段中并用逗号或其他内容分隔是绝不是一个好主意:
Book1 | tag1,tag2,tag3,...
但建议这样做:
Book1 | TAG1 Book2 | TAG2 ...
希望这会有所帮助。