Bagaimana cara memulai tampilan di posisi% nid (dari jalur)?

11

Saya memiliki portofolio yang menunjukkan beberapa node (views3 + tampilan slide menggunakan siklus). Semuanya berfungsi dengan baik, saya memiliki jalur default /portfoliountuk mengaksesnya.

Namun, saya mencoba mengatur jalur untuk setiap slide. Saya ingin menggunakan /portfolio/%niddan menggunakan %niddalam pandangan ke default slide pertama yang dilihat ke id node ini.

Adakah yang tahu bagaimana itu mungkin? Saya sudah mencoba dengan UI tetapi saya rasa itu tidak cukup.

Kiamat
sumber

Jawaban:

1

Di jQuery Cycle ada opsi yang disebut startingSlide. Secara default ini diatur ke 0, seperti ini: startingSlide: 0

Jika saya ingat benar ada tab / textarea untuk pengaturan lanjutan di mana Anda dapat menambahkan opsi ke jQuery Cycle dari dalam UI Views. Saya pikir Anda dapat menambahkan "startingSlide: 5" misalnya di sana.

Anda perlu mencari tahu mana slide awal (konversikan% nid ke baris mana dalam tampilan itu) dan tambahkan sebagai elemen HTML. Ketika itu sudah ada, kita bisa mengambilnya dengan jQuery dan menambahkannya sebagai opsi jQuery Cycle. Saya tidak yakin mana yang merupakan cara terbaik tetapi saya pikir Anda bisa melakukan sesuatu seperti:

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

Anda harus menambahkan lebih banyak kode untuk mengetahui $ startingslide di sana tentunya. Lihat ke dalam hasil $ view-> dan cari tahu baris mana yang merupakan argumen, yang akan menjadi $ awal Anda. Gunakan dpm () pada tampilan untuk mencari melalui objek.

Semoga ini bisa membantu Anda. Biarkan saya tahu apa yang akhirnya Anda lakukan :)

Pontus Nilsson
sumber
0

Anda dapat menambahkan filter terbuka ke tampilan Anda, mengonfigurasinya untuk menampilkan nids greater thannilai yang disediakan, dan meniru URL-nya.

misalnya / portofolio? nid_is_greater_than = 3

Anda kemudian dapat menyembunyikan filter Anda dengan css.

magtak
sumber
Saya akan menggunakan argumen (filter kontekstual) daripada filter yang terbuka - kecuali sudah ada argumen yang digunakan dan argumen tambahan ini akan mengacaukan penanganannya.
Alfred Armstrong
Saya tahu tidak ada cara untuk membandingkan nilai bidang ke nilai filter kontekstual.
magtak
Poin yang bagus. Pasti setengah tertidur ketika saya memposting komentar sebelumnya, maaf.
Alfred Armstrong
0

Karena masalah Anda adalah tentang penampilan, bukan tentang struktur, saya sarankan untuk tidak menyelesaikannya di server dan bukan di jalur URL tetapi pada klien dengan frmentasi URL: / portfolio # slide- [nid].

Saya belum membaca kode javascript tayangan slide slideshow + siklus, tapi saya rasa cukup mudah untuk mengadopsi perilaku itu untuk membaca fragmen URL pada inisialisasi tayangan slide. Atau mungkin sudah ada logika yang diterapkan yang dapat Anda gunakan ...

gue
sumber
0

Bagaimana kalau menggunakan opsi 'Menulis Ulang Hasil Keluaran' di bagian Bidang Tampilan?

  1. Di Tampilan, buka Kolom Konfigurasi (Gambar)> Tulis Ulang Hasil
  2. Centang kotak 'Keluarkan bidang ini sebagai tautan'
  3. Masukkan Jalur Tautan (nid /) dan detail lainnya
  4. Klik Terapkan
  5. Simpan Tampilan

Semoga ini membantu.

Supriya Rajgopal
sumber
0

Tampilan lolos dari tampilan ke node_view()dalam kasus itu, dan tidak terlibat dengan markup untuk baris.

Cara termudah untuk melakukan apa yang Anda inginkan adalah dengan mengimplementasikan hook_preprocess_node(), mencari tampilan dalam konteks saat ini, dan jika node ditampilkan sebagai bagian dari tampilan itu, Anda dapat membuat beberapa perubahan.

LIHATLAH INI:

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");
  }
}

Di node.tpl.phpfile Anda, Anda akan memiliki akses ke$extra_link.

Ataboy Josef
sumber