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?


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

Odpowiedzi:



8

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


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';      
}

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 = ''; 
  }
}
?>


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.


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


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.


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ś.


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


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ą.


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ć

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 .


-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']);
        }
    }
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.