【问题标题】:After extending NEWS with a new date field, how can I list from this news field使用新日期字段扩展 NEWS 后,如何从该新闻字段中列出
【发布时间】:2019-02-27 16:29:31
【问题描述】:

我已使用新日期字段 (eventStartDate) 扩展 NEWS,我想列出此日期大于 X 的所有新闻。

此时,WHERE 子句检查 tx_news_domain_model_news.datetime 而不是我的新字段 tx_news_domain_model_news.eventStartDate。

这就是我得到的

 whereClause => '(tx_news_domain_model_news.datetime >= '1551200578' 
 AND tx_news_domain_model_news.pid IN ('123456')) 
 AND (tx_news_domain_model_news.type='Tx_SLNewsExtended_News')'

这就是我想要的

 whereClause => '(tx_news_domain_model_news.eventStartDate>= '1551200578' 
 AND tx_news_domain_model_news.pid IN ('123456')) 
 AND (tx_news_domain_model_news.type='Tx_SLNewsExtended_News')'

我设置

settings.datefield = eventStartDate

没有效果。

我正在使用 NEWS 6.3 和 TYPO3 7.6

【问题讨论】:

    标签: typo3 typo3-7.6.x tx-news


    【解决方案1】:

    我猜它失败是因为 TCA 检查,请参阅 https://github.com/georgringer/news/blob/master/Classes/Domain/Model/Dto/NewsDemand.php#L556-L558

    所以字段必须写成event_start_date

    【讨论】:

    • 在 6.3 中 getDateField 是 public function getDateField() { if (empty($this->dateField) || in_array($this->dateField, ['datetime', 'archive'])) { return $this->dateField; } else { return ''; } }
    【解决方案2】:

    在 NEWS 6.3 中返回空字符串

    public function getDateField()
    {
        if (empty($this->dateField) || in_array($this->dateField, ['datetime', 'archive'])) {
            return $this->dateField;
        } else {
            return '';
        }
    }
    

    可以使用 NEWS 7.0

    public function getDateField()
    {
        if (in_array($this->dateField, ['datetime', 'archive'])
            || isset($GLOBALS['TCA']['tx_news_domain_model_news']['columns'][$this->dateField])) {
            return $this->dateField;
        }
        return '';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多