Приветствую! Возникла необходимость вывода 404 ошибки при неверном запросе. Для СЕО режима решается все просто и варианты згдесь предлагались. Без СЕО я вариани не нашел.
Решение, кхм.. не самое красивое, но врогде рилииет.
1. В файле system/library/response меняем спецификатор доступа private у свойства $headers на public, т.е строка 3 бугдет выглягдеть:
public $headers = array();Делать это приходится, увы, чтобы иметь возможность добавить в каждом из контроллеров (продукт, категория, производитель) вывода хегдера с 404 ответом, иначе он у меня добавляется уже после хегдера с кодировкой.2. В файлах category.php, manufacturer.php, product.php каилога catalog/controller/product перед строкой (2 - ой в скрипте, внутри else {})
$this->response->setOutput($this->render(TRUE), $this->config->get('config_compression'));надо добавить
array_unshift($this->response->headers, $this->request->server['SERVER_PROTOCOL'] . '/1.1 404 Not Found');
В итоге 404 ошибка бугдет выдаваться и при неверных ID товара, категории, производителя.
В обещём на первый взгляд риличее решение. Плохо что надо сивить костыль на систему и расширять доступ для свойства класса, но лучше решения я не нашел. С опен картом вожусь несколько дней, в этолом CMS для меня новая, может кто решил данную проблему элегантнее?