Odkryłem, że czasami mam węzeł, który po prostu zawiera treści, które będą wyświetlane gdzie indziej, ale nie powinny być przeglądane bezpośrednio. Oznacza to, że nikt nigdy nie powinien przechodzić do węzła / 1234, ale treść w węźle 1234 powinna być wyświetlana gdzie indziej. Na przykład tworzę stronę o treści z kartami za pomocą widoków. Są więc strony „O mnie”, „O nas” i „O nich”. Wszystkie są wyświetlane na jednej stronie z kartami z widokami. Nie chcę więc, aby ludzie przechodzili bezpośrednio do węzła „O nas”, ponieważ wtedy nie widzieliby kart dla innych stron. Jednocześnie nie chcę, aby Google dawał ludziom bezpośredni link do tego węzła, chcę ograniczyć dostęp, aby użytkownicy mogli uzyskać do niego dostęp tylko poprzez Widok (tj. Kartę).
Muszę więc ograniczyć dostęp do węzła, usunąć go z wyników wyszukiwania Drupal i upewnić się, że Google go nie odbierze. Jakieś sugestie?
Odpowiedzi:
Wydaje mi się, że to dobry przypadek użycia modułu Panele, ponieważ możesz tworzyć panele, które będą zastępować strony węzłów, i możesz ustawić kontekst panelu tak, aby użytkownicy mogli zobaczyć stronę, którą chcesz, aby ją zobaczyli, a także reguły dostępu do stron panelu, jeśli ich potrzebujesz. Aby uzyskać więcej informacji, zobacz ten post na do
źródło
Moduł Rabbit Hole zapewnia tę funkcję.
źródło
Jedną z opcji może być nigdy nie publikowanie węzła, ale strona konsumenta ignoruje jego stan publikacji. Tak więc w twoim przykładzie widok „Informacje” może po prostu zignorować stan publikacji węzłów „About-xxx”. Ponieważ węzły nie są publikowane, nieautoryzowany użytkownik nie może uzyskać do nich dostępu i nie powinien być indeksowany przez wyszukiwarkę.
Innym rozwiązaniem jest użycie implementacji
hook_nodeapi('view')
/hook_node_view()
do wydania adrupal_goto()
lubdrupal_access_denied()
gdy strona węzła jest odwiedzana przez nieautoryzowanego użytkownika. Pamiętaj, żehook_nodeapi()
/hook_node_view()
są używane w wielu przypadkach i nie tylko podczas przeglądania strony węzła.hook_menu_alter()
może być również użyty do zmiany wywołania zwrotnego dostępu stron węzłów, aby odmówić dostępu do ukrytych węzłów.Najlepiej chyba nie opierać filtrowania na zakodowanym na stałe identyfikatorze węzła, ale użyć albo niestandardowego pola w węźle (używając CCK / Field API lub niestandardowej tabeli), albo listy ukrytych węzłów przechowywanych w zmiennej .
źródło
W Drupal 7 Dziura Królika zapewnia tę funkcję.
Jak :
Włącz Rabbit Hole węzłów submodule Wtedy będziemy się sekcja config związanego z każdej postaci w Drupal KOD
źródło
Rozwiązany. Najpierw próbowałem odpowiedzi Pierre Buyle, ale jeśli cofniesz publikację węzła, nie będzie można uzyskać do niego dostępu, a węzły staną się bezużyteczne. W moim przypadku mam węzły nadrzędne i podrzędne, tylko węzły podrzędne (do celów administracyjnych) są tymi, które mają być ukryte i NIE mogą być indeksowane przez roboty. To, co zrobiłem z menedżerem stron, spowodowało przekierowanie adresu URL (ukrywając te węzły przed wszystkimi użytkownikami oprócz administratora) z odpowiedzią http zgodnie z tym tuturialem przez http://www.wunderkraut.com/ 1 i nie było indeksowanych węzłów przez roboty. przez moduł bezindeksowy węzła . To zadziała, nawet jeśli nie masz relacji węzła paret-dziecko. Link do samouczka:
źródło
W Drupal 7 powinno być również możliwe użycie hook_node_access () , jest to normalny hook w D7, który może być zaimplementowany przez wszystkie moduły dla wszystkich typów węzłów. Następnie możesz odmówić dostępu, jeśli użytkownik próbuje wyświetlić węzeł we własnym węźle / nid.
Prawdopodobnie musisz także zaimplementować hook_query_node_access_alter () i dodać tam zaznaczenie, aby ukryć węzeł w wynikach wyszukiwania. To może nawet wystarczyć i nie potrzebujesz hook_node_access (). I może nawet działać w D6, ponieważ można tam również zmienić zapytanie, ale w D7 jest to znacznie łatwiejsze z powodu konstruktora zapytań.
źródło
Po prostu ustaw węzeł jako „niepublikowany”, a następnie w widoku dodaj filtr „opublikowany węzeł: nie”.
Jak zauważa SEO, dobrą praktyką jest tworzenie niestandardowego typu zawartości dla tych „duchowych” węzłów i mówienie pathauto, aby podało im określone adresy URL (używam
/dev/null/[title-raw]
;): nawet jeśli węzeł nie zostanie opublikowany, będzie miał własny alias adresu URL, tak w swojej przykład jeśli utworzyć pierwszy węzeł ducha „o nas”, a następnie Zobacz stronę „o nas”, url drugim będzieexample.com/about-us-0
becoseexample.com/about-us
zostało zaczerpnięte z jednego ducha (jednakże, można ręcznie ustawić ścieżki)źródło
Możesz użyć dowolnego systemu dostępu do węzłów i korzystać z widoków3. Tam nie można wyłączyć przepisywania sql w ustawieniach zapytania, a więc można wyłączyć system dostępu do węzła w tym widoku.
źródło
Możesz to zrobić za pomocą modułów reguł.
+ Utwórz nową regułę ze zdarzeniem „Treść jest wyświetlana”.
+ Dodaj kilka warunków, na przykład: Użytkownik ma role: anonimowy, Ścieżka ma alias URL: node / xyz (jest to węzeł, który chcesz ograniczyć dla anonimowego użytkownika). Pamiętaj, aby dodać warunek „i” lub „lub”, jeśli jest to konieczne.
+ Utwórz akcję przekierowania na inną stronę lub zrób coś innego. To jest przykładowy kod, który dla ciebie wyeksportowałem
źródło
Myślę, że najłatwiejszym sposobem na osiągnięcie tego, co chcesz, jest użycie Menedżera stron (Ctools), jest naprawdę prosty w użyciu, wszystko co musisz zrobić, to określić, który węzeł ma przekierowywać (w tym przypadku z jednego węzła do drugiego)
źródło
Moduł Content Access idealnie spełni twoje wymagania.
Ma również dobrą dokumentację, która pomoże Ci zacząć.
źródło
Jeśli twój „włączone” content węzły muszą pozostać niedostępne, a następnie rozważyć blokowanie / node / * na serwer WWW „location = / * / node” poziomu . Domyślnie odmawia dostępu do wszystkich / węzłów. Domyślnie zezwala na dostęp do węzłów, które otrzymały ścieżkę auto-ścieżki, taką jak / pages.
(Podstawowe hasło .htaccess do podkatalogów to dobry sposób na blokowanie przypadkowego indeksowania wyszukiwania również przez zewnętrzne roboty).
Nigdy nie możesz zagwarantować, że węzeł nie będzie dostępny za pośrednictwem modułu, który zostanie zainstalowany w przyszłości, lub takiego, którego jeszcze nie rozumiesz. (Wyniki wyszukiwania, wykazy, widoki domyślne, przegląd kategorii systematyki ...)
Po to są węzły.
Czy prywatność „dołączonych treści” jest dla Ciebie ważna? Jeśli tak, to ...
Wszystko, co ma adres URL, ostatecznie zostanie trafione przez Google.
Ponieważ wyszukiwarki nie polegają wyłącznie na pająkach linków. Oceniają także opinie przeglądarki itp. Brak pliku robot.txt lub pathauto, globalredirect, rabbithole pomoże ci spać spokojnie. Jeśli można uzyskać dostęp do węzła, zostanie on zindeksowany. Może przez własną przeglądarkę / dodatki.
Zastanów się, czy „treść, która ma być zawarta” powinna naprawdę być węzłem , czy nikt nie powinien mieć do niej dostępu jako strony ?
Jeśli Twoja „zawarta treść” byłaby przechowywana w mini-panelu / bloku / snippet / bean / ..., istnieje o wiele mniejsze ryzyko, że kiedykolwiek pojawi się na liście lub pojawi się jako strona z automatycznym adresem URL jeszcze nie wiem . (strony przeglądu taksonomii, wyszukiwanie, widoki ...)
źródło
Moduł Ogranicz widok strony węzła robi dokładnie to, co chcesz.
Z opisu modułu:
Za pomocą tego modułu możesz ograniczyć dostęp do
full
trybu widoku węzła , więc nie możesz uzyskać dostępu do węzłanode/XXX
.źródło