Waha

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

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

Waha    307

Для тех кто использует 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

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


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

Поскольку сайт 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

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


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

Исправление для получения 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+ уровне вложенности сбивается порядок категорий в хлебных крошках

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


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

Исправление для получения 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

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


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

Подскажите плз, что поправить, чтобы в 2.1 работало

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


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

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

Что нужно сделать чтобы заработало на Опенкарт 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

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


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

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

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

 

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

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
ScartFM    9
Решение для 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'])
);

 

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


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

Решение для 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

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


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

Нашел причину. Меню на 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;

 
Есть у кого мысли по этому поводу?

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


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

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

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


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

Как вариант - проблема в модификаторах. Сравните исходный файл 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.

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


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

в 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'])
			);

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

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


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

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

 

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

 

 

 

 

 

1.png

2.png

Изменено пользователем garfild304

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
ScartFM    9
1 час назад, kpaqpa сказал:

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

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
chukcha    1 017
3 часа назад, kpaqpa сказал:

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

вот так

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
ScartFM    9
29 минут назад, chukcha сказал:

вот так

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

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

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
chukcha    1 017
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 -> товар

 

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

 

 

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


Ссылка на сообщение
Поделиться на другие сайты
Zelian    0
В 21.03.2017 в 21:30, garfild304 сказал:

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

 

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

 

 

 

 

 

1.png

2.png

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

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


Ссылка на сообщение
Поделиться на другие сайты
alexb    4
В 04.04.2017 в 20:19, Zelian сказал:

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

 

 

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

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


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

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

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

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

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

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

Войти

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

Войти


  • Похожий контент

    • От blastbeat
      Добрый день.
      После того, как перетащили сайт с тестового домена и подключили к сайту SSL сертификат обнаружили, что часть изображений в подкатегориях перестала корректно выгружаться на сайт.

      Все изображения загружены в папке site.tld/image/... как и подобает инструкции из обоих сonfig.php:  define('DIR_IMAGE', '/var/www/www-root/data/www/site.tld/image/'); В основных категориях сайта всё корректно работает, картинки подгружаются кодом оттуда.

      Но на страницах подкатегорий сайта вида site.tld/category/subcategory или site.tld/category/subcategory/sub-subcategory отваливаются вообще все картинки на этой странице (не только товаров)



      Может кто сталкивался? Знает где и как лечить?

      Есть предположение, что это из за того, что в адресах картинок не стоит слэш перед папкой image:


      Но с таким же кодом в основных категориях выгрузка изображений происходит корректно...

      opencart Version 2.2.0.0 (rs.1)
    • От FCSM
      Здравствуйте! 
       
      Не могу понять в чём дело. 
      В мобильной версии, не отображается меню с категориями товаров. 
      На главной отображаются только новые поступления. 
      Вот сайт : https://wool.opt.lv/
      Как можно добавить меню с категориями ? 

      Благодарю! 
    • От alexras

      Скачать/Купить дополнение


      SEO MultiShop - Разные заголовки и описания категорий, товаров, статей, производителей
      Описание
      ---------------------------------------
      Модуль создает вкладки для каждого магазина добавленного в opencart, тем самым дает возможность заменять заголовки описания у товаров, категорий, статей и производителей.
      Если никакой информации не указано, то выводятся данные основного магазина.

      Информация
      ---------------------------------------
      Дополнение точно подойдет для ocStory 1.5.5.1.2, для других версий первого opencart может понадобится небольшая переделка.
      Тестировалось на стандартном шаблоне.

      При загрузке на сайт файлы не изменяются, используется vqmod.

      Установка
      ---------------------------------------
      1. Загрузить все файлы на сайт из папки upload
      2. В админке зайти в меню модули и установить модуль MultiShop
      3. Установка завершена, можно использовать модуль
      Добавил alexras Добавлено 04.03.2017 Категория SEO, карта сайта, оптимизация Системные требования Сайт разработчика http://frontblog.ru Старая цена 300 Метод активации Без активации Ioncube Loader Нет OpenCart 1.5.5.1 ocStore 1.5.5.1.2 OpenCart.Pro, ocShop  
    • От alexras
      Описание
      ---------------------------------------
      Модуль создает вкладки для каждого магазина добавленного в opencart, тем самым дает возможность заменять заголовки описания у товаров, категорий, статей и производителей.
      Если никакой информации не указано, то выводятся данные основного магазина.

      Информация
      ---------------------------------------
      Дополнение точно подойдет для ocStory 1.5.5.1.2, для других версий первого opencart может понадобится небольшая переделка.
      Тестировалось на стандартном шаблоне.

      При загрузке на сайт файлы не изменяются, используется vqmod.

      Установка
      ---------------------------------------
      1. Загрузить все файлы на сайт из папки upload
      2. В админке зайти в меню модули и установить модуль MultiShop
      3. Установка завершена, можно использовать модуль
    • От Alex237
      Народ кто знаете как мне изменить вид как на старых версиях опен карт. К примеру хочу сделать на новой версии опен карт когда захожу в категорию там появляется список под категорий а сверху надпись уточните поиск так вот как мне вывести фото над каждой под категорией. Заранее спасибо за любой отзыв.
  • Последние посетители   0 пользователей онлайн

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