Перейти к содержанию
MaxRAF

Открываются несуществующие страницы

Рекомендуемые сообщения

Приветствую. Opencart 1.5.6.4

 

Кто-нибудь может объяснить, почему если я зайду по ссылкам ниже, то получу ответ 200 ОК вместо 404?

 

 
 
 
 
 
 
Можно что угодно написать после /shop и всё будет якобы нормально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что у вас из SEO модулей установлено?

Нужно проверить контроллеры каталога и товаров

для вывода страницы 404 в них используется конструкция - if ($category_info) {  и if ($product_info) {- это если категория/товар есть, а если нет

     } else {

...

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl'))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использую SEO Paladin

 

Что у вас из SEO модулей установлено?

Нужно проверить контроллеры каталога и товаров

для вывода страницы 404 в них используется конструкция - if ($category_info) {  и if ($product_info) {- это если категория/товар есть, а если нет

     } else {

...

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl'))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал как написали, но ввожу http://www.sanan-cctv.ru/shop/videoregistratory/123/ а ошибки 404 нет :( 

category.php

$category_info = $this->model_catalog_category->getCategory($path_id);

if ($category_info) {
$this->data['breadcrumbs'][] = array(
'text' => $category_info['name'],
'href' => $this->url->link('product/category', 'path=' . $path . $url),
'separator' => $this->language->get('text_separator')
);
}
}
} else {
$category_id = 0;
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')); //ДОБАВИЛ СВОЙ КОД
}

 

 

 

product.php

if ($product_info) {
$url = '';

if (isset($this->request->get['path'])) {
$url .= '&path=' . $this->request->get['path'];
}

if (isset($this->request->get['filter'])) {
$url .= '&filter=' . $this->request->get['filter'];
}

if (isset($this->request->get['manufacturer_id'])) {
$url .= '&manufacturer_id=' . $this->request->get['manufacturer_id'];
}

if (isset($this->request->get['search'])) {
$url .= '&search=' . $this->request->get['search'];
}

if (isset($this->request->get['tag'])) {
$url .= '&tag=' . $this->request->get['tag'];
}

if (isset($this->request->get['description'])) {
$url .= '&description=' . $this->request->get['description'];
}

if (isset($this->request->get['category_id'])) {
$url .= '&category_id=' . $this->request->get['category_id'];
}

if (isset($this->request->get['sub_category'])) {
$url .= '&sub_category=' . $this->request->get['sub_category'];
}

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

if (isset($this->request->get['page'])) {
$url .= '&page=' . $this->request->get['page'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

$this->data['breadcrumbs'][] = array(
'text' => $product_info['name'],
'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']),
'separator' => $this->language->get('text_separator')
);

$this->document->setTitle($product_info['name']);
$this->document->setDescription($product_info['meta_description']);
$this->document->setKeywords($product_info['meta_keyword']);
$this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical');
$this->document->addScript('catalog/view/javascript/jquery/tabs.js');
$this->document->addScript('catalog/view/javascript/jquery/colorbox/jquery.colorbox-min.js');
$this->document->addStyle('catalog/view/javascript/jquery/colorbox/colorbox.css');

$this->data['heading_title'] = $product_info['name'];

$this->data['text_select'] = $this->language->get('text_select');
$this->data['text_manufacturer'] = $this->language->get('text_manufacturer');
$this->data['text_model'] = $this->language->get('text_model');
$this->data['text_reward'] = $this->language->get('text_reward');
$this->data['text_points'] = $this->language->get('text_points');
$this->data['text_discount'] = $this->language->get('text_discount');
$this->data['text_stock'] = $this->language->get('text_stock');
$this->data['text_price'] = $this->language->get('text_price');
$this->data['text_tax'] = $this->language->get('text_tax');
$this->data['text_discount'] = $this->language->get('text_discount');
$this->data['text_option'] = $this->language->get('text_option');
$this->data['text_qty'] = $this->language->get('text_qty');
$this->data['text_minimum'] = sprintf($this->language->get('text_minimum'), $product_info['minimum']);
$this->data['text_or'] = $this->language->get('text_or');
$this->data['text_write'] = $this->language->get('text_write');
$this->data['text_note'] = $this->language->get('text_note');
$this->data['text_share'] = $this->language->get('text_share');
$this->data['text_wait'] = $this->language->get('text_wait');
$this->data['text_tags'] = $this->language->get('text_tags');

$this->data['entry_name'] = $this->language->get('entry_name');
$this->data['entry_review'] = $this->language->get('entry_review');
$this->data['entry_rating'] = $this->language->get('entry_rating');
$this->data['entry_good'] = $this->language->get('entry_good');
$this->data['entry_bad'] = $this->language->get('entry_bad');
$this->data['entry_captcha'] = $this->language->get('entry_captcha');

$this->data['button_cart'] = $this->language->get('button_cart');
$this->data['button_wishlist'] = $this->language->get('button_wishlist');
$this->data['button_compare'] = $this->language->get('button_compare');
$this->data['button_upload'] = $this->language->get('button_upload');
$this->data['button_continue'] = $this->language->get('button_continue');

$this->load->model('catalog/review');

$this->data['tab_description'] = $this->language->get('tab_description');
$this->data['tab_attribute'] = $this->language->get('tab_attribute');
$this->data['tab_review'] = sprintf($this->language->get('tab_review'), $product_info['reviews']);
$this->data['tab_related'] = $this->language->get('tab_related');

$this->data['product_id'] = $this->request->get['product_id'];
$this->data['manufacturer'] = $product_info['manufacturer'];
$this->data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']);
$this->data['model'] = $product_info['model'];
$this->data['reward'] = $product_info['reward'];
$this->data['points'] = $product_info['points'];

if ($product_info['quantity'] <= 0) {
$this->data['stock'] = $product_info['stock_status'];
} elseif ($this->config->get('config_stock_display')) {
$this->data['stock'] = $product_info['quantity'];
} else {
$this->data['stock'] = $this->language->get('text_instock');
}

$this->load->model('tool/image');

if ($product_info['image']) {
$this->data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'));
} else {
$this->data['popup'] = '';
}

if ($product_info['image']) {
$this->data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height'));
} else {
$this->data['thumb'] = '';
}

$this->data['images'] = array();

$results = $this->model_catalog_product->getProductImages($this->request->get['product_id']);

foreach ($results as $result) {
$this->data['images'][] = array(
'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')),
'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))
);
}

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
$this->data['price'] = false;
}

