it-swarm-id.com

Bagaimana cara menyembunyikan node yang tidak boleh diakses langsung dari pengguna dan mesin pencari?

Saya telah menemukan bahwa ada kalanya saya memiliki simpul yang hanya berisi konten yang akan ditampilkan di tempat lain, tetapi tidak boleh dilihat secara langsung. Artinya, tidak ada yang harus pergi ke node/1234, tetapi konten di node 1234 harus ditampilkan di tempat lain. Misalnya, saya membuat halaman tentang dengan konten tab menggunakan tampilan. Jadi ada halaman "Tentang Saya", "Tentang Kami" dan "Tentang Mereka". Semua ini ditampilkan dalam satu halaman dengan tab menggunakan Tampilan. Jadi saya tidak ingin orang langsung masuk ke simpul "Tentang Kami" karena mereka tidak akan melihat tab untuk halaman lain. Pada saat yang sama, saya tidak ingin Google memberi orang tautan langsung ke simpul ini, saya ingin membatasi akses sehingga pengguna hanya bisa mengaksesnya melalui Tampilan (mis., Tab).

Jadi saya perlu membatasi akses ke node, menghapusnya dari hasil pencarian Drupal, dan pastikan Google tidak mengambilnya. Ada saran?

49
Chaulky

Bagi saya ini kedengarannya seperti kasus penggunaan yang baik untuk modul Panel karena Anda dapat membuat panel yang akan menimpa halaman node, dan dapat mengatur konteks untuk panel dengan cara harus menjamin pengguna melihat halaman yang Anda inginkan mereka untuk melihatnya serta aturan akses untuk halaman panel jika Anda membutuhkannya. Untuk perincian lebih lanjut, lihat posting ini pada d.o.

27
coderintherye

Modul Lubang Kelinci menyediakan fitur ini.

Rabbit Hole adalah modul yang menambahkan kemampuan untuk mengendalikan apa yang harus terjadi ketika suatu entitas dilihat pada halamannya sendiri.

Mungkin Anda memiliki tipe konten yang tidak boleh ditampilkan di halamannya sendiri, seperti tipe konten gambar yang ditampilkan di carousel. Rabbit Hole dapat mencegah agar simpul ini tidak dapat diakses di halamannya sendiri, melalui simpul/xxx.

32
Pierre Buyle

Salah satu opsi mungkin untuk tidak pernah mempublikasikan node tetapi memiliki halaman konsumen mengabaikan status publikasi mereka. Jadi dalam contoh Anda, tampilan "Tentang" Anda mungkin mengabaikan status publikasi dari simpul "Tentang-xxx" Anda. Karena node tidak dipublikasikan, pengguna yang tidak berwenang tidak dapat mengaksesnya dan mereka tidak boleh diindeks oleh mesin pencari.

Solusi lain adalah dengan menggunakan hook_nodeapi('view') / hook_node_view() implementasi untuk mengeluarkan drupal_goto() atau drupal_access_denied() ketika halaman node dikunjungi oleh pengguna yang tidak diotorisasi. Sadarilah bahwa hook_nodeapi() / hook_node_view() digunakan dalam banyak kasus dan tidak hanya saat melihat halaman node.

hook_menu_alter() juga dapat digunakan untuk mengubah callback akses dari halaman node untuk menolak akses ke hidden node.

Yang terbaik mungkin bukan mendasarkan pemfilteran pada ID node yang dikodekan tetapi menggunakan bidang khusus pada node (menggunakan CCK/Field API atau tabel kustom) atau daftar disembunyikan node disimpan dalam variabel .

12
Pierre Buyle

Untuk Drupal 7, the Rabbit Hole menyediakan fitur ini.

Rabbit Hole adalah modul yang menambahkan kemampuan untuk mengendalikan apa yang harus terjadi ketika en entitas sedang dilihat di halamannya sendiri.

