我有以下代码来检索我的EzPublish 5.4网站上的主菜单:
$query = new LocationQuery();
$query->query = new Criterion\LogicalAnd(
array(
new Criterion\ContentTypeIdentifier( $this->getTopMenuContentTypeIdentifierList() ),
new Criterion\Visibility( Criterion\Visibility::VISIBLE ),
new Criterion\Location\Depth(
Criterion\Operator::BETWEEN,
array( $rootLocation->depth + 1, $rootLocation->depth + 3 )
),
new Criterion\Subtree( $rootLocation->pathString ),
new Criterion\LanguageCode( $configResolver->getParameter( 'languages' ) )
)
);
$query->sortClauses = array( new Query\SortClause\Location\Depth(), new Query\SortClause\Location\Priority() );
$main_menu = $searchService->findLocations( $query )->searchHits;
这很有效,我得到了我期望的所有结果,现在我将这个数组提供给我的Twig模板:
{% for item in menu %}
<a href="#menuitemurl">Menu item title in current language</a>
{% endfor %}
两个问题: 1:如何获取要在Twig中呈现的此SearchHit的URL?我不知道从哪里得到这个,谷歌没有帮助 2:如何以当前站点的语言获取SearchHit的标题?我的网站是多语言的,每个项目都有瑞典文和英文两种版本,但我只能用上面的代码获得英文标题,即使我使用的是瑞典语版本
答案 0 :(得分:0)
您可以加载相应的内容对象:
$contentList = [];
foreach ( $searchService->findLocations( $query )->searchHits as $hit )
{
$contentList[] = $this->contentService->loadContent( $hit->valueObject->contentInfo->id );
};
并将$contentList[]
传递给模板。然后使用它来获取内容完整的URL。
或根据您的searchHits中的内容ID在模板中呈现内容。