нормально работающая 404

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

Аватар пользователя jason32 jason32 1 февраля 2007 в 19:23

Недавно озаботился большими траблами с этой 404. На drupal.ru она вообще ни черта не работает, на drupal.org - наполовину.
Поясняю :
http://drupal.ru/abcde,
http://drupal.ru/node/abcde,
http://drupal.ru/12345678,
http://drupal.ru/node/12345678
-----------------------------------------------
http://drupal.org/abcde, - работает
http://drupal.org/node/abcde,
http://drupal.ru/12345678, - работает
http://drupal.ru/node/12345678
------------------------------------------------------
Везде где не работает - выдает общий список нодов, причем ВСЕХ, а не тех, которые можно выводить. А при использовании Видов на сайте вообще беда происходит. Это фича такая или баг? Я решил что это всё же баг( пришлось по ТЗ) и пофиксил это.

P.S Видимо всё же баг Smile http://mtv.co.uk/node/rrrwerwr

Комментарии

Аватар пользователя jason32 jason32 1 февраля 2007 в 19:51

правим два файла
Первый: includes/menu.inc

 function menu_execute_active_handler() {
  if (_menu_site_is_offline()) {
    return MENU_SITE_OFFLINE;
  }

  $menu = menu_get_menu();

  // Determine the menu item containing the callback.
  $path = $_GET['q'];
  while ($path && !isset($menu['callbacks'][$path])) {
    $path = substr($path, 0, strrpos($path, '/'));
  }
!!!!!!!!!!![color=red][b]if (empty($path)) {    return MENU_NOT_FOUND; [/b]     } [/color]!!!!!!!!!!!!!!!
  if (!isset($menu['callbacks'][$path])) {
    return MENU_NOT_FOUND;
  }

Красным - добавленный код, всё остальное без изменений( так как ничерта не работает - ни ббкод, ни html - добавленное в восклицательных знаках, сами знаки ставить не надо!!!) .
Этот патч + создание и наличие 404 страницы в настройках - решает три из четырех задач, остается только ссылки типа site.com/node/abracadabra
Если же 404 не создана и не прописано - выскакивает опять же чёрте что.
Второй файл: modules.node.module
Вместо

function node_page() {
.........................
      break;
    default:

      drupal_set_title('');
      return node_page_default();
  }

ставим

function node_page() {
.........................
      break;
    default:
       drupal_not_found();
  }

Видимо это всё же была фича, только о ней все забыли. С появлением же Views это чревато последствиями - посмотрите например, на милые тестовые посты админов сайта http://mtv.co.uk/ - http://mtv.co.uk/node/rrrwerwr?page=39 - какая прелесть, у меня такие же бывали, точь в точь... Lol