【问题标题】:TYPO3 Ext. cal: adapting the search formTYPO3 分机cal:调整搜索表单
【发布时间】:2017-07-09 19:27:12
【问题描述】:

默认情况下,搜索表单包含以下输入:

我想要一个带有月份选项的选择框,而不是两个输入“Startdatum”和“Enddatum”。

在 Typo3conf\ext\cal\Resources\Private\Templates\v2\search_event.tmpl

搜索只有 post 参数 start_day 和 end_date。

如果我只能选择和发布月份值,如何实现 am month selextbox?

我必须在此处进行更改吗? Typo3conf\ext\cal\Classes\View\SearchViews.php

我可以通过自己的 cal 扩展扩展来实现这一点吗?

【问题讨论】:

  • 您至少需要哪个 cal 插件视图(搜索、月、周、日列表...)?您可以尝试使用参数 tx_cal_controller[month] 编写自己的月份选择表单。
  • 我可以构建一个选择宽度 tx_cal_controller[month] 而不是 tx_cal_controller[start_day] 和 tx_cal_controller[end_day]。但是由于新参数,我必须更改 SearchViews.php 中的函数 drawSearchEventResult()。我不知道如何在 cal 扩展扩展中做到这一点
  • 没错。但是你真的需要searchView吗? searchView 列出了匹配搜索过滤器的事件。 ListView 也列出事件,但如果你添加一些打字稿,可以处理像 tx_cal_controller[month] 这样的参数。我可以在这里添加一个示例。
  • 请添加示例。我需要一个带有类别、事件所有者和一年中月份的事件过滤器。我也可以为此使用 listView,但为什么 listView 更好呢?例如,如果我在列表视图中将此作为 get 参数添加,它不起作用:&tx_cal_controller[month]=08

标签: typo3 typo3-extensions


【解决方案1】:

假设您使用插件类型的内容元素并将视图设置为“列表”并添加您自己的月份表单选择,它会生成带有参数的请求

?tx_cal_controller[month]=08

然后您可以使用拼写条件操作列表结果以仅显示来自当前年份请求月份的事件:

[globalVar = GP:tx_cal_controller|month >0]
    plugin.tx_cal_controller.view.list.useCustomStarttime = 1
    plugin.tx_cal_controller.view.list.useCustomEndtime = 1
    plugin.tx_cal_controller.view.list.customStarttimeRelativeToGetdate = 1
    plugin.tx_cal_controller.view.list.customEndtimeRelativeToGetdate = 1
    plugin.tx_cal_controller.view.list.starttime = monthstart
    plugin.tx_cal_controller.view.list.endtime = monthend
[global]

要将您自己的类别过滤器用于列表视图,您需要调整/扩展类 \TYPO3\CMS\Cal\Controller\Controller::initConfigs() 以调用类似的参数

?tx_cal_controller[category]=2

进入全局配置之类

/**
 * Init configurations
 * Change category mode in listview, if category given in GET params
 * Used for category filter by selection
 */
public function initConfigs() {
    parent::initConfigs();
    if ($this->piVars['category'] && $this->conf ['view'] === 'list') {
        $this->conf ['view.'] ['categoryMode'] = 4;
        $this->conf ['view.'] ['category'] = $this->piVars['category'];
    }
} 

对于事件所有者的工作过滤器,我没有例子。

【讨论】:

  • 我正在使用 TYPO3 7.6.18 和 cal 1.10.3。基本的 css 样式和无流体模板。月份的例子对我不起作用。附加 ?tx_cal_controller[month]=08 时列表视图没有变化 我可以在视图控制器中调试它吗?第二个示例适用于我,但没有扩展您的课程。
  • 如果我将其添加到我的 ts:plugin.tx_cal_controller.view.list.useGetdate = 1 我可以通过 ?tx_cal_controller[month]=08 更改月份,但在列表视图中只针对一天,而不是一个月。
  • [globalVar = GP:tx_cal_controller|month >0] ... plugin.tx_cal_controller.view.list.useGetdate = 1 ... [else] ... plugin.tx_cal_controller.view.list。 useGetdate = 0 ... [全局]
  • 好的,谢谢。现在它起作用了。但是如果我添加我的第三个参数:tx_cal_controller[organizer]=1,这不起作用。与 tx_cal_controller[organizer_ids]=1 相同。唯一可以使用此参数的是 search_view
  • 正如我所提到的,对于事件所有者的工作过滤器,我没有示例。也用于进一步过滤(位置等)。您应该尝试在 -initConfigs()- 方法中调用它。但请记住,您确实开始要求仅进行月份过滤。
猜你喜欢
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多