在扩展新闻的列表视图中,我们需要更改排序顺序和排序方向的链接。是否有可能通过获取参数来更改两者?我取消了"禁用覆盖需求"选项,并尝试了一些组合,如
?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的级别上完成的。
然而,有不同的选项可以从前端进行排序:
-
在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-按排序 -
其他单独的解决方案需要用PHP编程,可以基于钩子和信号,新闻手册包括几个可能有用的章节:
- 信号
- 挂钩
- 基于EXT:news的扩展
-
此外,可能已经存在解决排序工作的扩展,但我不知道。你可以搜索与新闻相关的扩展。我可以想象eventnews或dataviewer可能会很有用,但我从未检查过这一点,这些扩展可能根本不会有用。
此外,您可能会在进一步搜索中发现另一个有用的扩展。如果是,请告知;-( -
然后仍然有一种选择,即以某种方式可以以不同的方式解决所需的行为,也许它没有,或者记录不好,或者我错过了它
考虑一下,如果您使用分页,尤其是基于AJAX的分页,您可能仍然需要进行一些调整。
我找到了问题的原因和解决方法。
原因是flexform中默认的排序方式:按标题排序。GET参数orderBy无法覆盖flexform中的默认排序。如果在flexform中选择默认排序,orderBy参数将被忽略,但orderDirection参数可以正常工作。结果是令人困惑但一致的:内容总是按照默认排序进行排序,但使用不同的sortOrders。
删除flexform中的默认排序后,所有工作都如预期。
我认为这是一种错误;我将在新闻的bug跟踪器中发布一个问题。