Як почати перегляд у% nid позиції (з контуру)?


11

У мене є портфоліо, де відображаються вузли somes (views3 + view слайд-шоу за допомогою циклу). Все працює добре, я маю шлях за замовчуванням /portfolioдля доступу до нього.

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

Хтось знає, як це можливо? Я намагався з користувальницьким інтерфейсом, але не думаю, що цього достатньо.

Відповіді:


1

У jQuery Cycle є параметр, який називається startSlide. За замовчуванням це встановлено на 0, як це: startSlide: 0

Якщо я добре пам’ятаю, є вкладка / текстова область для розширених налаштувань, де ви можете додати параметри до jQuery Cycle з інтерфейсу Views. Я думаю, ви можете додати, наприклад, "StartSlide: 5".

Вам потрібно буде з’ясувати, що є початковим слайдом (перетворіть% nid у який рядок у представленні, який він є) та додати його як HTML-елемент. Коли це на місці, ми можемо отримати його за допомогою jQuery і додати його як варіант jQuery Cycle. Я не впевнений, який найкращий спосіб, але я думаю, ви могли б зробити щось на кшталт:

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

Вам, звичайно, доведеться додати ще код, щоб дізнатись $ startingslide. Загляньте всередину $ view-> результат і з’ясуйте, який із рядків є аргументом, який буде вашим $ startingslide. Використовуйте dpm () у поданні для перегляду об’єкта.

Сподіваюся, що це вам допоможе. Дайте мені знати, що ви закінчили робити :)


0

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

наприклад / portfolio? nid_is_greater_than = 3

Потім ви можете приховати свій фільтр за допомогою css.


Я б застосував аргумент (контекстний фільтр), а не відкритий фільтр - якщо тільки аргументи вже не використовуються, і цей додатковий не поплутається з обробкою ними.
Альфред Армстронг

Я не знаю жодного способу порівняння значення поля з контекстним значенням фільтра.
мантак

Гарна думка. Повинен був засинати, коли я розмістив попередній коментар, вибачте.
Альфред Армстронг

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.