【问题标题】:Sorting of news in contaocontao中的新闻排序
【发布时间】:2018-04-22 06:50:18
【问题描述】:

我正在使用来自 github 的“contao-news-sorting”模块根据排名值对我的新闻进行排序。此排名字段在 news dca 中扩展。我能够按升序对其进行排序。但问题是,当排名字段为空时。默认情况下将空值设为零,并首先显示。我实际上需要这样的空值才能显示在底部。我能为此做些什么?我的代码是

 public function fetchrankItems($newsArchives, $blnFeatured, $limit, $offset, $objModule) {

    $newsobject=  \NewsModel::findPublishedByPids($newsArchives, $blnFeatured, $limit, $offset);

    $t = \NewsModel::getTable();        
    $arrOptions = array();
    switch ($objModule->news_sorting)
    {
        case 'sort_rankid_asc':
            $arrOptions['order'] = "$t.rankid ASC";                
            break;
        case 'sort_random':
            $arrOptions['order'] = "RAND()";
            break;
        default:
            $arrOptions['order'] = "$t.date DESC";
    }
      return \NewsModel::findPublishedByPids($newsArchives, $blnFeatured, $limit, $offset, $arrOptions);       


}

【问题讨论】:

    标签: sorting contao


    【解决方案1】:

    这更像是一个 MySQL 问题,而不是 Contao 问题。例如,请参阅MySQL: Order by field, placing empty cells at end

    你可以试试下面的例子:

    $arrOptions['order'] = "IF ($t.rankid <> '', 0, 1)";
    

    【讨论】:

    • 这算不算写法?我收到 sql 错误。 $arrOptions['order'] = "$t.if(rankid '', 0, 1) ASC";
    • 您的语法错误。应该是"IF ($t.rankid &lt;&gt; '', 0, 1)"
    • 此查询是否不适用于“contao-news-sorting”模块?对我来说,它不起作用。
    • 试过 $arrOptions['order'] = "$t.IF ($t.rankid '', 0, 1) ASC";
    • 上面的查询对我来说有点困惑。所以我用这种方式写了它,它奏效了。 $arrOptions['order'] = "$t.rankid = 0, $t.rankid, $t.date DESC";
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多