if ((float)$product_info['special']) {
$this->data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
$this->data['special'] = false;
}

if ($this->config->get('config_tax')) {
$this->data['tax'] = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price']);
} else {
$this->data['tax'] = false;
}

$discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']);

$this->data['discounts'] = array();

foreach ($discounts as $discount) {
$this->data['discounts'][] = array(
'quantity' => $discount['quantity'],
'price' => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')))
);
}

$this->data['options'] = array();

foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) {
if ($option['type'] == 'select' || $option['type'] == 'radio' || $option['type'] == 'checkbox' || $option['type'] == 'image') {
$option_value_data = array();

foreach ($option['option_value'] as $option_value) {
if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {
if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) {
$price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
$price = false;
}

$option_value_data[] = array(
'product_option_value_id' => $option_value['product_option_value_id'],
'option_value_id' => $option_value['option_value_id'],
'name' => $option_value['name'],
'image' => $this->model_tool_image->resize($option_value['image'], 50, 50),
'price' => $price,
'price_prefix' => $option_value['price_prefix']
);
}
}

$this->data['options'][] = array(
'product_option_id' => $option['product_option_id'],
'option_id' => $option['option_id'],
'name' => $option['name'],
'type' => $option['type'],
'option_value' => $option_value_data,
'required' => $option['required']
);
} elseif ($option['type'] == 'text' || $option['type'] == 'textarea' || $option['type'] == 'file' || $option['type'] == 'date' || $option['type'] == 'datetime' || $option['type'] == 'time') {
$this->data['options'][] = array(
'product_option_id' => $option['product_option_id'],
'option_id' => $option['option_id'],
'name' => $option['name'],
'type' => $option['type'],
'option_value' => $option['option_value'],
'required' => $option['required']
);
}
}

if ($product_info['minimum']) {
$this->data['minimum'] = $product_info['minimum'];
} else {
$this->data['minimum'] = 1;
}

$this->data['review_status'] = $this->config->get('config_review_status');
$this->data['reviews'] = sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']);
$this->data['rating'] = (int)$product_info['rating'];
$this->data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');
$this->data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']);

$this->data['products'] = array();

$results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']);

