Jak ukryć domyślną stronę / węzeł?

22

Drupal po wyjęciu z pudełka zawiera stronę (która jest domyślną stroną główną) przypisaną do ścieżki do węzła .

Jak mogę uniknąć, aby użytkownicy do niego dotarli i przekierowali ich na rzeczywistą stronę główną witryny?

wiifm
źródło
Użyłem rozwiązania zaproponowanego przez @kiamlaluno do przekierowania węzła na inną ścieżkę.

Odpowiedzi:

17

Nie ma łatwego sposobu na ukrycie tej strony. Jeśli go nie używasz, możesz zaimplementować hook_menu_alter () i albo całkowicie go usunąć, albo ustawić wywołanie zwrotne dostępu na FALSE.

Berdir
źródło
1
Oto dobra odpowiedź Clive'a z przykładowym kodem drupal.stackexchange.com/a/24133/6309
milkovsky
8

Utwórz alias ścieżki, który przekierowuje z / node do strony, której chcesz użyć jako strony głównej.

kiamlaluno
źródło
1
To nie działa dla mnie z modułem aliasu URL, aliasing / node to <front> lub index.php. Usiłuję przesłać dalej do
John
5
Dziwne zrobiłem / węzeł do <front> i działa dobrze.
Sean Bannister,
Podobnie jak ty @ john interfejs użytkownika aliasingu nie pozwala mi przejść do pierwszej strony. Zamiast tego musiałem użyć modułu przekierowującego.
Postscripter,
6

Wolę zmienić wywołanie zwrotne strony dla / node, aby wyświetlał błąd 404 Page.
To zawsze pokazuje twoją niestandardową stronę 404 podczas uzyskiwania dostępu / węzła.

function yourmodule_menu_alter(&$items) {
    $items['node']['page callback'] = 'drupal_not_found';      
}
Marc Bachmann
źródło
4
<?php
function MY_MODULE_menu_alter(&$callbacks) {
unset($callbacks['node']);
}
?>

lub dodaj to do settings.php (adresy URL przychodzące)

<?php
function custom_url_rewrite_inbound(&$result, $path, $path_language) {
  if ($path == 'node') {
    $result = ''; 
  }
}
?>
AyeshK
źródło
1

Podobnie do odpowiedzi berdirs, mam następujący kod zawarty w module będącym częścią niestandardowej dystrybucji, z której budujemy:

function HOOK_menu_alter(&$items) {
  $items['node']['page callback'] = '_HOOK_empty_home';
}

function _HOOK_empty_home() {
  drupal_set_title('');
  return '';
}

W ten sposób mogę zachować ścieżkę „węzła” jako pierwszej strony i użyć kontekstu do pozycjonowania bloków w celu zbudowania wymaganej pierwszej strony.

Odszyfrować
źródło
1

Możesz utworzyć stronę zamapowaną na / node, która nie zostanie opublikowana. Tak więc użytkownicy, którzy wywołają tę ścieżkę, będą mieli stronę zabronioną dostępu

pitop
źródło
1

Łatwym rozwiązaniem było dla mnie utworzenie strony, którą chciałbym być stroną główną i ustawienie adresu URL na / node. Następnie w / admin / config / system / site-information ustaw domyślną stronę główną na / node. Nigdy nie widzisz „/ node” w adresie URL, chyba że ktoś faktycznie go wpisze. Jest szybki, łatwy i czysty, pod warunkiem, że chcesz ustawić adres URL strony głównej na / node.

Jack McKenzie
źródło
1

Możesz utworzyć nową stronę z adresem URL węzła, a ludzie zobaczą komunikat przekierowujący ich na stronę główną lub wybierz kategorię czegoś.

Mario
źródło
1

Próbowałem wielu rzeczy. Potem dla Drupala 7 i 8 stwierdziłem, że jest to najłatwiejsze, bez pisania kodu:

pobierz i włącz moduły node_page_disable, globalredirect i redirect.

(Uwaga: moduł przekierowuje węzeł / strona_disable / węzeł do strony błędu 404 nie znaleziono).

następnie dodaj przekierowanie dla / node -> pierwszej strony

Pamiętaj, że przekierowanie przekierowuje zarówno / node, jak i / node / na pierwszą stronę.

i przydatny artykuł do przeczytania: https://www.drupalaid.com/blog/3-things-you-should-hide

Kasım Burak Özdemir
źródło
To jest widok w D8, więc drush @example.com views-disable frontpagego wyłączy. Nadal dostanie 404, dopóki nie skończą się inne rzeczy.
Colan
0