Ini berfungsi dengan memberikan beberapa opsi untuk mengontrol apa yang harus terjadi ketika entitas dilihat di halamannya sendiri. Anda memiliki kemampuan untuk melakukannya

  1. Memberikan halaman yang ditolak aksesnya.

  2. Kirimkan halaman yang tidak ditemukan halaman.

  3. Terbitkan laman yang dialihkan ke jalur apa pun atau url eksternal.

  4. Atau cukup tampilkan entitas (perilaku biasa).

Bagaimana cara:

Aktifkan node Rabbit Hole submodule Kemudian kita akan mendapatkan bagian konfigurasi yang terkait dengan setiap bentuk di Drupal KODE

6
niksmac

Terpecahkan. Pertama saya mencoba jawaban Pierre Buyle, tetapi jika Anda membatalkan publikasi sebuah node, itu tidak dapat diakses dengan benar dan node tersebut menjadi tidak berguna. Dalam kasus saya, saya memiliki simpul orang tua dan anak, hanya simpul anak (untuk keperluan admin) yang harus disembunyikan dan TIDAK diindeks oleh crawler. Apa yang saya lakukan dengan pengelola halaman membuat url redirect (menyembunyikan node-node ini ke semua pengguna kecuali admin) dengan respon http sesuai dengan tuturial ini oleh http://www.wunderkraut.com/1 dan tidak ada indeks indeks oleh perayap ditangani oleh modul modul tanpa indeks . Ini akan berfungsi bahkan jika Anda tidak memiliki hubungan simpul paret-child. Tautan ke tutorial:

5
pinueve

Dalam Drupal 7, seharusnya juga dimungkinkan untuk menggunakan hook_node_access () , ini adalah pengait normal pada D7 yang dapat diimplementasikan oleh semua modul untuk semua jenis simpul. Kemudian Anda dapat menolak akses jika pengguna mencoba untuk melihat node pada node sendiri/nid.

Anda mungkin juga perlu mengimplementasikan hook_query_node_access_alter () dan menambahkan tanda centang di sana untuk menyembunyikan simpul di hasil pencarian. Ini bahkan mungkin sudah cukup untuk itu sendiri dan Anda tidak perlu hook_node_access (). Dan itu bahkan mungkin bekerja di D6 karena Anda dapat mengubah kueri di sana juga, tetapi itu jauh lebih mudah di D7 karena pembuat kueri.

3
Berdir

Cukup setel simpul itu sebagai 'tidak diterbitkan', kemudian, dalam tampilan tambahkan filter 'simpul yang diterbitkan: tidak'.

Sebagai catatan utama, adalah praktik yang baik untuk membuat tipe konten khusus untuk simpul 'hantu' tersebut, dan memberi tahu pathauto untuk memberi mereka url tertentu (saya menggunakan /dev/null/[title-raw];): Meskipun simpul tersebut tidak diterbitkan, ia akan punya alias sendiri url, jadi dalam contoh Anda jika Anda membuat dulu ghost node 'about us', dan kemudian halaman tampilan 'about us', url kedua akan example.com/about-us-0 karena example.com/about-us telah diambil dari hantu (namun, Anda dapat mengatur jalur secara manual)

2
Strae

Anda dapat melakukannya dengan menggunakan modul aturan.
+ Buat aturan baru dengan acara "Konten dilihat".
+ Tambahkan beberapa kondisi sebagai contoh: Pengguna memiliki peran: anonim, Path memiliki URL alias: node/xyz (ini adalah simpul yang ingin Anda batasi untuk pengguna anonim). Ingat menambahkan "dan" atau "atau" kondisi jika diperlukan.
+ Buat tindakan untuk mengalihkan ke halaman lain atau melakukan sesuatu yang lain. Ini adalah kode sampel yang saya ekspor untuk Anda

