Як прибрати батьківські категорії SEOPRO в opencart

23.07.2024 | Андрей
Як прибрати батьківські категорії SEOPRO в opencart

Видаляти чи не видаляти батьківські категорії в опенкарт?

Я не маю точної відповіді на це питання, на це впливає багато сторонніх факторів. Наприклад: ви переїхали із вордпреса на опенкарт і вам потрібно зберегти старі посилання або сео-спеціаліст рекомендує використовувати короткі урли.

Як видалити батьківські категорії opencart?

Розглянемо приклад для версії 3 і вище (+OcStore)

Відкрийте файл seopro.php, для OcStore: system/library/seopro.php. Для opencart: catalog/controller/startup/seopro.php.



// знайдіть строку: 
$data['path'] = $this->getPathByCategory($category);
//Замініть її на  
$data['path'] = $category;

/*Якщо строку не знайшли, скоріш за все у вас старіша версія. Тоді знайдіть строки: */
foreach ($categories as $category) {
  $queries[] = 'category_id=' . $category;
}
// Замініть на  
$queries[] = 'category_id=' . end($categories);


На цьому правки із сеопро закінчуються. Тепер сеопро буде використовувати тільки поточку категорію для формування урл адреси. Якщо ви вкиористовуєте модифікатори, які внесли правки в сеопро - оновіть модифікатори.

Як зберегти повні хлібні крихти для в категорії opencart 2?

Відкрийте файл: catalog/controller/product/category.php та додайте нову функцію



private function getPathByCategory($category_id) {
  $category_id = (int)$category_id;
  if ($category_id < 1) return false;
  static $path = null;
  if (!isset($path)) {
    $path = $this->cache->get('category.seopath');
    if (!isset($path)) $path = array();
  }
  if (!isset($path[$category_id])) {
    $max_level = 10;
    $sql = "SELECT CONCAT_WS('_'";
    for ($i = $max_level-1; $i >= 0; --$i) {
      $sql .= ",t$i.category_id";
    }
    $sql .= ") AS path FROM " . DB_PREFIX . "category t0";
    for ($i = 1; $i < $max_level; ++$i) {
      $sql .= " LEFT JOIN " . DB_PREFIX . "category t$i ON (t$i.category_id = t" . ($i-1) . ".parent_id)";
    }
    $sql .= " WHERE t0.category_id = '" . $category_id . "'";
    $query = $this->db->query($sql);
    $path[$category_id] = $query->num_rows ? $query->row['path'] : false;
    $this->cache->set('category.seopath', $path);
  }
  return $path[$category_id];
}




// Знайдіть строку
$parts = explode('_', (string)$this->request->get['path']);
// Замініть на 
$parts = explode('_', $this->getPathByCategory($this->request->get['path']));


Бажаєте дізнатись скількі коштує Ваш проєкт?

Заповніть заявку

Категорії

Те, що читають:

Name post

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco

Name post

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco