Magento Query Builder
Wenn man mal bei Magento schnell in der Datenbank nachschauen will, dann ist das sehr umständlich durch die EAV Datenbankstruktur. Ab und zu tauchen ein paar fertige SQL-Querys auf, die aber nicht auf jeden Shop passen. Da es ziemlich aufwändig ist, sich immer per Hand die entsprechenden Statements zusammenzubauen, haben wir ein kleines Tool geschrieben, mit dem man sich die SQL-Querys bauen lassen kann. Dafür braucht man nur PHP + Verbindung zur Datenbank.
Dieses Tool findet ihr auf GitHub:
https://github.com/OSguard/Magento-Query-Builder
Das Beispiel:
https://github.com/OSguard/Magento-Query-Builder/blob/master/example_export_all_products.php
erklärt im Wesentlichen, wie man das Script benutzen kann. Man erzeugt sich ein Objekt, auf das man zugreifen will und lädt die Attribute:
$builder = new QueryBuilder('catalog/product', array(0,1)); $builder->loadAllAttributes();
Danach wählt man aus, welche Attribute man ausgeben will:
$attr = array( "entity_id", "sku", "name", "price", "url_path", "url_key", "attribute_set", "status", "created_at", "updated_at" ); $builder->selectAttributes( $attr );
Man kann z.B. noch die Bedienung einschränken, damit eine WHERE-Klausel gebaut wird:
$builder->setCond( 'type_id', '=', '"simple"');
Dann kann man sich das Query ausgeben lassen:
$builder->getQuery();
In unserem Beispiel wird dann folgender SQL-Befehl erzeugt:
SELECT a.entity_id AS entity_id, a.sku AS sku, t0.VALUE AS name , t1.VALUE AS price , t2.VALUE AS url_path , t3.VALUE AS url_key , b.attribute_set_name AS attribute_set, t4.VALUE AS STATUS , a.created_at AS created_at, a.updated_at AS updated_at FROM ( SELECT entity.* FROM catalog_product_entity entity WHERE entity.type_id = "simple" ) a LEFT JOIN eav_attribute_set b ON b.attribute_set_id=a.attribute_set_id LEFT JOIN catalog_product_entity_varchar t0 ON t0.attribute_id= 96 AND t0.entity_id=a.entity_id AND t0.store_id = 0 LEFT JOIN catalog_product_entity_decimal t1 ON t1.attribute_id= 99 AND t1.entity_id=a.entity_id AND t1.store_id = 0 LEFT JOIN catalog_product_entity_varchar t2 ON t2.attribute_id= 570 AND t2.entity_id=a.entity_id AND t2.store_id = 0 LEFT JOIN catalog_product_entity_varchar t3 ON t3.attribute_id= 481 AND t3.entity_id=a.entity_id AND t3.store_id = 0 LEFT JOIN catalog_product_entity_int t4 ON t4.attribute_id= 273 AND t4.entity_id=a.entity_id AND t4.store_id = 0
Das ist keine fertige Bibliothek, die man in ein Modul einbauen kann. Aber mann kann damit z.B. Export-Scripte bauen, die auch sehr viele Produkte in Sekunden exportieren, da hier der Magento-Weg sehr langsam ist. Oder es erleichtert das Arbeiten auf der Datenbank-Konsole. Zur Zeit ist das noch eine Rohfassung, vielleicht findet sich ja der ein oder andere, der bei der Entwicklung hilft. Der Code steht unter BSD-Lizenz.
j2Mantis parameter documentation
There is a lack of documentation about what the parameters in the backend of j2Mantis mean. Here is a brief overview:
- Webservice url the URL to the SOAP API of Mantis
- Username a valid Mantis user, you have to try whether you need a Manager-User or whether a Developer just works, this depends on your Mantis installation
- Password of the user
- Project ID the default mantis project that you want to use in Joomla, you can override this by menu entry
- Backup Email sends the data of form to this email if mantis SOAP is not working
- use captcha use the JCCReCaptcha Plugin to protect your form
- Secret Key random string to encrypt your mantis id in the url (weak encryption)
- overview enable/disable the link from the form back to the overview of all bugs of the selected project
Magento – Ratings abhängig vom Attributeset
Wenn man in Magento seine Produkte in verschiedene Attributesets verteilt hat, dann stellt sich die Frage beim Ermitteln von Kundenbewertungen, ob der Kunde vielleicht unterschiedliche Bewertungskriterien für die Produkte haben möchte.
Ein Beispiel wäre, wenn man Zubehör und dem eigentlichen Produkt jeweils unterschiedliche Kriterien zuordnen will.
Dabei reicht eine einfache Änderung im Template aus:
<?php $product = $this->getProduct(); $attributeSetModel = Mage::getModel("eav/entity_attribute_set"); $attributeSetModel->load($product->getAttributeSetId()); $attributeSetName = $attributeSetModel->getAttributeSetName(); foreach ($this->getRatings() as $_rating): ?> <?php // Wenn kein Zubehör, dann kein Zubehör anzeigen if( strpos($_rating->getRatingCode(),"Zubehör") !== false && 0 != strcmp($attributeSetName, 'Zubehoer') ){ continue; } // Wenn Zubehör, dann nur Zubehör anzeigen if( strpos($_rating->getRatingCode(),"Zubehör") === false && 0 == strcmp($attributeSetName, 'Zubehoer') ){ continue; } ?>
Diese Änderung nimmt man in Advancereview/review/form.phtml seines Templates vor.
