Magento Query Builder

veröffentlicht in Software Engineering am 21. Nov. 2011 Tags: , , , ,

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

veröffentlicht in Software Engineering am 10. Nov. 2011 Tags: , ,

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
Hope this helps.

Magento – Ratings abhängig vom Attributeset

veröffentlicht in Software Engineering am 25. Okt. 2011 Tags:

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.

Nächste Seite »