Как исправить некорректное формирование канонического URL в OpenCart 3 (версия 3.0.3.2)?

Как исправить некорректное формирование URL в Opencart 3 (3.0.3.2)? 

1. В текущий момент для категории URL формируется следующим образом: 
   - URL: <a href="https://site-demo.ru/zvukousilitelnoe-i-studijnoe-oborudovanie/audiointerfejsy" rel="nofollow">https://site-demo.ru/zvukousilitelnoe-i-studijnoe-...</a> 
   - Canonical: <a href="https://site-demo.ru/audiointerfejsy" rel="nofollow">https://site-demo.ru/audiointerfejsy</a> 

   Необходимо изменить так, чтобы: 
   - URL: <a href="https://site-demo.ru/zvukousilitelnoe-i-studijnoe-oborudovanie/audiointerfejsy" rel="nofollow">https://site-demo.ru/zvukousilitelnoe-i-studijnoe-...</a> 
   - Canonical: <a href="https://site-demo.ru/zvukousilitelnoe-i-studijnoe-oborudovanie/audiointerfejsy" rel="nofollow">https://site-demo.ru/zvukousilitelnoe-i-studijnoe-...</a> 

2. В текущий момент для товара URL формируется следующим образом: 
   - URL: <a href="https://site-demo.ru/zvukousilitelnoe-i-studijnoe-oborudovanie/audiointerfejsy/steinberg-ur22c-red-recording-pack-komplekt-dlya-zvukozapisi-tsvet-krasnyj" rel="nofollow">https://site-demo.ru/zvukousilitelnoe-i-studijnoe-...</a> 
   - Canonical: <a href="https://site-demo.ru/steinberg-ur22c-red-recording-pack-komplekt-dlya-zvukozapisi-tsvet-krasnyj" rel="nofollow">https://site-demo.ru/steinberg-ur22c-red-recording...</a> 

   Необходимо изменить так, чтобы: 
   - URL: <a href="https://site-demo.ru/zvukousilitelnoe-i-studijnoe-oborudovanie/audiointerfejsy/steinberg-ur22c-red-recording-pack-komplekt-dlya-zvukozapisi-tsvet-krasnyj" rel="nofollow">https://site-demo.ru/zvukousilitelnoe-i-studijnoe-...</a> 
   - Canonical: <a href="https://site-demo.ru/zvukousilitelnoe-i-studijnoe-oborudovanie/audiointerfejsy/steinberg-ur22c-red-recording-pack-komplekt-dlya-zvukozapisi-tsvet-krasnyj" rel="nofollow">https://site-demo.ru/zvukousilitelnoe-i-studijnoe-...</a> 
  • 3 ноября 2024 г. 23:33
Ответы на вопрос 1
Для исправления некорректного формирования канонического URL в OpenCart 3 версии 3.0.3.2, необходимо внести изменения в файлы темы и/или контроллеров, отвечающих за генерацию URL. Я постараюсь объяснить, как это можно сделать.

### Шаг 1: Изменения в контроллере

Вам нужно отредактировать контроллеры, которые отвечают за отображение товаров и категорий. Обычно они находятся по следующему пути:

- Для категорий: `catalog/controller/product/category.php`
- Для товаров: `catalog/controller/product/product.php`

В этих файлах нужно поискать, где генерируются канонические URL.

#### Пример для категорий

Откройте `category.php` и найдите участок кода, генерирующий канонический URL для категории. Это может быть что-то вроде:

```php
$this->document->setCanonical($this->url->link('product/category', 'path=' . $path, true));
```

Измените его на:

```php
$this->document->setCanonical($this->url->link('product/category', 'path=' . $path, true) . '/' . $this->request->get['route']);
```

#### Пример для товаров

Откройте `product.php` и найдите участок кода для генерации канонического URL. Обычно это выглядит как:

```php
$this->document->setCanonical($this->url->link('product/product', 'product_id=' . (int)$this->request->get['product_id'], true));
```

Измените на:

```php
$category_info = $this->model_catalog_product->getCategories($product_id);
if ($category_info) {
    // Получаем путь категорий
    $path = '';
    foreach ($category_info as $category) {
        $path .= $category['category_id'] . '_';
    }
    $path = rtrim($path, '_');

    $this->document->setCanonical($this->url->link('product/product', 'path=' . $path . '&product_id=' . $product_id, true));
}
```

### Шаг 2: Проверка и тестирование

После внесения изменений проверьте, как формируются канонические URL для категорий и товаров.

1. Перейдите на страницу категории и товара и проверьте, правильно ли отображаются канонические URL в коде страницы.
2. Убедитесь, что при кэшировании изменений все обновленные URL правильно представлены.

### Шаг 3: Кеширование

Не забудьте очистить кэш вашей платформы OpenCart после внесения изменений. Это можно сделать через админ-панель, перейдя в «Система» -> «Кэш» и нажав на кнопку очистки.

### Заключение

Теперь ваши канонические URL должны правильно соответствовать URL-адресам категорий и товаров. Если у вас возникнут дополнительные проблемы, возможно, потребуется проверить другие контроллеры или настройки SEO для вашей темы, чтобы убедиться, что все корректно настроено.
Похожие вопросы