ezplatform отображает ссылки с URL-адресом и именем объекта из мультиреляционного элемента контента в типе контента

Кто-нибудь знает сейчас, чтобы создать собственный тип представления для платформы EZ? Значение по умолчанию 3 было исчерпано, и нам нужен новый для ссылки
Кроме того, кто-нибудь знает, как использовать render( controller( с пользовательским шаблоном, поскольку это также разрешило бы блок прямо сейчас.

По сути, у нас есть мультиреляционное поле в используемом объекте контента, и нам нужно напечатать ссылки на все связанные contentIds, путь работает отлично, но мы не можем найти способ извлечь имя объекта контента для ссылки, не выполнив несколько Прикольная логика перехода в параметрах.

EG: В качестве хака пока мы можем передать «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 шаблон для всех типов контента, поэтому все, что нам нужно сделать, это перебрать реляционное поле и напечатать ссылки (как единственное, что доступно в поле контента: «назначение» иды «). Я уверен, что раньше в документации была эта опция, но я больше не могу ее найти, например:

{% 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 будет просто напечатать ссылку:

<a href="{{ path( "ez_urlalias", {"contentId": id} ) }}">
{{ ez_field_value( content, "name" ) }}
</a>

Если использование пользовательского tpl невозможно с render (controller ( помощник тогда новый пользовательский тип представления также исправит эту проблему, но я не могу найти документацию для них.

0

Решение

Вы можете создать функция ветки это сделало бы это. У нас есть что-то вроде этого:

Определение:

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);
}

который позволяет вам предоставить либо идентификатор контента, информацию о контенте или сам контент, и возвращает переведенное имя контента

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]