如何在%nid位置(从路径)开始查看?


11

我有一个投资组合,显示一些节点(views3 +使用循环的幻灯片视图)。一切正常,我有一个默认的/portfolio访问路径。

但是,我正在尝试为每张幻灯片设置路径。我想在视图中使用/portfolio/%nid%nid在视图中使用默认值将第一个查看的幻灯片默认为该节点ID。

有人知道这怎么可能吗?我已经尝试过使用UI,但我认为这还不够。

Answers:


1

jQuery Cycle中,有一个名为startingSlide 的选项。默认情况下,它设置为0,如下所示:startingSlide:0

如果我没记错的话,有一个用于高级设置的选项卡/文本区域,您可以在其中从Views UI中向jQuery Cycle添加选项。我认为您可以在其中添加“ startingSlide:5”。

您将需要找出哪个是起始幻灯片(将%nid转换为视图中的哪一行)并将其添加为HTML元素。到位后,我们可以使用jQuery提取它并将其添加为jQuery Cycle选项。我不确定哪种方法最好,但是我认为您可以执行以下操作:

    function MYMODULE_views_pre_render(&$view) {
      if($view->name == "MYVIEW") {
        $view->attachment_after = $startingslide;
      }
    }

当然,您将不得不添加更多代码以找到$ startingslide。在$ view-> result内部查看,找出哪一行是参数,这将是您的$ startingslide。在视图上使用dpm()搜索对象。

希望这会帮助你。让我知道你最终在做什么:)


0

您可以在视图中添加一个公开的过滤器,对其进行配置以显示nids greater than提供的值,并相应地模拟其URL。

例如/ portfolio?nid_is_greater_than = 3

然后,您可以使用CSS隐藏过滤器。


我会使用一个参数(上下文过滤器)而不是一个暴露的过滤器-除非已经使用了参数,否则这个多余的参数将使这些参数变得混乱。
阿尔弗雷德·阿姆斯特朗

我不知道字段值与上下文过滤器值进行比较的方法。
magtak 2013年

好点子。对不起,当我发布之前的评论时一定已经睡着了。
2013年

0

由于您的问题与外观有关,而不与结构有关,因此建议不要在服务器上而不是URL路径中解决此问题,而应在具有URL片段的客户机上解决它:/ portfolio#slide- [nid]。

我还没有阅读view slideshow + cycle的javascript代码,但是我想很容易采用它的行为来在初始化幻灯片时读取URL片段。或者也许已经实现了这样一种逻辑,您可以使用...


0

如何在“视图”的“字段”部分中使用“重写输出结果”选项?

  1. 在视图中,转到配置(图像)字段>重写结果
  2. 选中“将此字段输出为链接”复选框
  3. 输入链接路径(nid /)和其他详细信息
  4. 点击申请
  5. 保存视图

希望这可以帮助。


0

node_view()在这种情况下,视图从显示传递出去,并且不涉及该行的标记。

做您想要的事的最简单方法是实现hook_preprocess_node(),在当前上下文中查找View,并且如果将节点渲染为该显示的一部分,则可以进行一些更改。

看看这个:

function MYMODULE_preprocess_node(&$vars) {
  if (!empty($vars['view']) && $vars['view']->view_name == 'foo') {
    $nid = $vars['node']->nid;
    $vars['extra_link'] = l('Some text', "node/$nid");
  }
}

在您的node.tpl.php文件中,您可以访问$extra_link.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.