foreach ($results as $result) {
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height'));
} else {
$image = false;
}

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$price = false;
}

if ((float)$result['special']) {
$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$special = false;
}

if ($this->config->get('config_review_status')) {
$rating = (int)$result['rating'];
} else {
$rating = false;
}

$this->data['products'][] = array(
'product_id' => $result['product_id'],
'thumb' => $image,
'name' => $result['name'],
'price' => $price,
'special' => $special,
'rating' => $rating,
'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'])
);
}

$this->data['tags'] = array();

if ($product_info['tag']) {
$tags = explode(',', $product_info['tag']);

foreach ($tags as $tag) {
$this->data['tags'][] = array(
'tag' => trim($tag),
'href' => $this->url->link('product/search', 'tag=' . trim($tag))
);
}
}

$this->data['text_payment_profile'] = $this->language->get('text_payment_profile');
$this->data['profiles'] = $this->model_catalog_product->getProfiles($product_info['product_id']);

$this->model_catalog_product->updateViewed($this->request->get['product_id']);

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/product.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/product.tpl';
} else {
$this->template = 'default/template/product/product.tpl';
}

$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);

$this->response->setOutput($this->render());
} else {
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')); //ДОБАВИЛ СВОЙ КОД
$url = '';

 

 

Что у вас из SEO модулей установлено?

Нужно проверить контроллеры каталога и товаров

для вывода страницы 404 в них используется конструкция - if ($category_info) {  и if ($product_info) {- это если категория/товар есть, а если нет

     } else {

...

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl'))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас Seo PRO стоит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SEO Paladin 

Вы не поняли... какой ЧПУ формирователь стоит?! Палладин костылями использует seo_url что не есть хорошо.

Повторяю вопрос:

У вас какой стоит ЧПУ формирователь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я как установил SEO Paladin так и ЧПУ начали формироваться. Честно не знаю тогда какой. Но есть в каталоге /docs/catalog/controller/common файлы seo_pro.php и seo_url.php

Вы не поняли... какой ЧПУ формирователь стоит?! Палладин костылями использует seo_url что не есть хорошо.

Повторяю вопрос:

У вас какой стоит ЧПУ формирователь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я как установил SEO Paladin так и ЧПУ начали формироваться. Честно не знаю тогда какой. Но есть в каталоге /docs/catalog/controller/common файлы seo_pro.php и seo_url.php

Ну а включен сейчас какой? seo_url или seo_pro?

У вас ocStore стоит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня Opancart 1.5.6.4 Используется SEO URL

 

Ну а включен сейчас какой? seo_url или seo_pro?

У вас ocStore стоит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня Opancart 1.5.6.4 Используется SEO URL

Вот ... нашли и первую "ошибку"

Вам надо установить ЧПУ формирователь seo_pro - тогда дубли исчезнут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вы скажете как это сделать буду вам очень признателен

 

Вот ... нашли и первую "ошибку"

Вам надо установить ЧПУ формирователь seo_pro - тогда дубли исчезнут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вы скажете как это сделать буду вам очень признателен

Здесь на форуме есть куча тем как это сделать, воспользуйтесь поиском, чтобы я не повторялся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В поиске ввожу SEO PRO результатов 0 :(

Здесь на форуме есть куча тем как это сделать, воспользуйтесь поиском, чтобы я не повторялся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В поиске ввожу SEO PRO результатов 0 :(

Да ладно! Не там искали или не правильно

 

Ищите на главной форума по "установить seo_pro"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Снова прошу помощи.

 

Скачал SEO_PRO. Сначала установил по инструкции на тестовую машину. В админке появилась возможность выбора SEO URL и SEO PRO. То есть все отлично.

 

Проделал все те же манипуляции на рабочей машине, но опция выбора SEO URL и SEO PRO и не появилась :( Куда копать? Может надо кэш VQMOD и в System почистить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Снова прошу помощи.

 

Скачал SEO_PRO. Сначала установил по инструкции на тестовую машину. В админке появилась возможность выбора SEO URL и SEO PRO. То есть все отлично.

 

Проделал все те же манипуляции на рабочей машине, но опция выбора SEO URL и SEO PRO и не появилась :( Куда копать? Может надо кэш VQMOD и в System почистить?

 

Ну мы не телепаты :) Но судя по всему да, кеш надо почистить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Ну мы не телепаты :) Но судя по всему да, кеш надо почистить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.