Главная страница, или как убить /node

Главные вкладки

Аватар пользователя snezhi snezhi 30 октября 2009 в 8:22

Здравствуйте. Вопрос про то, как же правильно создавать главную страницу.

Я знаю кучу способов сделать особенную главную страницу, отличную от стандартной. Но при этом всем остается одна проблема, которую я не могу решить. Когда переопределяешь главную страницу, все равно остается страница /node, которая содержит ленту всех материалов, да еще и rss канал. А вот мне не нужно, чтобы эта страница вообще существовала. Что делать? Как убрать системную страницу node? Как сделать, чтобы ее как бы и не существовало вовсе? 404?

Комментарии

Аватар пользователя Geldora Geldora 30 октября 2009 в 9:19

А зачем?

По теме - поставьте вьювс, переопределите фронтпейдж (перепишите там адрес страницы) + уберите рсс, если вам не нравится.

Аватар пользователя snezhi snezhi 30 октября 2009 в 11:41

Geldora wrote:
А зачем?

Ну хотя бы потому, что мне не хочется иметь на сайте лишних страниц для особо любопытных глаз. Разве я не имею на это право?

Geldora wrote:
По теме - поставьте вьювс, переопределите фронтпейдж (перепишите там адрес страницы) + уберите рсс, если вам не нравится.
Кстати, насчет рсс, что вы конкретно имеете в виду?

Аватар пользователя Azerot Azerot 30 октября 2009 в 11:15

snezhi, вы понимаете логику работы модулей в Drupal?
Страница /node предоставляется системным модулем /node и просто не может быть убита, без переписывания самого модуля, который входит в состав ядра Drupal.

Но вы можете написать какое-либо хитрой правило к mod_rewrite, которое будет выдавать 404-ю ошибку при получении URL, который заканчивается на /node.

Аватар пользователя snezhi snezhi 30 октября 2009 в 11:38

Azerot wrote:
snezhi, вы понимаете логику работы модулей в Drupal?
Страница /node предоставляется системным модулем /node и просто не может быть убита, без переписывания самого модуля, который входит в состав ядра Drupal.
Да, я в курсе. Именно поэтому и написал. Мне кажется странным, что такой гибкий и настраиваемый движок, имеет такой вот атавизм, который нельзя ни убрать, ни хотя бы переоформить так, как нужно. Если при помощи шаблонов я даже и могу убрать $content совсем, но вот как убрать rss канал из header, я совершенно не представляю.

Azerot wrote:
Но вы можете написать какое-либо хитрой правило к mod_rewrite, которое будет выдавать 404-ю ошибку при получении URL, который заканчивается на /node.
Я тоже думал об этом. Но уж как-то сложно все получается.

Аватар пользователя penexe penexe 30 октября 2009 в 11:43

"Azerot" wrote:
Страница /node предоставляется системным модулем /node и просто не может быть убита, без переписывания самого модуля, который входит в состав ядра Drupal.

может

Аватар пользователя kosilko kosilko 30 октября 2009 в 12:12

"Demimurych" wrote:
hook_menu

определяете точно такой же адрес /node/ с access false например.


есть еще hook_menu_alter, где можно просто убить чужие итемы

Аватар пользователя snezhi snezhi 30 октября 2009 в 13:55

Ок, спасибо всем. Действительно помогло написание небольшого модуля вот с такой функцией:

function hook_menu_alter(&$items) {
unset($items['node']);
unset($items['rss.xml']);
}

чтобы получить "страница не найдена", либо вот с такой:

function hook_menu_alter(&$items) {
$items['node']['access callback'] = FALSE;
$items['rss.xml']['access callback'] = FALSE;
}

чтобы получить "доступ запрещен".

Аватар пользователя snezhi snezhi 30 октября 2009 в 19:10

teamfighter wrote:
Может, я чего и не понял, но не проще ли было главную страницу указать тут?

admin/settings/site-information

Вообще-то речь шла не о том, как переопределить главную, а о том, как удалить страницу под названием "/node".

Аватар пользователя DennisVV DennisVV 30 октября 2009 в 18:51

"teamfighter" wrote:
admin/settings/site-information

там написано: Главная страница показывает содержимое, расположенное по этому адресу. Если затрудняетесь, укажите "node".
а если не указывать ничего, в том числе и "node"? чем это грозит?

Аватар пользователя teamfighter teamfighter 30 октября 2009 в 19:28

Тогда надо просто указать ту страницу, которую вы хотите видеть главной. А в Building -> Menu, в ссылках на главную страницу указывать <front>

Аватар пользователя Dalay Dalay 30 октября 2009 в 21:39

Как вариант избавления от site.ru/node.

Допишите в settings.php :

function custom_url_rewrite_outbound(&$path, &$options, $original_path)
{
if ($path == 'node') { $path = ''; }
}
function custom_url_rewrite_inbound(&$result, $path, $path_language)
{
if ($path == '') { $result = 'node'; }
}

И будет вам счастье.

Аватар пользователя IrinaStasuk IrinaStasuk 5 января 2010 в 22:48

У меня еще один вопрос по теме. У меня стоит в настройках, что главная frontpage. И нужной странице дан превдоним frontpage. Вроде все замечательно. Но Гугл не любит повторяющихся страниц. В панеле вебмастера гугл пишет, что найдены две одинаковые страницы www.мой сайт/ и www.мой сайт/frontpage.

Я не могу указать псевдоним страницы www.мой сайт/, так как после слеша должно быть что-нибудь. Что с этим делать?

Аватар пользователя donvictorio donvictorio 1 февраля 2011 в 19:50

может ламерский вариант, но я во всех типах материалов снял галку по умолчанию публиковать на главной, создал страницу ошибки, и в свойствах публикации указал публиковать на главной. также эту страницу использую как страницу ошибки 403 и 404 в настройках сообщений об ошибках.
просто нужно следить, чтобы не было материалов с этой галочкой (публикация на главной) и будет щастье.