过滤分类菜单块上显示的节点 -- 7 领域 和 taxonomy-terms 领域 drupal 相关 的问题

Filtering nodes shown on taxonomy menu block


4
vote

问题

中文

输入图像描述如图中一样,分类术语显示标记的节点数量术语(使用CaCaonomy_Menu模块)。该节点是类型分类广告。

是否有可能过滤掉过期的广告?我的意思是在图片中,第一个菜单项是"10th" ,其中24个节点。但我想过滤出5个过期的节点,其中包含它已过期的隐藏标志。所以应该显示为"10th(19)"

我该怎么做?

看起来像是文件caxonomy_menu.database.inc我们有这个功能:

  function _taxonomy_menu_term_count($tid) {   $result = db_select('taxonomy_index', 'tn');   $result->condition('tid', $tid);   $result->join('node', 'n', 'n.nid = tn.nid AND n.status = 1');   $result->addExpression('COUNT(n.nid)', 'term_count');   $temp = $result->execute();   $temp = $temp->fetchObject();   return $temp->term_count; }   

以及n.status我应该添加n.field_expidive检查以排除我认为。我不介意暂时破解分类菜单的代码。

英文原文

enter image description here As in the picture, the taxonomy terms are showing count of nodes tagged with the term( using taxonomy_menu module). That nodes are of type classified ads.

Is it possible to filter out expired ads ? I mean in the picture, the first menu item is "10th" with 24 nodes in it. But I want to filter out 5 nodes which have expired containing a hidden flag that it has expired. So that is should show as "10th(19)"

How can I do it?

Looks like in the file taxonomy_menu.database.inc we have this function:

function _taxonomy_menu_term_count($tid) {   $result = db_select('taxonomy_index', 'tn');   $result->condition('tid', $tid);   $result->join('node', 'n', 'n.nid = tn.nid AND n.status = 1');   $result->addExpression('COUNT(n.nid)', 'term_count');   $temp = $result->execute();   $temp = $temp->fetchObject();   return $temp->term_count; } 

Along with n.status I should add n.field_expired check to exclude I think. I wouldn't mind to temporarily hack the code of Taxonomy Menu though.

     

回答列表

1
 
vote

既然你说你"不介意暂时触摸代码" (我非常建议不要触摸并试图找到替代方式)这是我的快速解决方案,也是完成它的替代方法。

假设Field_expired是一个布尔字段(单次开/关复选框值1/0),您不使用修改。(请参阅我添加的三行),也确保您将至少一个节点重新计算以重新计算。

  function _taxonomy_menu_term_count($tid) {   $result = db_select('taxonomy_index', 'tn');   $result->condition('tid', $tid);   $result->join('node', 'n', 'n.nid = tn.nid AND n.status = 1');    $result->join('field_data_field_expired', 'fdfe', 'fdfe.entity_id = tn.nid');   $result->condition('fdfe.field_expired_value', '1', '=');   $result->condition('fdfe.entity_type', 'node', '=');    $result->addExpression('COUNT(n.nid)', 'term_count');   $temp = $result->execute();   $temp = $temp->fetchObject();   return $temp->term_count; }   

修补的另一种修补方式是添加一个module_invoke_all更高的代码,以允许其他模块沿着查询交互(钩子),或者使用"addtag" 并允许其他模块更改查询本身(最新的模块将推荐)。这都要求您编写自己的自定义模块。

 

Since you said you "would not mind temporarily touching the code" (I would highly advise not to touch and try to find alternative ways) here is my quick solution and also alternative ways of accomplishing it.

Assuming the field_expired is a boolean field (single on/off check-box values 1/0) and you are not using revisioning.(see the three lines I added), also make sure you resave at least one node to recalculate.

function _taxonomy_menu_term_count($tid) {   $result = db_select('taxonomy_index', 'tn');   $result->condition('tid', $tid);   $result->join('node', 'n', 'n.nid = tn.nid AND n.status = 1');    $result->join('field_data_field_expired', 'fdfe', 'fdfe.entity_id = tn.nid');   $result->condition('fdfe.field_expired_value', '1', '=');   $result->condition('fdfe.entity_type', 'node', '=');    $result->addExpression('COUNT(n.nid)', 'term_count');   $temp = $result->execute();   $temp = $temp->fetchObject();   return $temp->term_count; } 

Another ways of patching it would be to add a module_invoke_all higher up the code to allow other modules to interact (hook into), or use "addTag" along your query and allow other modules to alter the query itself (the latest one would be recommended). Both this require you to write your own custom module.

 
 
 
 
1
 
vote

我认为这里的最佳解决方案将不是根本不使用Taxonomy_Menu模块,并写自己的自定义查询,以将术语拉出...

 

