我目前正在尝试检索文章页面(单个帖子)上的相关帖子列表。我已经在/Block/Post/ListPost.php中创建了一个新函数
public function getRelatedPosts()
{
$posts = $this->getPosts();
die($this->getCategoryId());
return $this->_postCollection;
}但是,当我尝试输出getCategoryId时,什么也得不到。我也不确定如何将类别过滤器应用于帖子集合。
这里有人能给点建议吗?
发布于 2017-06-28 20:08:27
我不确定您是从哪里获得getCategoryId方法的,但这不是ListPost块类的一部分,因此无法工作。你不能只是发明这样的方法。
您应该检查block类中有哪些方法可用。一种简单的方法是在不加载文件的情况下将以下PHP添加到类中:
echo sprintf('<pre>%s</pre>', print_r(get_class_methods($this)));
exit;你没有指定帖子应该以什么方式关联,但我猜你想要从相同的类别中获取帖子。要做到这一点,一种选择是加载帖子的主要类别,然后基于此获取帖子集合。如果查看Post类文件,您将看到getParentTerm($taxonomy)方法。
if ($category = $post->getParentTerm('category')) {
$relatedPosts = $category->getPostCollection();
// Remove the current post from the collection
$relatedPosts->addFieldToFilter('ID', array('neq' => $post->getId()));
}您应该始终查看您正在使用的类文件。这就是开源的美妙之处。您可以从字面上看到每个对象都有哪些方法可用,甚至可以看到它们是如何工作的。
https://stackoverflow.com/questions/44782023
复制相似问题