Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Хлебные крошки категорий без родительского url в Seo_Pro


Recommended Posts

Для тех кто использует Seo_Pro и  убрал родительские категории в SEO URL по инструкции (halfhope).

РЕШЕНИЕ проблемы с хлебными крошками, которые сокращались тоже до 1 уровня "Главная - Категория"
 
Заходим в catalog/model/catalog/category.php добавляем метод

	public function getCategoryPath($category_id){
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'");
	   
		return $query->rows;
	}

 
Заходим в catalog/controller/product/category.php перед строкой

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

Добавляем


		//Fix Category breadscrumbs FULL with SEO_PRO
   		$pathway = $this->model_catalog_category->getCategoryPath($category_id);

   		if($pathway){
   			foreach ($pathway as $way) {
   				$category_way = $this->model_catalog_category->getCategory($way['path_id']);
	       			$this->data['breadcrumbs'][] = array(
   	    				'text'      => $category_way['name'],
						'href'      => $this->url->link('product/category', 'path=' . $way['path_id'] . $url),
        				'separator' => $this->language->get('text_separator')
        			);   			
   			}
   		}

Ниже примерно в 170 строке удалите код 

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

 
Вот такой костыль, формирует хлебные крошки для всех уровней категорий.

 

Инструкция для Opencart 1.5

  • +1 6
Надіслати
Поділитися на інших сайтах

  • 2 weeks later...

Поскольку сайт halfhope ru отключен. Напишу здесь, что бы не потерять.
Убираем Родительские категории в url, правим Seo_pro
 
Открываем файл “catalog/controller/common/seo_pro.php”, в функции rewrite() находим код:
 

case 'path':
    $categories = explode('_', $value);
    foreach ($categories as $category) {
        $queries[] = 'category_id=' . $category;
    }
    unset($data[$key]);
    break;

Заменяем в 2х местах его на:

case 'path':
    $categories = explode('_', $value);
    $queries[] = 'category_id=' . end($categories);
    unset($data[$key]);
    break;

Инструкция для стандартного seo_url:
Открываем файл “catalog/controller/common/seo_url.php”, в функции rewrite() находим код:

} elseif ($key == 'path') {
    $categories = explode('_', $value);
  
    foreach ($categories as $category) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'");

        if ($query->num_rows) {
            $url .= '/' . $query->row['keyword'];
        }                           
    }
  
    unset($data[$key]);
}

Заменяем его на:

} elseif ($key == 'path') {
    $categories = explode('_', $value);
  
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)end($categories) . "'");
    if ($query->num_rows) {
        $url .= '/' . $query->row['keyword'];
    }
  
    unset($data[$key]);
}

Инструкция для Opencart 1.5

Змінено користувачем Waha
  • +1 5
Надіслати
Поділитися на інших сайтах

  • 2 weeks later...

Исправление для получения path в модели
 

	public function getCategoryPath($category_id){
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'");
	   
		return $query->rows;
	}

Заменить на 
 

	public function getCategoryPath($category_id){
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "' ORDER BY level ASC");

		return $query->rows;
	}

Добавлена сортировка path_id по уровню, иначе на 3+ уровне вложенности сбивается порядок категорий в хлебных крошках

Надіслати
Поділитися на інших сайтах

Исправление для получения path в модели

 

	public function getCategoryPath($category_id){
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'");
	   
		return $query->rows;
	}

Заменить на 

 

	public function getCategoryPath($category_id){
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "' ORDER BY level ASC");

		return $query->rows;
	}

Добавлена сортировка path_id по уровню, иначе на 3+ уровне вложенности сбивается порядок категорий в хлебных крошках

Добрый день. Написано много, немного запутался, может просто туплю. Подскажите что именно из этого мне нужно что бы переделать вид хлебных крошек из "Сайт.ру/категория1/категория2/категория3" в вид "Сайт.ру/категория3"  (для Opencart 1.5)

Змінено користувачем stillwest
Надіслати
Поділитися на інших сайтах


  • 1 month later...

Присоединяюсь к  вопросу:

Что нужно сделать чтобы заработало на Опенкарт 2.1 ?

 

Вот этого в коде нет

 


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

 
Вот такой костыль, формирует хлебные крошки для всех уровней категорий.

 

Инструкция для Opencart 1.5

