Drupal 8:自定义视图过滤器

时间:2016-05-10 14:37:34

标签: php drupal-8

我有一个视图,它收集了我的Gallery Hours内容类型中构建的所有节点。内容类型有一个名为View Order的字段,我用于另一个视图,该视图按顺序显示图库小时列表。我想要做的是建立另一个视图来检查今天的画廊时间。例如,今天是星期二,所以我希望该视图显示星期二的画廊时间。

我的想法是创建一个自定义过滤器选项,用于比较字段的数值,例如我的View Order字段,它设置为1 = Sunday,2 = Monday等,DATE_FORMAT(NOW(),“ %N“)。这是我第一次涉足自定义Drupal模块开发并且正在旋转我的车轮。任何和所有建议都欢迎。

我认为我认为正确的一件事是我的yaml文件。

todaysdate.info.yml

name: Todays Date Filter module
description: 'Creates a filter to search by todays day of the week.'
type: module
core: 8.x
package: SMA Modules

todaysdate.routing.yml

todaysdate:
  defaults:
    _controller: Drupal\todaysdate\Plugin\Filter\todays_date_handler_filter_numeric::operators
  requirements:
    _permission: 'access content'

我真的很困惑的地方是去哪里。我已经用我的类创建了一个PHP文件用于过滤器,但是它去了哪里?它可以与我的yaml文件处于同一级别,还是需要将它放在特定目录中,具体取决于它是过滤器还是字段?我目前在todaysdate \ src \ Plugin \ Filter

中有它

Anyhoo,这是我尝试创建过滤器。

todays_date_handler_filter_numeric.php

<?php

/**
 * @file
 * Provides views filter option for the Todays Date module.
 *
 * @ingroup views_filter_handlers
 *
 * @ViewsFilter("todaysdate_views_query_alter")
 */

namespace Drupal\todaysdate\Plugin\Filter;

use Drupal\views\Plugin\views\display\DisplayPluginBase;
use Drupal\views\Plugin\views\filter\NumericFilter;
use Drupal\views\Plugin\views\filter\InOperator;

class todays_date_handler_filter_numeric extends NumericFilter {
  function operators(){
    $operators = parent::operators();
    $operators += array(
      'todays date' => array(
        'title' => $this->t('Is this day of the week'),
        'short' => $this->t('todays date'),
        'method' => 'op_day_of_week',
        'values' => 0,
      )
    );
    return $operators;

    function op_day_of_week($field) {
      $this->query->addWhereExpression($this->options['group'], 'DATE_FORMAT(NOW(),"%N")');
    }
  }
}

提前感谢您提供任何帮助。我无法告诉你StackOverflow过去曾多少次帮助过我。

0 个答案:

没有答案