Neueste Blog-Einträge
Kurzinfo

Andreas von Studnitz
- Diplom-Informatiker
- 6 Jahre Entwicklungs- und Projektleitungserfahrung in einer Internet-Agentur
- Magento-Freelancer
- Magento Certified Developer
- 4 Jahre Magento-Erfahrung
Kontakt
Telefon:
02408 937 965 1 oder
0170 486 0 464
E-Mail:
avs(at)avs-webentwicklung.de
Twitter: twitter.com/avstudnitz
Magento: Schnelles Auslesen von Attributen
Magento braucht dank des EAV-Datenbankmodells, das es sehr flexibel macht, relativ viele Ressourcen zum Laden und Speichern von Datensätzen wie Produkten, Kategorien, Kunden und Kundenadressen. Will man nur einzelne oder wenige Attribute auslesen oder ändern, entsteht ein deutlicher Overhead.
Wie man einzelne Attribute schnell speichern kann, ohne das ganze Produkt (z.B.) speichern zu müssen, hat die Agentur flagbit bereits vor einiger Zeit veröffentlicht.
In Kürze: statt $product->save() wird $product->getResource()->saveAttribute($product, 'sku') aufgerufen, um nur die Artikelnummer ("SKU") eines Produktes zu speichern.
Zum Auslesen war mir das bisher nicht bekannt. Eine Recherche hat allerdings ergeben, dass eine Methode dafür existiert. Sie befindet sich in der Klasse Mage_Catalog_Model_Resource_Eav_Mysql4_Abstract und sieht wie folgt aus:
/**
* Retrieve attribute's raw value from DB.
*
* @param int $entityId
* @param int|string $attribute atrribute's id or code
* @param int|Mage_Core_Model_Store $store
* @return bool|string
*/
public function getAttributeRawValue($entityId, $attribute, $store)
{ ...
Aufgerufen wird diese Funktion z.B. wie folgt:
$attributeValue = Mage::getModel('catalog/product')->getResource()->getAttributeRawValue($productId, 'sku', Mage_Core_Model_App::ADMIN_STORE_ID);
Hiermit ist es möglich, einzelne Attribute vieler Produkte deutlich schneller auszulesen, da nicht das ganze Produkt geladen werden muss, sondern nur das Attribut. Benötigt habe ich das für eine Importfunktion, aber auch andere Anwendungsfälle könnte ich mir vorstellen.

$category = Mage::getModel('catalog/category')->load(Mage::registry('current_category')->getID());
gibt mir das hier als Fehlermeldung zurueck:
Fatal error: Call to a member function getID() on a non-object in .../app/code/core/Mage/Catalog/Block/Product/Mostviewed.php on line 12
Dank dir fuer jeden Denkansatz!
Kommentar hinzufügen