TYPO3,新闻:通过get参数更改排序顺序和方向



在扩展新闻的列表视图中,我们需要更改排序顺序和排序方向的链接。是否有可能通过获取参数来更改两者?我取消了"禁用覆盖需求"选项,并尝试了一些组合,如

?tx_news_pi1[orderDirection]=asc
?tx_news_pi1[settings][orderDirection]=asc

但这行不通。

谢谢!

tx_news_pi1[overwriteDemand][order]=title desc适用于我的

也许可以试试:

tx_news_pi1[oversiteDemand][orderDirection]=asc

(虽然我真的不确定orderDirection是否正确,但可以检查手册/代码(

在我看来,没有直观的选项可以在流体模板中包括排序,因为所有排序都是在TypoScript和FlexForm的级别上完成的。

然而,有不同的选项可以从前端进行排序:

  1. 在TypoScript中,您可以根据当前URL-参数设置排序参数,最简单的方法是根据条件解决问题,也可以自由定义自己的参数,而不必拘泥于新闻-API
    在任何情况下,您都应该使用viewHelper创建用于排序的URL,该viewHelper始终附加cHash并计算正确。

    TypoScript:

    #######
    ## Here you transfer the URL-parameters for sorting to the TypoScript-settings
    ## and also assure that only predefined values are accepted
    #######
    [globalVar = _GET|tx_news_pi1|orderBy = title]
    plugin.tx_news.settings.orderBy = title
    [globalVar = _GET|tx_news_pi1|orderBy = datetime]
    plugin.tx_news.settings.orderBy = datetime
    [globalVar = _GET|tx_news_pi1|orderBy = tstamp]
    plugin.tx_news.settings.orderBy = tstamp
    [globalVar = _GET|tx_news_pi1|orderBy = crdate]
    plugin.tx_news.settings.orderBy = crdate
    [global]
    [globalVar = _GET|tx_news_pi1|sort = desc]
    plugin.tx_news.settings.orderDirection = desc
    [else]
    plugin.tx_news.settings.orderDirection = asc
    [global]
    

    流体:

    <f:link.action action="list" addQueryString="&tx_news_pi1[orderBy]=title&tx_news_pi1[sort]=asc">Sort by title: asc</f:link.action>
    <f:link.action action="list" addQueryString="&tx_news_pi1[orderBy]=title&tx_news_pi1[sort]=desc">Sort by title: desc</f:link.action>
    

    这个解决方案没有经过测试,可能仍然需要调整一些东西,但总的来说,它应该是有效的
    与缓存相关的问题通常与新闻记录相同,至少与任何必需的设置有关
    按其他字段排序需要进一步的步骤,如下所述:https://docs.typo3.org/typo3cms/extensions/news/DeveloperManual/ExtendNews/ExtendFlexforms/Index.html#selectbox-按排序

  2. 其他单独的解决方案需要用PHP编程,可以基于钩子和信号,新闻手册包括几个可能有用的章节:

    • 信号
    • 挂钩
    • 基于EXT:news的扩展
  3. 此外,可能已经存在解决排序工作的扩展,但我不知道。你可以搜索与新闻相关的扩展。我可以想象eventnews或dataviewer可能会很有用,但我从未检查过这一点,这些扩展可能根本不会有用。
    此外,您可能会在进一步搜索中发现另一个有用的扩展。如果是,请告知;-(

  4. 然后仍然有一种选择,即以某种方式可以以不同的方式解决所需的行为,也许它没有,或者记录不好,或者我错过了它

考虑一下,如果您使用分页,尤其是基于AJAX的分页,您可能仍然需要进行一些调整。

我找到了问题的原因和解决方法。

原因是flexform中默认的排序方式:按标题排序。GET参数orderBy无法覆盖flexform中的默认排序。如果在flexform中选择默认排序,orderBy参数将被忽略,但orderDirection参数可以正常工作。结果是令人困惑但一致的:内容总是按照默认排序进行排序,但使用不同的sortOrders。

删除flexform中的默认排序后,所有工作都如预期。

我认为这是一种错误;我将在新闻的bug跟踪器中发布一个问题。

最新更新