Приветствую! Возникла необходимость вывода 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 для меня новая, может кто решил данную проблему элегантнее?