Um Magento-Kategoriedaten direkt aus der Datenbank abzurufen, verwende ich Folgendes:
select
p.entity_id as entity_id,
if(pp.level = 1,
n.value,
concat_ws (' / ', pn.value, n.value)) as name,
date(p.created_at) as created_at
from
catalog_category_entity p
-- name
left join catalog_category_entity_varchar n on
p.entity_id = n.entity_id and n.attribute_id = 41
-- status
left join catalog_category_entity_int s on
p.entity_id = s.entity_id and s.attribute_id = 42 and
s.store_id = 0
-- parent
left join catalog_category_entity pp on p.parent_id = pp.entity_id
-- parent name
left join catalog_category_entity_varchar pn on
pp.entity_id = pn.entity_id and pn.attribute_id = 41 and
pn.store_id = 0
where
s.value = 1 and -- status is active
p.level >= 2
order by
2
;
Attribute_ids unterscheiden sich von System zu System. Hier benutze ich 41 und 42.
Um die richtigen Attribut-IDs für den Kategorienamen und den Kategoriestatus von einer Magento-Site zu ermitteln, verwende ich:
select
p.entity_id,
a.attribute_id,
a.frontend_label as attribute,
av.value
from
catalog_category_entity p
left join catalog_category_entity_{datatype} av on
p.entity_id = av.entity_id
left join eav_attribute a on
av.attribute_id = a.attribute_id
where
p.entity_id = {eid}
;
Indem Sie {datatype} durch 'varchar' ersetzen, können Sie die attribute_id für den Kategorienamen und mit 'int' die attribute_id für den Kategoriestatus abrufen. Sie können jede Kategorie entity_id durch {eid} ersetzen.
Dies kann in einem Editor oder in der Befehlszeile mit sed wie folgt erfolgen:
Angenommen, wdb ist ein Alias für die MySQL-Datenbankverbindung Ihrer Website wie folgt:
alias wdb='mysql -h<hostname> -u<username> -p<password> <databasename>'
Dann kannst du rennen
$ cat show_category_attr.sql | sed -e "s/{datatype}/varchar/" -e "s/{eid}/2/" | wdb -t
Und bekomme
+-----------+--------------+--------------+------------------+
| entity_id | attribute_id | attribute | value |
+-----------+--------------+--------------+------------------+
| 2 | 41 | Name | Default Category |
| 2 | 49 | Display Mode | PRODUCTS |
+-----------+--------------+--------------+------------------+
Und Renn
$ cat show_category_attr.sql | sed -e "s/{datatype}/int/" -e "s/{eid}/2/"| wdb -t
Und bekomme
+-----------+--------------+----------------------------+-------+
| entity_id | attribute_id | attribute | value |
+-----------+--------------+----------------------------+-------+
| 2 | 42 | Is Active | 1 |
| 2 | 67 | Include in Navigation Menu | 1 |
+-----------+--------------+----------------------------+-------+
Hier sehen Sie die notwendigen Nummern 41 und 42.
Die gleiche Technik kann für Magento-Produkte verwendet werden.