#typo3 #fluid #typo3-6.2.x
#typo3 #текучий #typo3-6.2.x
Вопрос:
Как я могу проверить, имеет ли страница определенный идентификатор, и если true, вывести текст?
Я думал о чем-то подобном этому (псевдокод):
<f:if condition="{current.page.uid}=='78'">
<p>I am Page 78</p>
</f:if>
Ответ №1:
Если вы хотите использовать это в FLUIDTEMPLATE ( page.10 = FLUIDTEMPLATE
в качестве примера), вы можете получить доступ к данным страницы с {data.uid}
помощью .
<f:if condition="{data.uid} == 78">
<p>I am Page 78</p>
</f:if>
В расширении extbase вы можете сделать это так, как говорит @dimitri-l.
Комментарии:
1. Это
FLUIDTEMPLATE
без подчеркивания.
Ответ №2:
Вы можете получить текущий идентификатор страницы с помощью объекта typoscript
typoscript:
lib.currentPageId = TEXT
lib.currentPageId.data = TSFE:id
ЖИДКОСТЬ:
<f:if condition="{f:cObject(typoscriptObjectPath:'lib.currentPageId')}==78">
<p>I am Page 78</p>
</f:if>
Ответ №3:
Вы можете создать переменную в своей «настройке страницы TS», как здесь :
variables {
pageUid = TEXT
pageUid.field = uid
...
}
Таким образом, вы можете создать свое жидкое состояние, как здесь :
<f:if condition="{pageUid}=={settings.homepid}">
<p>I am Page 78</p>
</f:if>
например…
Ответ №4:
Вам нужно будет передать идентификатор страницы в шаблон fluid. Если вы используете контроллер Extbase, вы можете перейти $GLOBALS['TSFE']->id
к своему представлению, а затем использовать условие if, как вы это делали.
$this->view->assign('pageId', $GLOBALS['TSFE']->id);
Я не уверен, возможно ли уже выполнять сравнение строк в Typo3 6.2, если нет, вы должны сравнить его таким образом:
<f:if condition="{0:pageId} == {0:'78'}>
...
</f:if>
В противном случае это чистое решение для текущих версий
<f:if condition="{pageId} == '78'>
...
</f:if>
Ответ №5:
С помощью VHS viewhelper вы можете делать это только с помощью fluid, не прибегая к помощи Typoscript:
{namespace v=FluidTYPO3VhsViewHelpers}
<f:if condition="{v:page.info(field: 'uid')} == '21'">
<f:then>
Shows only if page ID equals 21.
</f:then>
</f:if>