在drupal中将权重字段添加到捆绑包

在drupal中将权重字段添加到捆绑包,drupal,sorting,bundle,drupal-views,entities,Drupal,Sorting,Bundle,Drupal Views,Entities,现在,我不太确定关于实体和捆绑包的词汇表,很抱歉,但这是我的问题 我有很多内容类型,在视图中,我想先按内容类型,然后按日期对节点进行排序 但排序没有任何意义——我想按“衣服、动物、饮料、人”的定制顺序对内容类型进行排序,即不按字母顺序 我曾尝试使用全局php将这些文件按定制顺序排序,效果很好。 i、 e 这是设置代码,然后对于每一行,views php允许您进行排序: $pos1=array_search($row1->type, $myarray); $pos2=array_search

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

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

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

我曾尝试使用全局php将这些文件按定制顺序排序,效果很好。 i、 e

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

$pos1=array_search($row1->type, $myarray);
$pos2=array_search($row2->type, $myarray);
return $pos1-$pos2;
它可以工作,但我不能将它与日期排序结合起来,而且不管怎样,开销一定非常大

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


呸。感谢您的帮助。

在MySQL中,有一种按给定列表顺序排序的方法。看

要在Drupal中实现这一点,您可以尝试在
hook\u views\u query\u alter中添加类似的内容:

$query->orderby[0] = "FIELD(node.type, 'films', 'shoes', 'people', 'animal') ASC";

如MySQL中的

所述,有一种方法可以按照给定的列表顺序进行排序。看

要在Drupal中实现这一点,您可以尝试在
hook\u views\u query\u alter中添加类似的内容:

$query->orderby[0] = "FIELD(node.type, 'films', 'shoes', 'people', 'animal') ASC";

中所述,如果有人遇到这种情况,nmc的解决方案是好的,但我无法让它工作(我的错肯定是),所以我使用了hook\u views\u pre\u render:

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;  

}


}

如果有人遇到这种情况,nmc的解决方案是好的,但我无法让它工作(当然是我的错),所以我使用了hook_views_pre_render:

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;  

}


}

谢谢,我会试试这个,看起来不错。我已经试过类似的方法了,但没用,但你说服了我!谢谢,我会试试这个,看起来不错。我已经试过类似的方法了,但没用,但你说服了我!