【问题标题】:How to generate the pagination links in Fluid by myself如何自己在 Fluid 中生成分页链接
【发布时间】:2020-07-28 12:12:16
【问题描述】:

我有一个显示记录列表的 TYPO3 扩展。由于它有 40 多页,我想提供一个额外的字母索引,让访问者可以直接跳转到字符的开头。

一般来说一切正常 - 除了第 n 页的链接。

我有流体变量cur,其中包含当前字符(例如M)和pageNumber 中的必要页码(例如23)。

我怎样才能得到正确的 url,它应该如下所示: https://mydomain.tld/path/to/list?tx_myextension_myextension[@widget_0][currentPage]=23&cHash=a6193a7eab129df4789343911221584b#jumplabel_M

要么

<a class="page-link" href="{f:uri.page(additionalParams:{tx_myextension_myextension{@widget_0:{currentPage:pageNumber}}})}#jmplabel_{cur}">{cur}</a>

也没有

<a class="page-link" href="{f:uri.page(additionalParams:{tx_myextension_myextension[@widget_0][currentPage]:pageNumber})}#jmplabel_{cur}">{cur}</a>

致电f:uri.page VH。结果是 href 参数中未替换的字符串。


<a class="page-link" href="{f:uri.page()}?tx_phonebook_phonebook[@widget_0][currentPage]={pageNumber}#jmplabel_{cur}">{cur}</a>

看起来不错,但错过了 cHash,因此导致 404 页面未找到。

【问题讨论】:

    标签: hyperlink pagination typo3 typo3-9.x


    【解决方案1】:

    在他的新闻扩展中查看 Georg Ringer 是如何做到的。实际上,这是您分页的解决方案。

    PaginateAdditionalParamsViewHelper.php:
    https://github.com/georgringer/news/blob/master/Classes/ViewHelpers/Widget/Ajax/PaginateAdditionalParamsViewHelper.php#L30

    public function render()
    {
        $page = (int)$this->arguments['page'];
        if ($page === 0) {
            return [];
        }
        $params = [
            'tx_news_pi1' => [
                '@widget_0' => [
                    'currentPage' => $page
                ]
            ]
        ];
    
        return $params;
    }
    

    在某些模板中:
    https://github.com/georgringer/news/blob/master/Resources/Private/Templates/Styles/Twb/Templates/ViewHelpers/Widget/Paginate/IndexAjax.html#L56,尤其是additionalParams 键。

    <f:widget.link data="{container:recordId,link:'{t:uri.ajaxAction(contextRecord:\'tt_content:{recordId}\', pluginName: \'pi1\',additionalParams:\'{n:widget.ajax.paginateAdditionalParams(page:0)}\')}'}">
        <f:translate key="paginate_previous" />
    </f:widget.link>
    

    【讨论】:

    • 您的回答为我提供了解决方案,但我犹豫是否接受您的回答,因为第一部分会导致死胡同(我们不能省略“@”)。并且作为解决方案的链接可能会随着时间的推移而失效。对于完整的解决方案,应复制代码。 (我可以添加我的工作代码作为进一步的答案)
    • 这里的代码太多了,我相信Georg的扩展会离开很多年;)
    • @BerndWilkeπφ 更严重的是,我在写完答案后意识到这是 TYPO3 的分页,因此,我添加了来自 News 的示例,现在清理了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2021-08-03
    • 2012-10-14
    • 2016-07-17
    • 1970-01-01
    • 2014-11-12
    • 2014-05-28
    相关资源
    最近更新 更多