Кто-нибудь знает сейчас, чтобы создать собственный тип представления для платформы 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 (
помощник тогда новый пользовательский тип представления также исправит эту проблему, но я не могу найти документацию для них.
Вы можете создать функция ветки это сделало бы это. У нас есть что-то вроде этого:
Определение:
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);
}
который позволяет вам предоставить либо идентификатор контента, информацию о контенте или сам контент, и возвращает переведенное имя контента
Других решений пока нет …