【问题标题】:v:link:typolink with aditionalParams to set language via flux.field.selectv:link:typolink 与 aditionalParams 通过flux.field.select 设置语言
【发布时间】:2016-04-12 14:14:26
【问题描述】:

我尝试创建一个内容元素来创建指向其他语言的链接。我认为仅使用内容元素就可以做到这一点,并且我不需要自己的视图助手。

到目前为止我所拥有的:

{namespace flux=FluidTYPO3\Flux\ViewHelpers}
{namespace v=FluidTYPO3\Vhs\ViewHelpers}

    <f:layout name="Content" />

    <f:section name="Configuration">
        <flux:form id="landingpage-language" label="Landingpage Language" options="{icon: 'Icons/Content/Example.gif', group: 'My Ele'}">
            <flux:field.input name="title" label="Title"/>
        </flux:form>
        <flux:form.section name="languages" label="Languages">
            <flux:form.object name="language" label="Language">
                <flux:field.input name="languagename" label="Language Visible Name"/>
                <flux:field.select name="language" label="System Language" items="{
                           0:{0:'English',1:'&L=1'},
                           1:{0:'German',1:'&L=2'}
                           }" />
                <flux:field.input name="url" label="URL">
                    <flux:wizard.link/>
                </flux:field.input>
            </flux:form.object>
        </flux:form.section>
    </f:section>

    <f:section name="Preview">
        Preview
    </f:section>

    <f:section name="Main">
        <h2>{title}</h2>
        <ul  class="languages">
            <f:for each="{languages}" as="langele"> 
                <li><v:link.typolink configuration="{parameter: langele.language.url, additionalParams: langele.language.language}">{langele.language.languagename} {langele.language.language}</v:link.typolink></li>
            </f:for>
        </ul>
    </f:section>

这可行,但我有 2 个问题我还不能解决:

1.附加参数

现在选择的项目具有&amp;L=1 之类的值。我必须这样做,因为我无法在typolink 配置中直接添加&amp;L=。我想要的是这样的:

<v:link.typolink configuration="{parameter: langele.language.url, additionalParams: '&L='langele.language.language}">

有了这个,我可以只在选择项中使用 ID。 这可能吗?如果可以,怎么做?

2。选择项目查询

文档说可以用查询填充flux:field.select 的项目。但我找不到任何例子。我想要的是在这个选择框中以typo3 配置的所有语言。 这可能吗?如果可以,怎么做?

【问题讨论】:

    标签: typo3 typo3-7.6.x typolink


    【解决方案1】:

    通量形式的修正:

    <flux:field.select name="language" label="System Language" 
    items="{1:'English',2:'German'}" />
    

    您可以使用流畅的排版链接代替 vhs viewhelper

    <f:for each="{languages}" as="langele"> 
         <li><f:link.typolink parameter="{langele.language.url}" additionalParams="&L={langele.language.language}">{langele.language.languagename} {langele.language.language}</f:link.typolink></li>
    </f:for>
    

    但根据您的需要,我建议您使用流畅的页面链接:

    <f:for each="{languages}" as="langele">
        <li><f:link.page pageUid="{langele.language.url}" additionalParams="{L:'{langele.language.language}'}">{langele.language.languagename} {langele.language.language}</f:link.page></li>
    </f:for>
    

    【讨论】:

    • 谢谢,效果很好。对于通量形式,我想当我以这种方式使用它时(更短更好)我不能使用字符串作为键值?您还知道如何使用flux:field.select 中配置的语言吗?
    • 字符串作为键值 - 你的意思是“英语”和“德语”吗?你的问题我不明白“你知道如何在flux:field.select中使用配置的语言吗?”
    • 我的意思是'de':'German'。我的问题是原始线程中的第二个问题2. select items Query。基本上我想在这个选择字段中使用typo3中配置的语言。
    • 对于 'de' 或 'en' 那么你必须使用 realurl 扩展或其他漂亮的 url,在 realurl 配置文件中你可以设置 "preVars" 像 '1' => 数组 ('GETvar' = > 'L', 'valueMap' => 数组 ('en' => '1', 'de' => '2'), 'noMatch' => 'bypass'),
    • 关于您的第二个问题:您已经根据需要创建了自定义元素,因此您可以将该元素用作全局元素或用于特定页面我的意思是您可以在一个页面中插入元素并将其用于所有或您必须为所有页面插入
    猜你喜欢
    • 1970-01-01
    • 2011-05-09
    • 2021-06-27
    • 2014-04-23
    • 2015-04-25
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多