{ "rules_limit_viewing_some_nodes" : {
  "LABEL" : "Limit viewing some nodes",
  "PLUGIN" : "reaction rule",
  "REQUIRES" : [ "rules", "path" ],
  "ON" : [ "node_view" ],
  "IF" : [
     { "user_has_role" : {
       "account" : [ "site:current-user" ],
       "roles" : { "value" : { "1" : "1" } }
      }
     },
     { "AND" : [] },
     { "path_has_alias" : { "source" : "node\/28" } }
   ],
   "DO" : [ { "redirect" : { "url" : "error" } } ]
 }
}
2
Stone Vo

Anda bisa menggunakan segala jenis sistem akses-simpul dan menggunakan views3. Di sana Anda tidak dapat menonaktifkan sql menulis ulang pada pengaturan permintaan dan sehingga Anda dapat menonaktifkan sistem akses node pada tampilan ini.

2
Daniel Wehner

Saya pikir cara termudah untuk mencapai apa yang Anda inginkan adalah dengan menggunakan Page manager (Ctools), benar-benar mudah digunakan, yang harus Anda lakukan adalah menentukan node mana yang akan dialihkan di mana (dalam hal ini, dari satu node ke yang lain)

1
Nicolas_ii

Modul Akses Konten akan menyesuaikan kebutuhan Anda dengan sempurna.

Modul ini memungkinkan Anda untuk mengelola izin untuk jenis konten berdasarkan peran dan penulis. Ini memungkinkan Anda menentukan tampilan khusus, mengedit, dan menghapus izin untuk setiap jenis konten. Secara opsional, Anda dapat mengaktifkan per pengaturan akses konten, sehingga Anda dapat menyesuaikan akses untuk setiap node konten.

Ini juga memiliki dokumentasi yang baik untuk membantu Anda memulai.

1
AjitS

Jika node "termasuk konten" Anda harus tetap tidak dapat diakses, maka pertimbangkan untuk memblokir/node/* pada server web "location =/node/*" level. Default tolak akses ke semua/node. Default memungkinkan akses ke node yang menerima path-auto path seperti/halaman.

(Kata sandi .htaccess dasar untuk subdirektori juga merupakan cara yang layak untuk memblokir pengindeksan pencarian tidak disengaja oleh crawler eksternal.)

Anda tidak pernah dapat menjamin bahwa suatu node tidak akan dapat diakses melalui modul kontribusi yang kebetulan diinstal di masa depan, atau yang belum Anda pahami sepenuhnya. (Hasil pencarian, daftar, tampilan default, ikhtisar kategori taksonomi ...)

Ini adalah tujuan dari node.

Apakah privasi "konten yang disertakan" Anda itu penting bagi Anda? Jika demikian, maka ...

  1. Semua yang memiliki URL pada akhirnya akan ditabrak oleh google.

    Karena mesin pencari tidak mengandalkan tautan laba-laba saja. Mereka juga mengevaluasi umpan balik peramban dll. Tidak ada robot.txt, atau pathauto, globalredirect, modul rabbithole akan membantu Anda tidur dengan tenang. Jika node dapat diakses, maka itu akan diindeks. Mungkin oleh browser/addons Anda sendiri.

  2. Mempertimbangkan jika "konten yang akan dimasukkan" harus benar-benar menjadi simpul, jika tidak ada yang mengaksesnya sebagai halaman ?

    Jika "konten yang disertakan" Anda akan disimpan di dalam mini-panel/blok/snippet/bean/..., maka Anda berada pada risiko yang jauh lebih rendah dari yang pernah terdaftar, atau pernah muncul sebagai halaman dengan URL otomatis yang belum Anda ketahui . (halaman ikhtisar taksonomi, pencarian, tampilan ...)

1
user18099

Modul Batasi Node Tampilan Halaman melakukan apa yang Anda inginkan.

Dari deskripsi modul:

Pernahkah Anda menggunakan slideshow tipe slide yang perlu Anda publikasikan tetapi tidak ingin simpulnya dapat diakses sendiri menggunakan jalur node/XXX? Modul ini untuk Anda!

Dengan modul ini Anda dapat membatasi akses ke mode tampilan simpul full, sehingga Anda tidak dapat mengakses simpul pada node/XXX.

0
user72672