I think the best solution here is going to be to not use the taxonomy_menu module at all and write your own custom query to pull the terms with their counts out...

 
 
0
 
vote

作为一个简单的解决方案,为什么不设置规则,当内容到期时,它要么删除,缓存或作为自定义解决方案,内容被复制到另一个内容类型(例如"过期" )然后擦除?

编辑:

为了保持内容"可搜索" 和可查看,创建一个名为"已过期" (或任何适合您的内容)的内容类型,并在您的站点中的某个位置放置与此类型关联的所有内容的视图。然后,如上所建议的规则用规则将所有数据复制到现在隐藏的内容中,进入了一件新的内容"到期" 。现在可以搜索和可查看,如果您希望通过视图,您甚至可以链接分类术语,无需自定义代码

 

As a simple solution, why not set a Rule that when the content expires, it is either deleted, cached, or as a custom solution, the content is copied to another content type (say "Expired" for example) and then erased?

EDIT:

In order to keep the content "searchable" and viewable, create a Content Type called "Expired" (or whatever suits you) and put a View somewhere in your site that lists all of the content associated with this type. Then, do as suggested above with the Rule to copy the all the data out of the now hidden content, into a new piece of content of type "Expired". It is now searchable and viewable, you can even link the taxonomy terms if you wish via Views, and no need for custom code

 
 
     
     

相关问题

3  禁用区域设置模块破坏站点  ( Disable locale module breaks site ) 
我们希望禁用Drupal站点中的区域设置模块。由于某些内容被保存为语言"en" 以前,禁用语言环境不会将内容和字段数据库表语言字段重置为"und" 或language_none。禁用模块后,不会显示已保存为"en" 的任何节点或字段。 要修复此我创建了一个模块以更新整个数据库。 $schema = dru...

0  Drupal Commerce PayPal WPS - 连接拒绝  ( Drupal commerce paypal wps connection refused ) 
我试图让WPS模块用于卸妆商务,但我收到错误。在我的日志中付款后,我看到了。 尝试使用错误-111验证ipn失败:连接拒绝 这与Pay PAL模块相关的代码是: // Process the HTTP request to validate the IPN. $response = drupal_http_r...

3  我们可以在Hybridauth模块中自定义用户登录块  ( Can we customize user login block in hybridauth module ) 
我们可以在我们的自定义主题中的Hybridauth模块中自定义用户登录块吗? 就像写作 block-hybridauth-hybridauth.tpl.php 。 我需要自定义输出方式。而不是签名的标志,它给出了支持的社交帐户列表的叠加,我需要一些文本来替换它并添加div和内容以及它?是否有可能? ...

3  Drupal 7,表单API - 文件字段default_value  ( Drupal 7 form api file field default value ) 
我创建了一种惯用,其中用户可以使用文件字段上传图像。在另一种惯例中,用户能够更改他以前上传的图像。 到目前为止,我能够上传一个新图片或让现场空洞和现有图像保持。我的问题是,我如何以良好的方式向用户展示他以前上传的界面上传?设置#default_value(下面的@code)对我没有任何作用。 //$smalli...

1  Metatag和Page Title模块冲突  ( Metatag and page title modules conflict ) 
我使用drupal 7与 metaTag 模块以及 page title 模块。 我需要使用某些节点字段和其他条件构建自定义内容类型的标题以及我无法使用所提供的令牌重现的其他条件,因此我已将页标题API( 99887660 )仅对一个节点类型构建我的自定义标题。 函数工作和页面标题已设置。但元标签是错误的,它们不使用...

