Trong Drupal 8, tôi có một quan điểm tập hợp tất cả các nút được xây dựng trong Gallery Hours
loại nội dung của tôi . Loại nội dung có một trường được gọi là View Order
tôi sử dụng cho chế độ xem khác hiển thị danh sách giờ thư viện theo thứ tự đó. Những gì tôi đang cố gắng làm là xây dựng một khung nhìn khác để kiểm tra giờ trưng bày cho ngày hôm nay. Chẳng hạn, hôm nay là thứ ba, vì vậy tôi muốn khung nhìn hiển thị giờ trưng bày cho thứ ba.
Suy nghĩ của tôi là tạo ra một tùy chọn bộ lọc tùy chỉnh để so sánh giá trị số của một trường, chẳng hạn như trường Xem thứ tự của tôi được đặt thành 1 = Chủ nhật, 2 = Thứ hai, v.v., với DATE_FORMAT(NOW(),"%N")
. Đây là bước đột phá đầu tiên của tôi vào việc phát triển mô-đun Drupal tùy chỉnh và đang quay bánh xe của tôi. Bất kỳ và tất cả các đề nghị chào đón.
Một điều tôi nghĩ rằng tôi có chính xác là các tập tin yaml của tôi.
todaydate.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
todaydate.routing.yml
todaysdate:
defaults:
_controller: Drupal\todaysdate\Plugin\Filter\todays_date_handler_filter_numeric::operators
requirements:
_permission: 'access content'
Nơi tôi thực sự bối rối là nơi để đi từ đó. Tôi đang cố gắng ghép một lớp mở rộng NumericFilter
và thêm một toán tử mới sau đó thêm vào biểu thức WHERE với biểu mẫu ngày tháng mà tôi đang tìm kiếm.
Dù sao, đây là nỗ lực của tôi trong việc tạo bộ lọc. Tôi không nhận được bất kỳ lỗi nào, nhưng tôi cũng không nhận được toán tử mới trên các trường số của tôi trong chế độ xem của tôi.
today_date_handler_filter_numeric.php
<?php
/**
* @file
* Provides views filter option for the Todays Date module.
*/
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")');
}
}
}
Cảm ơn tất cả các bạn trước cho bất kỳ hỗ trợ bạn có thể cung cấp. Tôi không thể nói cho bạn biết StackOverflow đã giúp tôi bao nhiêu lần trong quá khứ.