我曾经知道如何做到这一点,但我似乎无法对在块中公开过滤器的视图进行排序。我希望能够通过例如类型,价格等进行过滤,但也可以使用排序选项按这些项目进行排序。
如何让排序工作?
答案 0 :(得分:4)
我使用该代码覆盖非表视图中的排序
function views_tweak_views_query_alter(&$view, &$query) {
if ($view->name == 'products'){
if (arg(3) == 'pu') $query->orderby[0]='uc_products_sell_price ASC';
if (arg(3) == 'pd') $query->orderby[0]='uc_products_sell_price DESC';
if (arg(3) == 'nu') $query->orderby[0]='node_title ASC';
if (arg(3) == 'nd') $query->orderby[0]='node_title DESC';
}
}
并将这些网址放入视图模板链接
答案 1 :(得分:2)
AFAIK您不能像过滤器一样公开排序标准。
我看了一下找到的this module。我们的想法是创建多个视图,每个视图使用不同的排序条件,并使用制表符将它们链接在一它有点hackish,可能无法使用暴露的过滤器。该模块仍在测试阶段,我还没有测试过,所以不能说它是否有用。
答案 2 :(得分:1)
如果选择使用表格布局,则可以按列排序。该功能内置于视图中。
答案 3 :(得分:1)
万一你无法找到设置的位置,请查看视图的左侧(在编辑模式下),在基本设置下,选择“表格”。单击“设置”(看起来像“表格”选项右侧的一个小齿轮图标),您将看到所有显示字段的列表,您可以在其中选择哪些是可排序/不可以,哪些是默认排序。
答案 4 :(得分:0)
在钩子中为Drupal less programm代码添加排序。
您需要在显示页面中使用参数。
在页面之前使用分类法菜单..下一步:
<?php
$url= urldecode($_SERVER['REQUEST_URI']);
switch($url)
{
case '1':
$class = 'top';
$title_h2 = 'top';
break;
case '/taxonomy/term/6 3 ':
$class = 'travel';
$title_h2 = 'travel';
break;
.................
}
global $base_url;
$url_rating = $base_url.'/'.arg(0).'/'.arg(1).'/'.arg(2).'/rating';
$url_created = $base_url.'/'.arg(0).'/'.arg(1).'/'.arg(2);
?>
<div class="<?php print $class; ?>">
<div class="title">
<h2>
<?php print $title_h2; ?></h2>
<p>Sort node: <span class="sort_type"><a href="<?php echo $url_rating; ?>">by rate</a></span> | <span class="sort_type"> <a href="<?php echo $url_created; ?>">by date</a></span></p>
</div>
</div>
<p> </p>
VOILA
对不起我的英文..这不是我的母语))