Надіслати
Поділитися на інших сайтах


Присоединяюсь к  вопросу:

Что нужно сделать чтобы заработало на Опенкарт 2.1 ?

 

Вот этого в коде нет

 

Народ, у меня нету времени делать бесплатное решение. Что было тем поделился. Может кто-то заплатит за мое время и я сделаю решение для OC 2, а потом выложу сюда. Но пока нет.

Надіслати
Поділитися на інших сайтах

Решение для 2.1 SeoPro - убираем родительские категории в URL + выводим полные хлебные крошки
 

Файл “catalog/controller/common/seo_pro.php”, в функции rewrite() находим код:
case 'path':
    $categories = explode('_', $value);
    foreach ($categories as $category) {
        $queries[] = 'category_id=' . $category;
    }
    unset($data[$key]);
    break;

Заменяем  на:

case 'path':
    $categories = explode('_', $value);
    $queries[] = 'category_id=' . end($categories);
    unset($data[$key]);
    break;

Файл catalog/model/catalog/category.php  добавляем

public function getCategoryPath($category_id){
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "' ORDER BY level ASC");

return $query->rows;
}

Файл в catalog/controller/product/category.php перед строкой

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

Добавляем

//Fix Category breadscrumbs FULL with SEO_PRO
    $pathway = $this->model_catalog_category->getCategoryPath($category_id);

    if($pathway){
       foreach ($pathway as $way) {
       $category_way = $this->model_catalog_category->getCategory($way['path_id']);
          $data['breadcrumbs'][] = array(
            'text'      => $category_way['name'],
            'href'      => $this->url->link('product/category', 'path=' . $way['path_id'] . $url)
           );    
       }
    }

Ниже удаляем код

// Set the last category breadcrumb
$data['breadcrumbs'][] = array(
'text' => $category_info['name'],
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'])
);

 

  • +1 4
Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Решение для 2.1 SeoPro - убираем родительские категории в URL + выводим полные хлебные крошки

Файл “catalog/controller/common/seo_pro.php”, в функции rewrite() находим код:

case 'path':    $categories = explode('_', $value);    foreach ($categories as $category) {        $queries[] = 'category_id=' . $category;    }    unset($data[$key]);    break;
Заменяем на:

case 'path':    $categories = explode('_', $value);    $queries[] = 'category_id=' . end($categories);    unset($data[$key]);    break;
Файл catalog/model/catalog/category.php добавляем

public function getCategoryPath($category_id){$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "' ORDER BY level ASC");return $query->rows;}
Файл в catalog/controller/product/category.php перед строкой

$category_info = $this->model_catalog_category->getCategory($category_id);
Добавляем

//Fix Category breadscrumbs FULL with SEO_PRO    $pathway = $this->model_catalog_category->getCategoryPath($category_id);    if($pathway){       foreach ($pathway as $way) {       $category_way = $this->model_catalog_category->getCategory($way['path_id']);          $data['breadcrumbs'][] = array(            'text'      => $category_way['name'],            'href'      => $this->url->link('product/category', 'path=' . $way['path_id'] . $url)           );           }    }
Ниже удаляем код

// Set the last category breadcrumb$data['breadcrumbs'][] = array('text' => $category_info['name'],'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']));

Сделал всё как Вы прописали и у меня исчезло боковое меню категорий товаров когда открываю одну из них. В чем можно поискать ошибку (Opencart 2.1.0.2)?

Змінено користувачем Ngreen
Надіслати
Поділитися на інших сайтах


Нашел причину. Меню на opencart 2.1.0.2 слетело после данной замены:

 

Файл “catalog/controller/common/seo_pro.php”, в функции rewrite()

находим код:

 

case 'path': $categories = explode('_', $value); foreach ($categories as $category) { $queries[] = 'category_id=' . $category; } unset($data[$key]); break;

Заменяем на:
case 'path': $categories = explode('_', $value); $queries[] = 'category_id=' . end($categories); unset($data[$key]); break;

 
Есть у кого мысли по этому поводу?
Надіслати
Поділитися на інших сайтах


Как вариант - проблема в модификаторах. Сравните исходный файл seo_pro и есть ли модифицированный файл в папке /system/storage/modification/catalog/controller/common/ и в чем их отличие

