EzPublish在Twig中呈现searchHits

时间:2015-08-31 07:12:26

标签: php symfony twig ezpublish

我有以下代码来检索我的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的标题?我的网站是多语言的,每个项目都有瑞典文和英文两种版本,但我只能用上面的代码获得英文标题,即使我使用的是瑞典语版本

1 个答案:

答案 0 :(得分:0)

您可以加载相应的内容对象:

$contentList = [];
foreach ( $searchService->findLocations( $query )->searchHits as $hit )
{
    $contentList[] = $this->contentService->loadContent( $hit->valueObject->contentInfo->id );
};

并将$contentList[]传递给模板。然后使用它来获取内容完整的URL。

或根据您的searchHits中的内容ID在模板中呈现内容。