Sabufer

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

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

Sabufer    0

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

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

 

пример :

 

products

        яблоки 

                 зеленые 

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

 

                                                 

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

 

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

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

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

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
Sabufer    0
Только что, spectre сказал:

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

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

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


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

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

}

 

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


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

Только 

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

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


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

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


Ссылка на сообщение
Поделиться на другие сайты
spectre    126
3 минуты назад, Sabufer сказал:

почему 14 ??

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

 

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

 

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

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


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

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
spectre    126
7 минут назад, Sabufer сказал:

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

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

 

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

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

 

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

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


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

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

 

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


Ссылка на сообщение
Поделиться на другие сайты
Sabufer    0
Только что, chukcha сказал:

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

 

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

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


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

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']

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


Ссылка на сообщение
Поделиться на другие сайты
Sabufer    0
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 запрос со знаками препинания !

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


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

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

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

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


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

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

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

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

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

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

Войти

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

Войти


  • Последние посетители   0 пользователей онлайн

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