Drupal 7 - Menekan keluaran node pada Halaman Taksonomi


10

Apakah ada cara untuk menekan output dari node pada halaman taksonomi, tanpa harus menginstal modul (yaitu hanya di template.php)?

Node yang ditandai dengan istilah taksonomi muncul di "halaman Indeks Taksonomi" (mis. Yoursite.com/taxonomy/term/[id]).

Baru di Drupal 7, halaman Indeks Taksonomi dapat memiliki bidang yang menyertainya. Namun, jika Anda mencoba untuk menumpang naik halaman taksonomi dengan Lihat (misalnya, untuk mengontrol bagaimana node ditampilkan), bidang pada halaman Indeks Taksonomi tidak akan muncul.

Karena itu saya menempatkan Pandangan Taksonomi sebagai blok pada halaman Indeks Taksonomi. Dengan begitu, saya dapat mengontrol bagaimana node muncul dan masih memiliki bidang halaman Indeks Taksonomi.

Karena itu, halaman taksonomi masih mengeluarkan simpulnya. Saya dapat menyembunyikan mereka dengan mengatur penggoda node untuk disembunyikan, tetapi masih memuat node (dan karena itu setiap CSS / Jquery melekat pada node meskipun node tidak ditampilkan). Bagaimana saya bisa menekan agar node tidak muncul, idealnya dari dalam template.php?


Mengapa Anda tidak ingin memasang modul? Beberapa hal lebih mudah dicapai dengan modul.
Martin Schlagnitweit

Jawaban:



8

Solusi dari http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/ bekerja dengan baik untuk saya:

function THEMENAME_preprocess_page(&$vars){
   if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))){
     unset($vars['page']['content']['system_main']['nodes']);
     unset($vars['page']['content']['system_main']['pager']);
     unset($vars['page']['content']['system_main']['no_content']);
   }
}

Catatan: Anda harus mengatur ulang cache situs Anda.


CATATAN: ini akan menonaktifkan daftar simpul untuk setiap halaman istilah taksonomi di situs.
Duncanmoo

@ Peter Lozovitskiy Saya melakukan ini dan dihadapkan dengan kesalahan "Pemberitahuan: Penggunaan konstan 'taksonomi' yang tidak terdefinisi!"
shekoufeh

@shekoufeh, saya sudah memperbaiki kode (mengganti koma) coba kode ini sekarang.
Peter Lozovitskiy

2

Anda harus menghapus node dari variabel $ page.

Di template.php Anda dapat melakukannya seperti ini:

function MY_THEME_preprocess_page(&$variables) {
  if(arg(0) == "taxonomy" && arg(1) == "term") {
    $variables['page']['content']['system_main']['nodes'] = null;
  }
}

Di page.tpl.php Anda gunakan kode ini:

if(arg(0) == "taxonomy" && arg(1) == "term"){
  $page['content']['system_main']['nodes'] = null;
}

Ini menghapus node dari semua kosakata dan istilah . Jika Anda ingin menghapusnya hanya pada istilah-istilah tertentu atau semua istilah dari penggunaan kosakata arg(2)yang berisi tiduntuk memuat istilah dan kemudian perbarui pernyataan if.


Ini bekerja tetapi masih meninggalkan pager. Itu berarti bahwa node sedang dimuat dan pemborosan sumber daya server. Bagaimanapun, terima kasih atas tipnya, saya sudah menggunakan metode Anda :) Tapi secara teoritis masih ada yang lebih baik.
int_ua

0

Anda bisa melakukan apa saja di template.php, tetapi itu tidak dianjurkan. Inti dari menggunakan CMS, adalah bahwa Anda memisahkan data, perilaku dan penampilan. File template.php adalah bagian dari lapisan tema, dan Anda harus menggunakannya untuk menyesuaikan gaya visual situs Anda.

Jika Anda ingin menyesuaikan perilaku situs (dalam hal ini: mengontrol item mana yang ditampilkan dalam daftar tertentu) Anda perlu mengubah perilaku, sehingga Anda menginstal dan mengkonfigurasi modul. Jika Anda ingin membuat daftar konten khusus, modul Views adalah persis apa yang Anda butuhkan.

Dalam kasus Anda (jika saya mengerti dengan benar) Anda ingin bidang istilah taksonomi ditampilkan di atas daftar node yang ditandai dengan istilah itu. Anda dapat membuatnya kembali dalam tampilan Anda dengan membuat blok tampilan yang mengambil ID istilah dari URL dan menampilkan info yang Anda butuhkan.


Terima kasih balasannya! Saya sudah menggunakan Tampilan untuk mengganti halaman taksonomi. Namun, saya menggunakan Tampilan Timpa sebagai blok alih-alih halaman, karena saya perlu menjaga bidang pada halaman taksonomi terlihat. Satu-satunya masalah adalah bahwa halaman taksonomi masih memuat node, yang tampaknya tidak perlu.
big_smile

Saya tidak mengerti apa yang Anda maksud dengan "bidang pada halaman taksonomi", tetapi menyembunyikan konten halaman dan menggantinya dengan blok tidak terdengar seperti solusi yang benar. Jika Anda hanya mengganti halaman taksonomi dengan tampilan halaman biasa, fungsi apa yang Anda lewatkan? (Mungkin Anda dapat memperbarui pertanyaan awal Anda, dan saya akan memperbaiki jawaban saya.)
marcvangend

Jawabannya diperbarui juga.
marcvangend

Sayangnya, jawaban Anda sepertinya tidak berhasil. Jika Anda mencoba membawa bidang taksonomi ke tampilan, itu akan menampilkan konten dari setiap bidang tunggal (dan bukan yang hanya milik halaman tertentu yang dilihat).
big_smile

0

Saya menggunakan CSS untuk menyembunyikan hal-hal taksonomi tetapi mengatur tampilan mereka ke custom dan blanking yang sepertinya pilihan yang lebih baik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.