Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Получить id первой родительской категории


Recommended Posts

Вопрос такой как на странице поиска получить самую первую родительскую категорию товара ? 

Целый день мучаюсь не могу получить id самой первой категории смог получить parent_id но эта категория на шаг выше а как быть если товар находиться в 10 категории но мне нужно получить 1 категорию ? 

 

пример :

 

products

        яблоки 

                 зеленые 

                        краснодарские

 

                                                 

Сами товары находятся в категории краснодарские !

 

Мне нужно получить id products !

Сам смог получить только parent_id  (зеленые)  !

Edited by Sabufer
Link to post
Share on other sites

Только что, spectre сказал:

проверяйте есть ли еще parent_id выше

Как проверить пример ??

Link to post
Share on other sites

21 минуту назад, Sabufer сказал:

Как проверить пример ??

 

 

[#№] - пример id,

products [#1]

        яблоки [#2]

                 зеленые [#14] 

                        краснодарские [#19]

 

Берете ид "зеленый" и проверяете чей он... Тоесть из каталого, смотрим:

 

$parent_id = $this->query(SELECT `parent_id` FROM `oc_category` WHERE `category_id` = 14);

 

if ($parent_id) {

     .... дальше дальше дальше => $parent_id = $this->query(SELECT `parent_id` FROM `oc_category` WHERE `category_id` = сначало 2, потом уже 1);

ссылаемся на себя. (Смотрим что такое рекурсия)

} else {

    ....., а все мы уже вверху каталога

}

 

Link to post
Share on other sites

Только 

$parent_id = $this->query(SELECT `parent_id` FROM `oc_category` WHERE `category_id` = 14)->row['parent_id'];

Link to post
Share on other sites
20 минут назад, Eldaeron сказал:

 

 

[#№] - пример id,

products [#1]

        яблоки [#2]

                 зеленые [#14] 

                        краснодарские [#19]

 

Берете ид "зеленый" и проверяете чей он... Тоесть из каталого, смотрим:

 

$parent_id = $this->query(SELECT `parent_id` FROM `oc_category` WHERE `category_id` = 14);

 

if ($parent_id) {

     .... дальше дальше дальше => $parent_id = $this->query(SELECT `parent_id` FROM `oc_category` WHERE `category_id` = сначало 2, потом уже 1);

ссылаемся на себя. (Смотрим что такое рекурсия)

} else {

    ....., а все мы уже вверху каталога

}

 

$parent_id = $this->query(SELECT `parent_id` FROM `oc_category` WHERE `category_id` = 14);

почему 14 ??

Link to post
Share on other sites

3 минуты назад, Sabufer сказал:

почему 14 ??

14 - это уже первый полученный parent_id

 

вообще если все правильно настроено то самая первая категория это первый элемент массива

 

$parts = explode('_', (string)$this->request->get['path']);

Link to post
Share on other sites

Сам смысл получения данной id категории такой если товар относится к категории products то скрыть ему цену количество итд !!

Edited by Sabufer
Link to post
Share on other sites

7 минут назад, Sabufer сказал:

Автомагазин запчастей пишем )

получите категории товара и проверяйте

 

$product_categories =  $this->model_catalog_product->getProductCategories($result['product_id']);

in_array('id категории где не надо', $product_categories)

 

getProductCategories кажется есть только в админке - можно оттуда скопировать в модель

Link to post
Share on other sites
Только что, chukcha сказал:

товар может быть в нескольких категориях

 

Но у меня будет только одна основная категория остальные уже внутри ние 

Link to post
Share on other sites

SELECT GROUP_CONCAT(c1.category_id ORDER BY level SEPARATOR '_') path
        FROM category_path cp
        LEFT JOIN category c1 ON (cp.path_id = c1.category_id)
        WHERE cp.category_id = " . (int)КАТЕГОРИЯ ТОВАРА . "
        GROUP BY cp.category_id

Затем разбор row['path']

Link to post
Share on other sites
19 часов назад, chukcha сказал:

SELECT GROUP_CONCAT(c1.category_id ORDER BY level SEPARATOR '_') path
        FROM category_path cp
        LEFT JOIN category c1 ON (cp.path_id = c1.category_id)
        WHERE cp.category_id = " . (int)КАТЕГОРИЯ ТОВАРА . "
        GROUP BY cp.category_id

Затем разбор row['path']

делал по вашему не получается можно полностью решение с разбором path и правильно прописать sql запрос со знаками препинания !

Link to post
Share on other sites

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

правильно прописать sql запрос со знаками препинания !

ага.. щаз....

Link to post
Share on other sites
  • 1 year later...
В 16.04.2018 в 17:03, freelancer сказал:

SELECT  `path_id` FROM `oc_category_path` WHERE `category_id` ='14' AND `level`=0

как это использовать?

Link to post
Share on other sites

  • 1 month later...
В 21.01.2020 в 21:35, comers сказал:

как это использовать?

Создайте нижеописанную функцию в файле /catalog/model/catalog/category.php

И используйте ее в нужных вам контроллерах.

	public function getProtoParent($category_id){
		$query = $this->db->query("SELECT path_id FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "' AND level = 0");

		return $query->row['path_id'];
	}

 

  • +1 2
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.