首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向drupal中的包添加权重字段

问向drupal中的包添加权重字段
EN

Stack Overflow用户
提问于 2012-09-28 23:07:13
回答 2查看 531关注 0票数 1

现在,我不太确定关于实体和包的词汇表,所以很抱歉,但这是我的问题。

我有很多内容类型,在视图中,我希望首先按内容类型对节点进行排序,然后按日期进行排序

但排序没有意义--我想按定制的顺序对内容类型进行排序:“衣服、动物、饮料、人物”--即不按字母顺序排序。

我已经尝试过使用global php将它们排序成一个定制的顺序--它工作得很好。即

代码语言:javascript
复制
$myarray=array("films","shoes","people","animals");

这是设置代码,然后对于每一行,views php允许你这样排序:

代码语言:javascript
复制
$pos1=array_search($row1->type, $myarray);
$pos2=array_search($row2->type, $myarray);
return $pos1-$pos2;

它可以工作,但我不能将它与日期排序结合在一起,而且无论如何开销肯定是相当糟糕的。

所以,我的问题是,有没有一种方法可以在我认为可能是捆绑包级别(!?)的内容类型中添加一个权重字段。允许我按内容类型在视图中按定制顺序(非字母顺序)对数据进行排序。

呼。感谢您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-01 23:28:54

在MySQL中,有一种方法可以按给定的列表顺序排序。请参阅MySQL sort by some list

要在Drupal中做到这一点,可以尝试在hook_views_query_alter中添加类似下面这样的内容

代码语言:javascript
复制
$query->orderby[0] = "FIELD(node.type, 'films', 'shoes', 'people', 'animal') ASC";

如https://drupal.stackexchange.com/questions/35543/syntax-for-the-various-query-modifiers中所述

票数 1
EN

Stack Overflow用户

发布于 2012-10-22 20:55:44

如果有人遇到这种情况,nmc的解决方案很好,但我不能让它工作(肯定是我的错),所以我使用了hook_views_pre_render:

代码语言:javascript
复制
function MYMODULE_views_pre_render(&$view){

if($view->name=='entries_for_a_journal') {

    $entryitemarray=array();

foreach($view->result as $entryitem){
    $entryitemarray[$entryitem->node_type][]=$entryitem;
    }
$listoftypes=array('destination','tourplan','packing_list','diary','accomodation','eatinganddrinking','placesofinterest','knowledge','recipe','peopleimet','usefulcontacts');

foreach($listoftypes as $typename){
foreach($entryitemarray[$typename] as $newviewentry){
$newviewresult[]=$newviewentry;

}

}


    $view->result=$newviewresult;  

}


}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12642617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档