Надіслати
Поділитися на інших сайтах


Как вариант - проблема в модификаторах. Сравните исходный файл seo_pro и есть ли модифицированный файл в папке /system/storage/modification/catalog/controller/common/ и в чем их отличие

 

В папке /system/storage/modification/catalog/controller/common/ файл seo_pro.php у меня вообще отсутствует. Есть только seo_url.

Исходный файл seo_pro, который шел в сборке с движком постоянно отдавал ошибку 500. Я его вытащил и заменил на файл seo_pro.php от ocjazz-seopro.

Надіслати
Поділитися на інших сайтах


  • 3 months later...

в Opencart 2.1 у меня такой вариант правок дал необходимый результат catalog/controller/product/category.php  

		//Fix Category breadscrumbs FULL with SEO_PRO
   		$pathway = $this->model_catalog_category->getCategoryPath($category_id);

   		if($pathway){
   			foreach ($pathway as $way) {
   				$category_way = $this->model_catalog_category->getCategory($way['path_id']);
	       			$data['breadcrumbs'][] = array(
   	    				'text'      => $category_way['name'],
						'href'      => $this->url->link('product/category', 'path=' . $way['path_id'] . $url)
        			);   			
   			}
   		}	

добавить перед

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

и удалить 

			// Set the last category breadcrumb
			$data['breadcrumbs'][] = array(
				'text' => $category_info['name'],
				'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'])
			);

все. не забудьте сбросить кэш модификатора

  • +1 1
Надіслати
Поділитися на інших сайтах


  • 4 months later...

Подскажите opencart 2.1 

 

Всё получилоcь, но когда в левом меню выбираешь под категорию и переходишь...то оно сворачивается. А раньше было раскрыто при переходе в подкатегорию. Подскажите как подправит?  Что бы при переходе в под категорию меню осталось раскрыто 

 

 

 

 

 

1.png

2.png

Змінено користувачем garfild304
Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

спасибо все отлично работает, единственное - путь в хлебных крошках к самому товару берет только последнюю категорию.. может знаете как решить эту проблему?

Надіслати
Поділитися на інших сайтах


1 час назад, kpaqpa сказал:

спасибо все отлично работает, единственное - путь в хлебных крошках к самому товару берет только последнюю категорию.. может знаете как решить эту проблему?

 

Товар должен быть с ЧПУ

Надіслати
Поділитися на інших сайтах


3 часа назад, kpaqpa сказал:

спасибо все отлично работает, единственное - путь в хлебных крошках к самому товару берет только последнюю категорию.. может знаете как решить эту проблему?

вот так

http://demo2.slasoft.kharkov.ua/58/apple-cinema-30

Как? только в личку.

Надіслати
Поділитися на інших сайтах

29 минут назад, chukcha сказал:

вот так

http://demo2.slasoft.kharkov.ua/58/apple-cinema-30

Как? только в личку.

 

Товару нужно указать "главную категорию" с максимальной вложенностью, соответственно в ХК будет вся цепочка (при условии, что не мешают какие-либо другие модификации)

Надіслати
Поділитися на інших сайтах


2 часа назад, ScartFM сказал:

Товар должен быть с ЧПУ

Это вы мне будете рассказывать?

 

Полный путь к товару

cat1 -> cat1_1 -> cat1_1_2 -> cat_1_1_2_2 -> товар

 

Если сделать в настройках показівать только путь к товару

то будет формироваться

сайт/товар, а не

сайт/cat1/cat1_1/cat1_1_2/cat_1_1_2_2/товар

 

Но можно сделать так, чтобы в пути

была только последняя

сайт/cat_1_1_2_2/товар,

а можно и без первой ( и такое просили) - чего только не напридумывают :)

сайт/cat1_1/cat1_1_2/cat_1_1_2_2/товар

 

 

Но в в примерах, - не будет выводится весь путь в крошках а будет

cat_1_1_2_2 -> товар

 

в моих примерах ХК выводятся полные.

 

 

Надіслати
Поділитися на інших сайтах

В 21.03.2017 в 21:30, garfild304 сказал:

Подскажите opencart 2.1 

 

Всё получилоcь, но когда в левом меню выбираешь под категорию и переходишь...то оно сворачивается. А раньше было раскрыто при переходе в подкатегорию. Подскажите как подправит?  Что бы при переходе в под категорию меню осталось раскрыто 

 

 

 

 

 

