it-swarm-id.com

Drupal 7 - Menekan output dari node pada Halaman Taksonomi

Apakah ada cara untuk menekan output dari node pada halaman taksonomi, tanpa harus menginstal modul (mis. 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 naiki halaman taksonomi dengan Tampilan (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?

10
big_smile

Saya tahu, yang menginginkan solusi tanpa-modul, tetapi di Drupal 7, ada modul yang melakukan persis seperti yang Anda butuhkan: Nonaktifkan Term Node Cantuman

Ini memungkinkan Anda memilih per Kosakata, jika Anda ingin menonaktifkan output dari daftar istilah.

5

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.

8

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 halaman Anda.tpl.php 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 kosakata gunakan arg(2) yang berisi tid untuk memuat istilah dan kemudian perbarui pernyataan if.

2

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

0
Joseph Coco

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 Tampilan tepat seperti 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.

0
marcvangend