1  如何验证RSS Feed链接?  ( How do i validate the rss feed link ) 
这是我的自定义表单,有三个字段, 图像: 代码: function planet_extension_form($form,&$form_submit){ $form['url']=array( '#title' => 'URL', '#type' => 'textfield', '#required' =...

2  如何在初始表单加载上运行drupal.ajax命令?  ( How to run drupal ajax commands on initial form load ) 
我已经创建了一些自定义drupal.ajax命令。 ,我有一个ajax回调,用作字段更改值。 但我想在初始表单加载上运行一些这些Ajax命令。 我的用例:我有一个下拉下落的值,具体取决于我想要使用设置阵列调用一些js的下拉下降,以在地图上显示自定义信息,设置调用返回等。 有没有一种干净的方式?具有一致的初始设置方法和...

0  创建批量节点 - PDOException  ( Create bulk nodes pdoexception ) 
问题 我正在尝试使用用于数据的CSV文件创建多个节点。但是,我的脚本只在它抛出以下错误之前创建前25。任何可能发生的想法? porpexception:在drupal_write_record()(c: xampp htdocs drupalie commany common.inc的第7166行)。...

1  在Drupal 7中使用Profile2模块添加用户配置文件的动态和多个字段  ( Adding dynamic and multiple fields for user profile using profile2 module in dru ) 
我正在创建像LinkedIn这样的个人资料。 用户可以拥有多个教育文件,并且他可以动态地添加/修改。 是否有任何插件,适合我的要求。 我找到的最近是Profile2,它很有希望但不提供多个条目功能。 可以drupal帮助我解决这个问题? 提前感谢。 Yatendra 编辑:我想要LinkedIn教育向导等配置文件类...

1  如何在视图中使用自定义表  ( How to use custom tables in views ) 
我使用的是MultiSite Drupal6.26网站使用浏览视图3.0模块。 两个站点都在单个数据库中安装。 第一个/父网站没有其表的前缀:节点,块,角色等。 第二个/童头有孩子的前缀。 ex:child_node,child_block,child_rogle等。 我有一个视图,显示了父网站帐户中用户上传的所有...

2  如何使用表单API验证临时文件  ( How to validate temporary files with form api ) 
问题 我有一个包含三个文件字段的自定义表单。选择文件,然后在提交时,它们附加到电子邮件中,并通过呼叫发送到 99887664 。 我非常确定文件没有保存到服务器,我不希望保存在文件可能是敏感信息时。 但我希望字段支持某些文件扩展。如何验证它们? 到目前为止 有一个函数: file_validate_exte...

3  db_select条件与子查询导致PDOException  ( Db select condition with subquery causes pdoexception ) 
我想在其条件下使用子查询构建一个相对简单的选择查询。我想要实现的是在给定时间戳之后获得更新的用户列表。 我想要构建的工作SQL查询作为动态查询是: files[] = tests/module.test 3 我写了以下代码以使用Drupal的数据库API构建上面的查询: files[] = tests/...

0  field_attach_form在提交时删除映像字段默认值  ( Field attach form removes image field default value when submit ) 
我需要获取节点编辑表单的某些字段,因为我使用 field_attach_form()获取我想要的字段,以使用节点的值。 这是我表单函数的代码的示例: function my_form($form, &$form_state, $node_id, $fields) { $node = node_load($no...

0  如何将现有的分类术语添加到节省节点上  ( How to add existing taxonomy terms to node on saving ) 
我是一个字段组织,它是具有无限值的术语引用。每当某人保存节点时,我要在此字段中附加几个条款。 我尝试过使用hook_presave以及使用表单API的提交处理程序进行执行。 但问题表明他们都希望术语填充有限的其他值如下。我在哪里获得这些价值?来自Taxonomy_term_load? 这是表单中的form_state...

3  用其兄弟姐妹的分类术语获取物品的标题  ( Fetching title of articles with taxonomy terms which are its siblings ) 
我正在制作一个赋予文章标题的视图。它有一个术语参考字段。分类树有点像: a a b c b 1 2 3 所以我想让一个看法,以这样的方式工作,当一个人在分类学期页面"a" 时,他可以看到分类学术语"a" ,'b'和'c'的所有相关标题。 这是视图生成的查询。 SELEC...

0  来自WebForm的电子邮件的问题  ( Problem with emails from webform ) 
我有传入电子邮件的问题。从模块WebForm(并使用SMTP模块)发送, 邮件目标是"domain.com" 的目标。我报告收到所有数据可读的第一封电子邮件。但是,第二封电子邮件包含以下内容: op: insert, sid: 4, components: nombre: value: REMOVED, comp...

2  做实体关系的方法  ( Approach for doing entity relationships ) 
我正在寻找使用Drupal 7接近建立关系的最佳方法。我正在寻找关于创建以下内容的建议: 1)"字母" 内容类型(如在旧式字母中) a)来自人(即"John Doe" ) b)与地址相关联("12348街" ) c)对人 d)与地址相关联 e)邮资日期 f)扫描字母的文件附件 2)一个人可...

0  如何让表单字段隐藏,同时该值能够使用JavaScript获取ID?  ( How to let a form field be hidden and at the same time the value be able to acce ) 
如何在javscript中获取#value在javscript中的隐藏表单字段,如隐藏的形式,我无法在(检查元素)HTML中获得其ID。 如何使用Ajax为隐藏字段提取字段的值(#Value) ...

1  如何大量更新实体? [关闭]  ( How do i mass update entities ) 
关闭。这个问题需要详细信息或清晰度。它目前不接受答案。 想要改进这个问题?添加详细信息并通过编辑此帖的问题。 关闭 7年前。 ...

1  以编程方式保存节点不会向DBLOG添加任何记录  ( Programmatically saving a node doesnt add any record to dblog ) 
当我呼叫 node_save 保存节点时,没有记录"新节点已保存。" 。 是正常的吗?如果是,我如何添加看门狗记录? (如果直接调用 watchdog 函数) ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.