Utwórz węzeł, a następnie przejdź do konfiguracji witryny -> informacje o witrynie i ustaw stronę główną na ścieżkę do węzła. Więc jeśli jest to twój pierwszy węzeł, będzie to węzeł / 1.

Edycja: Domyślnie po utworzeniu węzła ta strona zniknie, jeśli zaznaczysz „awans do pierwszej strony”. Krok informacji o witrynie sprawi, że ten węzeł stanie się faktyczną stroną główną.

Mike L.
źródło
1
To prawda, ale /nodewciąż można go osiągnąć, po prostu domyślnie nie będzie widoczny
Laxman13,
Źle odczytałem, o co on prosił. Co z modułem przekierowania ścieżki http://drupal.org/project/path_redirect ?
Mike L.
1
Niestety przekierowanie ścieżki nie pozwala na przekierowanie z istniejących ścieżek. Sprawdza, czy ścieżka, z której próbujesz przekierować, jest prawidłową ścieżką, a jeśli tak, to przekierowanie nie jest tworzone i wyświetla się ostrzeżenie.
Laxman13
Fajne. Nie używałem tego od jakiegoś czasu, więc nie byłem pozytywny. Dzięki!
Mike L.
0

Możesz użyć modułu Reguły , aby sprawdzić adres URL przed wyświetleniem strony i przekierować użytkowników na inną stronę, jeśli chcesz.

  • Dodaj regułę ze zdarzeniem: treść zostanie wyświetlona
  • Dodaj warunek: Wykonaj niestandardowy kod PHP i sprawdź ścieżkę
  • Dodaj akcję: Przekierowanie strony i wybierz ścieżkę, do której chcesz przekierować
Laxman13
źródło
Wprowadza to nie tylko surowe kary za wyniki, należy uznać je za bardzo niebezpieczne. Nie należy nigdy sugerować „Wykonaj własny PHP”, chyba że wszystkie skutki uboczne i wady są bardzo dobrze znane. -1 za to.
berkes
@berkes Zakładam, że dzieje się tak, ponieważ reguły sprawdzają każde ładowanie strony, a tym samym spowalniają witrynę? Dlaczego „Wykonaj niestandardowe php” jest zawsze źle postrzegane? Oczywiście nie jest to dobre dla użytkowników końcowych, ale czy są też wady dla programistów? Przepraszam, jeśli długo, ciężko pracowałem, aby być najlepszym, jak potrafię z Drupalem i uczyć się „tajników”. (W razie potrzeby można dodać drugą część jako własne pytanie)
Laxman13
zastanów się nad nowym pytaniem „Jakie są wady używania„ niestandardowego ”PHP z niektórymi przykładowymi obszarami (bloki, argumenty widoków, filtr php itp.), w których można to omówić?
berkes
0

Popularne pytanie sprzed kilku lat, z kilkoma interesującymi odpowiedziami. Jednak zgadnij, co: „Obecnie jest na to moduł… właściwie nawet dwa!” (nie wymienione w żadnej z wcześniejszych odpowiedzi).

Czytaj dalej, aby uzyskać więcej informacji ... (cytaty pochodzą ze stron ich projektów) ...

Administrator strony węzła (D6 lub D7):

Ten moduł dodaje panel ustawień administracyjnych do obsługi dostępu do strony / węzła . Po aktywacji dostępne są trzy możliwe konfiguracje:

  • Rdzeń - Rdzeń Drupal jak zwykle będzie obsługiwał dostęp do stron węzłów: wszyscy użytkownicy z uprawnieniami do „dostępu do treści”
  • Wyłączone - nikt nie będzie mógł uzyskać dostępu / węzła. Zwróci „Nie znaleziono strony” (404).
  • Za zgodą - dostęp będzie obsługiwany przez nowe uprawnienie: „strona węzła dostępu”

Wyłączenie strony węzła (D6 lub D7, choć tylko wersje rc2):

Umożliwia łatwy dostęp do interfejsu użytkownika i wyłączanie ścieżki / węzła, gdy nie jest używany. Zostało to zainspirowane względami bezpieczeństwa w module kontroli produkcji .

Pierre.Vriens
źródło
-1

najlepszym sposobem jest ukrycie węzłów przed funkcją page_preprocess_page

function template_preprocess_page(&$variables) {
    if ($variables['is_front'] == 1) {
        if (isset($variables['page']['content']['system_main'])) {
            unset($variables['page']['content']['system_main']);
        }
    }
}
Serg Kushch
źródło