1.png

2.png

Такая же проблема. Напишите, пожалуйста, решение.

Надіслати
Поділитися на інших сайтах


  • 2 months later...
В 04.04.2017 в 20:19, Zelian сказал:

Такая же проблема. Напишите, пожалуйста, решение.

 

 

Я так понимаю не меню актив сломался, тоже нужно решение, возможно за $

Надіслати
Поділитися на інших сайтах


  • 9 months later...
В 20.07.2016 в 00:33, ScartFM сказал:
Решение для 2.1 SeoPro - убираем родительские категории в URL + выводим полные хлебные крошки
 
  Скрыть контент

 

Файл “catalog/controller/common/seo_pro.php”, в функции rewrite() находим код:

case 'path':
    $categories = explode('_', $value);
    foreach ($categories as $category) {
        $queries[] = 'category_id=' . $category;
    }
    unset($data[$key]);
    break;

Заменяем  на:


case 'path':
    $categories = explode('_', $value);
    $queries[] = 'category_id=' . end($categories);
    unset($data[$key]);
    break;

Файл catalog/model/catalog/category.php  добавляем


public function getCategoryPath($category_id){
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "' ORDER BY level ASC");

return $query->rows;
}

Файл в catalog/controller/product/category.php перед строкой


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

Добавляем


//Fix Category breadscrumbs FULL with SEO_PRO
    $pathway = $this->model_catalog_category->getCategoryPath($category_id);

    if($pathway){
       foreach ($pathway as $way) {
       $category_way = $this->model_catalog_category->getCategory($way['path_id']);
          $data['breadcrumbs'][] = array(
            'text'      => $category_way['name'],
            'href'      => $this->url->link('product/category', 'path=' . $way['path_id'] . $url)
           );    
       }
    }

Ниже удаляем код


// Set the last category breadcrumb
$data['breadcrumbs'][] = array(
'text' => $category_info['name'],
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'])
);

 

 

Работает на ocstore 2.3

 

Не человеческое Огромное СПАСИБО ScatFM !!!

 

Надіслати
Поділитися на інших сайтах


  • 3 months later...

Всем привет.

Решение работает на OcStore 2.1.0.2.1 для категорий.

Но не работает с категориями в блоге Unishop и к url статей добавляется окончание blog_path=3

 

Может кто подскажет, куда ковырять?

Надіслати
Поділитися на інших сайтах


  • 2 years later...

Работает на ocStore 3
Код для модификатора, если кому надо будет. 
 

Спойлер

<file path="system/library/seopro.php" error="abort">
		<operation>
			<search><![CDATA[case 'path':]]></search>
			<add position="replace" offset="7"><![CDATA[
			case 'path':
    $categories = explode('_', $value);
    $queries[] = 'category_id=' . end($categories);
    unset($data[$key]);
    break;
			]]></add>
		</operation>
	</file>
	<file path="catalog/model/catalog/category.php" error="abort">
		<operation>
			<search><![CDATA[public function getCategoryFilters($category_id) {]]></search>
			<add position="before"><![CDATA[
			public function getCategoryPath($category_id){
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "' ORDER BY level ASC");
			return $query->rows;
			}
			]]></add>
		</operation>
	</file>
	<file path="catalog/controller/product/category.php" error="abort">
		<operation>
			<search><![CDATA[$category_info = $this->model_catalog_category->getCategory($category_id);]]></search>
			<add position="before"><![CDATA[
			//Fix Category breadscrumbs FULL with SEO_PRO
			$pathway = $this->model_catalog_category->getCategoryPath($category_id);
			if($pathway){
			foreach ($pathway as $way) {
			$category_way = $this->model_catalog_category->getCategory($way['path_id']);
			$data['breadcrumbs'][] = array(
			'text'      => $category_way['name'],
            'href'      => $this->url->link('product/category', 'path=' . $way['path_id'] . $url)
           );    
       }
    }
			]]></add>
		</operation>
		<operation>
			<search><![CDATA[// Set the last category breadcrumb]]></search>
			<add position="replace" offset="5"><![CDATA[
						]]></add>
		</operation>
	</file>		

 

 

Змінено користувачем farshmac
  • +1 1
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.