ezplatform 呈现内容类型中多关系内容项中 url 和对象名称的链接
ezplatform render links with url and object name from multi-relational content item in content type
现在有人知道为 ez 平台创建自定义视图类型吗?默认的 3 个已经用完了,我们需要一个新的 'link'
或者,有谁知道如何将 render( controller(
与自定义模板一起使用,因为这也会立即解决块。
基本上,我们在使用的内容对象中有一个多关系字段,我们需要将 links 打印到所有相关的 contentIds,路径很好,但我们找不到提取名称的方法link 的内容对象,而无需执行一些相当时髦的 tpl 逻辑来传递参数。
EG:作为一个 hack,我们现在可以将 "embed_type" 作为自定义参数传入 render(controller("ez_content:viewAction"
来为特定内容类型和视图类型的内容对象拉入备用视图.
{% if embed_type is defined %}
{% include "embed/#{embed_type}.html.twig" %}
{% else %}
<h1>{{ ez_field_value( content, 'name') }}</h1>
{% endif %}
然而,这非常难看,我们真正想做的是对所有内容类型使用 1 个模板,所以我们需要做的就是遍历关系字段并打印 links(作为内容字段中唯一可用的内容:"destination ids")。我确定文档中曾经有这个选项,但我再也找不到了,例如:
{% set links = ez_field_value( footer, "first_links_row" ).destinationContentIds%}
{% for id in links %}
{{ render(controller("ez_content:viewAction", {"contentId": id, "template": "link.html.twig"})) }}
{% endfor %}
其中 link.html.twig 会简单地打印 link:
<a href="{{ path( "ez_urlalias", {"contentId": id} ) }}">
{{ ez_field_value( content, "name" ) }}
</a>
如果无法通过 render (controller (
帮助程序使用自定义 tpl,那么新的自定义视图类型也可以解决此问题,但我找不到任何一个的文档。
您可以创建一个 twig function 来做到这一点。我们有这样的东西:
定义:
new Twig_SimpleFunction(
'content_name',
array($this, 'getContentName')
),
实施:
public function getContentName($content, $forcedLanguage = null)
{
if (!$content instanceof Content && !$content instanceof ContentInfo) {
$contentInfo = $this->repository->getContentService()->loadContentInfo($content);
} elseif ($content instanceof Content) {
$contentInfo = $content->contentInfo;
} else {
$contentInfo = $content;
}
return $this->translationHelper->getTranslatedContentNameByContentInfo($contentInfo, $forcedLanguage);
}
它使您能够提供内容 ID、内容信息或内容本身,并且它returns 翻译的内容名称
现在有人知道为 ez 平台创建自定义视图类型吗?默认的 3 个已经用完了,我们需要一个新的 'link'
或者,有谁知道如何将 render( controller(
与自定义模板一起使用,因为这也会立即解决块。
基本上,我们在使用的内容对象中有一个多关系字段,我们需要将 links 打印到所有相关的 contentIds,路径很好,但我们找不到提取名称的方法link 的内容对象,而无需执行一些相当时髦的 tpl 逻辑来传递参数。
EG:作为一个 hack,我们现在可以将 "embed_type" 作为自定义参数传入 render(controller("ez_content:viewAction"
来为特定内容类型和视图类型的内容对象拉入备用视图.
{% if embed_type is defined %}
{% include "embed/#{embed_type}.html.twig" %}
{% else %}
<h1>{{ ez_field_value( content, 'name') }}</h1>
{% endif %}
然而,这非常难看,我们真正想做的是对所有内容类型使用 1 个模板,所以我们需要做的就是遍历关系字段并打印 links(作为内容字段中唯一可用的内容:"destination ids")。我确定文档中曾经有这个选项,但我再也找不到了,例如:
{% set links = ez_field_value( footer, "first_links_row" ).destinationContentIds%}
{% for id in links %}
{{ render(controller("ez_content:viewAction", {"contentId": id, "template": "link.html.twig"})) }}
{% endfor %}
其中 link.html.twig 会简单地打印 link:
<a href="{{ path( "ez_urlalias", {"contentId": id} ) }}">
{{ ez_field_value( content, "name" ) }}
</a>
如果无法通过 render (controller (
帮助程序使用自定义 tpl,那么新的自定义视图类型也可以解决此问题,但我找不到任何一个的文档。
您可以创建一个 twig function 来做到这一点。我们有这样的东西:
定义:
new Twig_SimpleFunction(
'content_name',
array($this, 'getContentName')
),
实施:
public function getContentName($content, $forcedLanguage = null)
{
if (!$content instanceof Content && !$content instanceof ContentInfo) {
$contentInfo = $this->repository->getContentService()->loadContentInfo($content);
} elseif ($content instanceof Content) {
$contentInfo = $content->contentInfo;
} else {
$contentInfo = $content;
}
return $this->translationHelper->getTranslatedContentNameByContentInfo($contentInfo, $forcedLanguage);
}
它使您能够提供内容 ID、内容信息或内容本身,并且它returns 翻译的内容名称