Здравствуйте! Подскажите как сделать красивую страницу 404 в стиле основного шаблона магазина. Туда же сразу добавить ссылку на карту сайта
Чтобы 404 ошибка открывалась в теле сайта, а не отдельной страницей. Делаем так: Можно "обернуть" содержимое 404-й страницы в оформление магазина: В файле published/SC/html/scripts/templates/frontend/frame.html изменить {if $main_body_tpl}{include file=$main_body_tpl}{else} {if $page_not_found404}{include file="404.html"}{else}{include file="index.html"}{/if} {/if} на Код: {if $main_body_tpl}{include file=$main_body_tpl}{else} {include file="index.html"} {/if} В редакторе дизайна на вкладке "Основная разметка" в режиме правки кода замените <td id="container_main_content"><!-- cpt_container_start -->{cpt_maincontent overridestyle=':iwgkmz'}<!-- cpt_container_end --></td> на <td id="container_main_content"> {if $page_not_found404} {include file="404.html"} {else} <!-- cpt_container_start -->{cpt_maincontent overridestyle=':iwgkmz'}<!-- cpt_container_end --> {/if} </td> Здесь приведен дефолтный тип разметки.
Спасибо огромное, единственный косяк. Вверху и внизу страницы 404 появляются числа, нельзя никак избавиться от этого?
Найдите файл /published/SC/html/scripts/core_functions/functions.php В нем функцию error404page и в ней закоментируйте строки header("HTTP/1.1 404 Not Found;"); header("Status: 404 Not Found;");
Да, кстати чуть не забыл имеется проблема с показом 404 страницы из-за локализации магазина. Это тоже надо подправить, раз у вас ошибка «в теле сайта», а не отдельная страница, ну и чтобы ваши сеошники не орали. Наберите например: www.мой-домен.ru/gf Вас перебросит не на 404 страницу, а на главную. Решение: Находите /published/SC/html/scripts/class.furl.php В этом файле находите вот такой кусок кода: if(strlen($part_value) == 2){//It is language iso2 $languageEntry = LanguagesManager::getLanguageByISO2($part_value); if(!is_null($languageEntry)&&$languageEntry->enabled){ LanguagesManager::setCurrentLanguage($languageEntry->id, false); $this->__path_settings['language_iso2'] = $part_value; $this->__path_settings['get'] .= '&lang_iso2='.$part_value; } break; } Меняете его на вот этот код: if(strlen($part_value) == 2){//It is language iso2 $languageEntry = LanguagesManager::getLanguageByISO2($part_value); if(!is_null($languageEntry)&&$languageEntry->enabled){ LanguagesManager::setCurrentLanguage($languageEntry->id, false); $this->__path_settings['language_iso2'] = $part_value; $this->__path_settings['get'] .= '&lang_iso2='.$part_value; } else { $this->__path_settings['ukey'] = $part_value; } break; } Проверяете.