gpt4 book ai didi

php - 在 Drupal 7 中向 View 添加自定义过滤器

转载 作者:可可西里 更新时间:2023-11-01 13:23:21 26 4
gpt4 key购买 nike

我正在使用 Drupal 7,我想在 View 中添加一个新过滤器。

我有一个包含两个字段的自定义表“clicks”; nid 和 clicks_left。

过滤器应该只包含一个复选框“只显示剩余点击的节点”。所以过滤器应该加入节点并点击 nid..

我已经阅读了数千页的自定义过滤器,但无法让它发挥作用 =)

拜托,有人可以给我看一个工作示例以便我理解吗?

到目前为止,过滤器已显示在过滤器下方,但我需要添加什么才能进行连接并获取复选框?相关代码如下:

文件 clicks_views.inc:

function clicks_views_data() {
$data = array();

$data['clicks']['clicks_filter'] = array(
'group' => t('Clicks'),
'title' => t('Clicks left'),
'help' => t('Filter any Views based on clicks left'),
'filter' => array(
'field' => 'clicks_left',
'handler' => 'clicks_handler_filter',
),
);

return $data;
}

文件 clicks_handler_filter.inc:

<?php
class clicks_handler_filter extends views_handler_filter {

???

};

我知道这两个函数都是错误的;)

最佳答案

好的,我找到了解决方案。对于任何需要它的人:

在 clicks.module 中

function clicks_views_api() {
return array(
'api' => 2,
'path' => drupal_get_path('module', 'clicks') . '/includes'
);
}

在 clicks.views.inc 中

function clicks_views_handlers() {
return array(
'info' => array(
'path' => drupal_get_path('module', 'clicks') . '/includes', // path to view files
),
'handlers' => array(
// register our custom filter, with the class/file name and parent class
'clicks_handler_filter' => array(
'parent' => 'views_handler_filter',
)
),
);
}

function clicks_views_data() {
$data = array();

if(module_exists('clicks')) {
$data['node']['clicks'] = array(
'group' => t('Clicks'),
'title' => t('Clicks left'),
'help' => t('Filter any Views based on clicks left'),
'filter' => array(
'handler' => 'clicks_handler_filter',
),
);
}
return $data;
}

在 clicks_handler_filter.inc 中

class clicks_handler_filter extends views_handler_filter {

function admin_summary() { }
function operator_form() { }
function query() {
$table = $this->ensure_my_table();
$join = new views_join();
$join->construct('clicks', $this->table_alias, 'nid', 'nid');
$this->query->ensure_table('clicks', $this->relationship, $join);
$this->query->add_where($this->options['group'], "clicks.clicks_left", 0, ">");
}

}

这让我有可能添加一个过滤器“点击次数”,如果启用该过滤器,将隐藏所有没有剩余点击次数的结果 (clicks_left > 0)

关于php - 在 Drupal 7 中向 View 添加自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7346148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com