我有一个视图,它收集了我的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过去曾多少次帮助过我。