Как начать просмотр в позиции% nid (с пути)?


11

У меня есть портфолио, показывающее некоторые узлы (views3 + views слайд-шоу с использованием цикла). Все отлично работает, у меня есть путь /portfolioпо умолчанию для доступа к нему.

Тем не менее, я пытаюсь установить путь для каждого слайда. Я хотел бы использовать /portfolio/%nidи использовать %nidв представлениях по умолчанию первый просмотр слайда с этим идентификатором узла.

Кто-нибудь знает, как это возможно? Я пытался с пользовательским интерфейсом, но я не думаю, что этого достаточно.

Ответы:


1

В цикле jQuery есть опция, которая называется StartSlide. По умолчанию это установлено в 0, как это: начальныйСлайд: 0

Если я правильно помню, есть вкладка / текстовая область для расширенных настроек, где вы можете добавить опции в jQuery Cycle из пользовательского интерфейса Views. Я думаю, что вы можете добавить, например, «стартовый слайд: 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

Вы можете добавить открытый фильтр к вашему представлению, настроить его так, чтобы он показывал greater thanпредоставленное значение, и соответствующим образом имитировать его URL.

например / портфолио? nid_is_greater_than = 3

Затем вы можете скрыть свой фильтр с помощью CSS.


Я бы использовал аргумент (контекстный фильтр), а не открытый фильтр - если только нет уже используемых аргументов, и этот дополнительный будет мешать их обработке.
Альфред Армстронг

Я не знаю способа сравнить значение поля с контекстным значением фильтра.
magtak

Хорошая точка зрения. Должно быть, я был в полусне, когда я опубликовал предыдущий комментарий, извините.
Альфред Армстронг

0

Поскольку ваша проблема связана с внешним видом, а не со структурой, я предлагаю не решать ее на сервере и не в URL-пути, а на клиенте с URL-адресом: / portfolio # slide- [nid].

Я не читал javascript-код представления слайд-шоу + цикл +, но я полагаю, что его поведение довольно просто при чтении фрагмента URL при инициализации слайд-шоу. Или, может быть, уже реализована такая логика, которую вы могли бы использовать ...


0

Как насчет использования опции «Перезаписать выходные данные» в разделе «Поля» в представлениях?

  1. В представлениях перейдите в поле «Настроить (изображение)»> «Переписать результаты».
  2. Установите флажок «Вывести это поле как ссылку»
  3. Введите путь к ссылке (nid /) и другие детали
  4. Нажмите на Применить
  5. Сохранить вид

Надеюсь это поможет.


0

В этом случае представления перестают отображаться node_view()и не участвуют в разметке строки.

Самый простой способ сделать то, что вы хотите, это реализовать hook_preprocess_node(), искать представление в текущем контексте, и если узел визуализируется как часть этого отображения, вы можете внести некоторые изменения.

ВЗГЛЯНИ НА ЭТО:

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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.