Magento: Statischen CMS Block im Template ausgeben

10. Juli 2010 at 16:27

Ihr könnt in Magento ein statischen CMS Block wie folgt im template einbinden.

Ein Beispiel zum einbinden über die entsprechende layout.xml :

<layout>
<asdf_xy_zzz>
<reference name="content">
 <block type="cms/block" name="cms_store_check">
 <action method="setBlockId"><block_id>store_check</block_id></action>
 </block>
 </reference>
 </asdf_xy_zzz>
</layout>

Direkt einbinden im Template:

echo $this->getLayout()->createBlock('cms/block')->setBlockId('your_id')->toHTML();?>

Einbinden im CMS:

{{block type="cms/block" block_id="your_id" template="cms/content.phtml"}}

 

Magento: Über ein url-key einer Kategorie ein Link erzeugen

8. Juli 2010 at 20:36

Im Admin-Backend ist es möglich ein url-key für z.B. Kategorien zu setzen. Möchtet ihr jetzt automatisch von Magento anhand dieser ein Link erzeugen, könnt ihr das wie im folgenden Beispiel:

<a href="<?php echo Mage::getModel('catalog/category')->load(Mage::getModel('catalog/category')->getCollection()->addAttributeToFilter('url_key', 'all-bags')->getAllIds())->getUrl(); ?>" title="All bags" ><?php echo $this->__('All bags'); ?></a>

Magento: Methoden von Klassen ausgeben

2. Juli 2010 at 15:27

magento ecommerce logoManchmal ist es ganz hilfreich sich alle verfügbaren Methoden einer Klasse ausgeben zu lassen, das könnt ihr mit der folgenden Funktion:

<style type="text/css">
body { font-family: arial;font-size: 0.9em;}
</style>
<?php
function out_methods($class) {
echo '<p><strong>'.$class.'</strong><br>';
$methods = get_class_methods($class);
sort($methods);
foreach($methods as $k => $v) {
echo "[$k] => $v <br>";
}
echo '</p><hr>';
}
require_once 'app/Mage.php';
out_methods('Mage_Catalog_Model_Product');
out_methods('Mage_Catalog_Model_Category');
?>

5 Anfänger Tipps für Magento-Einsteiger

18. Juni 2010 at 03:31

magento ecommerce logoDieser Artikel ist für Neueinsteiger gedacht, welche sich für einen Onlineshop auf Basis von Magento-Commerce interessieren. Wenn Sie sich bereits längere Zeit mit Magento beschäftigt haben, werden Ihnen diese Punkte sehr wahrscheinlich bereits bekannt sein.

1. Unterschätze den Aufwand nicht

Magento ist eine eCommerce Open-Source-Lösung für den Enterprise-Bereich der Firma Varien. Es setzt auf objektorientiertes PHP und dem Zend Framework.  Magento ist aufgrund des offenen Quellcodes (open source) ideal um es seinen eigenen Wünschen anpassen, sei es auf Template Basis (Design & GUI) oder Erweiterung der Funktionalität durch neue Plugins. Als Magento-Entwickler sollte man Kenntnisse in PHP5,Objekt Orientiere Programmierung (OOP) , Zend Framework, XHTML, XML, AJAX, JavaScript und MySQL mit bringen.

2. Installieren Sie Magento über die Download-Version

Magento kann als Vollversion herunter geladen werden und per FTP installiert werden. Einfacher ist es jedoch, den Download-Installer zu verwenden. Dieser lädt automatisch die benötigten Dateien nach, und legt diese auch mit den besseren Dateirechten auf einem Linux/Unix-Server an.

3. editieren Sie keine Core-Dateien

Gerade als Neueinsteiger in Magento möchte man schnell Änderungen herbeiführen und führt im Änderungen in den Core-Dateien durch. Diese liegen unter app/code/core. Bei einem Update werden diese Änderungen jedoch überschrieben, ein manuelles nachpflegen ist zeitaufwendig und geht ggf. schief. Änderungen an entsprechenden Dateien sollten in einer Kopie dieser in den Ordner app/code/local vorgenommen werden. Soll zum Beispiel die Datei

app/code/<strong>core</strong>/Mage/Checkout/Block/Success.php

geändert werden, diese kopieren nach

app/code/<strong>local</strong>/Mage/Checkout/Block/Success.php

Somit bleibt die Original Core Datei unberührt und wird beim nächsten Update nicht überschrieben.

Eine bessere Variante ist gar das Überschreiben von Blöcken/Models. Eine ausführliche Einführung dazu gibt es im Wiki von Magento.

4. Beim Theme-Design nur die notwendigen Dateien ändern

Das Template-Modul von Magento fällt auf immer dann auf das Standard-Theme zurück, wenn es notwendig ist. Viele Anfänger machen den Fehler und kopieren sich ein komplettes Theme, um es dann ensprechend zu modifizieren. Das ist nicht notwendig, es reicht aus, nur die Dateien in ein neues Theme zu kopieren, die tatsächlich für die Änderung notwendig sind. Der Rest bleibt im default/default-Verzeichnis und wird per Fall-Back-Prinzip aufgerufen so lange die Datei im neuen Template Verzeichnis nicht existiert.

5. API-Aufrufe Vermeiden

Magento bietet eine umfrangreiche API mit der Sie viele Daten lesen und schreiben können. Leider ist diese sehr langsam und sollte deshalb nur bei einem Zugriff aus z.B. einer externen Warenwirtschaft oder Java-Applikation genutzt werden. Bei eigenen Modulen sollten Sie die PHP-Skripte direkt einbinden und um so den direkten Zugriff auf die internen Magento-Funktionen zu erhalten.

Hier ein kleines Beispiel einer Artikelliste:

require_once 'app/Mage.php';
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$product =
Mage::getModel(‚catalog/product‘);;
// 13 ist die Produkt-ID
$product->load(13);
$product->
setName("Neuer Name"); # jedes Attribut kann mit setXyz() angesprochen werden
$product->save();

Weitere Tipps?

Sie haben weitere Tipps für Magento Neueinsteiger? Gerne teilen wir diese mit unseren Lesern. Nutzen Sie die Kommentarfunktion.

Magento: Core Controller überschreiben

17. Juni 2010 at 04:15

Hier findet ihr eine kurze Anleitung wie ihr ein Controller aus dem Core-Package überschreiben könnt.

Im Magento-Wiki ist eine Anleitung vorhanden, allerdings funktionierte die bei mir nicht, deshalb wird hier ein anderer Weg beschrieben.

In dem Beispiel überschreiben wir den Controller für den Kunden-Login.

Step 1 – Config Datei erstellen

Zuerst muss eine eine Config-Datei erstellt werden, wo definiert wird, welcher Controller überschrieben werden soll.. Dies geschieht über eine XML-Datei, welche im folgendem Verzeichnis ablegt wird:

/app/code/local/<Namespace>/<Module>/etc/config.xml

<!-- overwrite only methods or extends the class -->
<config>
    <frontend>
        <routers>
            <customer>
                <args>
                    <module>
                        <Namespace_Module before="Mage_Customer">Namespace_Module</Namespace_Module>
                    </module>
                </args>
            </customer>
        </routers>
    </frontend>
</config>

oder wenn man den kompletten Controller ersetzen möchte (am Beispiel des Catalog-Modules):

<!-- overwrite the complete controller -->
<config>
    <frontend>
        <routers>
          <catalog>
            <use>standard</use>
            <args>
              <module>Seven_Catalog</module>
              <frontName>catalog</frontName>
            </args>
          </catalog>
        </routers>
    </frontend>
</config>

Step 2 – der neue Controller

Anschließend wird die Datei für den neuen Controller erstellt. Dieser wird im folgenden Verzeichnis abgelegt:

/app/code/local/Namespace/Module/controllers/AccountController.php

Der Inhalt des Controllers:

include_once("Mage/Customer/controllers/AccountController.php");
class MyCompany_MyModule_AccountController extends Mage_Customer_AccountController
{
    public function loginAction()
    {
        parent::loginAction();
    }
    public function indexAction()
    {
<pre>        echo 'test';
        parent::loginAction();
    }</pre>
}

Step 3 – Modul aktivieren

Nun wird nach dem Login eines Kunden auf der Übersicht Seite des Benutzerkontos die Ausgabe „test“ angezeigt.

Um Magento das Modul sichtbar zu machen muss es noch aktiviert werden, das geht über eine weitere XML-Datei welche im folgenden Verzeichnis abgelegt wird:

/app/etc/modules/Namespace_Module.xml

Der Inhalt ist wie folgt:

<?xml version="1.0"?>
<config>
    <modules>
        <Namespace_Module>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Core />
                <Mage_Customer />
            </depends>
        </Namespace_Module>
    </modules>
</config>

Jetzt wird die Funktion „loginAction()“ von dem neuen Controller überschrieben.

Das war es schon, so einfach überschreibt man ein Controller in Magento! 🙂

Optional: Rewrite eines Controllers in Magento

Ggf. kann mit dem folgenden Einträgen in der config.xml ein Rewrite des Controllers erfolgen:

<rewrite>
 <seven_catalog_daniel>
 <from><![CDATA[#^/catalog/product_compare/add/(.*)$#]]></from>
 <to>/catalog/compare/add/</to>
 </seven_catalog_daniel>
 </rewrite>
 </global>

Magento: Mit hilfe des ModuleCreator eigene Module Templates erzeugen

14. Juni 2010 at 02:42

magento ecommerce system - eigene module schreibenFrüher oder später kommt für jeden Magento-Entwickler der Punkt, an dem es notwendig ist, Eingabemasken respektive Eingabeformulare im Magento-Backend per Extension um eigene, benutzerdefinierte Felder zu erweitern oder aus einem sonstigen Grund neue Module zu schreiben. Spätestens beim zweiten Modul merkt man schnell, dass sich diverse Schritte wiederholen.

Aus diesem Grund möchten wir euch den ModuleCreator zum automatisierten erstellen des Magento-Extension-Gerüst empfehlen, welche ihr dann nur noch entsprechend anpassen müsst.

Market Ready Germany zur Anpassung von Magento zum deutschen Markt/Recht jetzt kompatibel mit aktuellen Version 1.6

10. Juni 2010 at 03:23

Die Magento Extension Market Ready Germany ist jetzt in Version 2.0 von symmetrics & Trusted Shops veröffentlicht worden. Diese Version ist jetzt auch mit der aktuellen Magento Version 1.4 kompatible! Mit der Extension lässt sich Magento an die Erfordernisse des deutschen Marktes anpassen. Die Erfahrungen und Anregungen der Community sind erneut in die Entwicklung mit ein geflossen.

Fly2Mars-Media sagt an diese Stelle: Danke an Symmetrics für diese Extension und der dazugehörigen Pflege!
An der Stelle auch Grüße aus der Nachbarschaft! 😉

Infos zu Market-Ready findet ihr auch im Artikel: Magento: deutsches Lokalisierungspaket “Market Ready Germany”

Die Extension „Market Ready Germany“ (MRG) kann ab sofort in der Version 2.0 kostenlos über die Plattform Magento Connect herunterladen werden. MRG 2.0 konfiguriert Magento automatisch für den deutschen Markt und wird von Magento-Experten als wichtiger Schritt erachtet:

„Der wohl wichtigste Magento Meilenstein für den deutschen E-Commerce. Die Firmen Trusted Shops GmbH und Symmetrics GmbH haben mit dieser Erweiterung Magento in Deutschland stark vorangebracht. Ohne diese Erweiterung hätte kaum ein Shop starten können – zu groß wäre die Gefahr vor Abmahnungen durch den Wettbewerb gewesen.“

Beim Market Ready Germany 2.0 handelt es sich um ein komplettes Refactoring der Extension, bei dem Fehler sowie Inkompatibilitäten der Vorgängerversion behoben wurden. Dabei haben die Entwickler von symmetrics und Trusted Shops Anregungen aus der Magento Community in den Refactoring-Prozess einfließen lassen.

Magento bekommt 21.5 Mio. $ Finanzspritze

17. März 2010 at 16:50

Wie in einigen Quellen berichtet bekommt Magento 21,5 Mio. Dollar Kapital und will dieses massiv in neue Services investieren.

In den Stellenausschreibungen auf der Magento-Seite lässt sich bereits erkennen das Varien einiges vor hat. Unter anderem werden neben weiteren Entwicklern Unterstützung beim Aufbau in Europa, Training, Zertifizierungen und auch SAAS gesucht.

Eine offizielle Meldung auf der Magento-Seite haben wir noch nicht gefunden.

Magento: SQL um ALLE Bestellungen zu löschen

9. Februar 2010 at 15:17

Mit diesem Query könnt ihr alle Bestellungen sowie Aufzeichnungen in den Logs aus eure Datenbank löschen!

Bitte “YOUR_DB_NAME” mit dem entsprechenden Datenbank-Namen ersetzen.

– Reset Magento TEST Data
SET FOREIGN_KEY_CHECKS=0;
– reset dashboard search queries
 TRUNCATE `catalogsearch_query`;
 ALTER TABLE `catalogsearch_query` AUTO_INCREMENT=1;
– reset sales order info
 TRUNCATE `sales_order`;
 TRUNCATE `sales_order_datetime`;
 TRUNCATE `sales_order_decimal`;
 TRUNCATE `sales_order_entity`;
 TRUNCATE `sales_order_entity_datetime`;
 TRUNCATE `sales_order_entity_decimal`;
 TRUNCATE `sales_order_entity_int`;
 TRUNCATE `sales_order_entity_text`;
 TRUNCATE `sales_order_entity_varchar`;
 TRUNCATE `sales_order_int`;
 TRUNCATE `sales_order_text`;
 TRUNCATE `sales_order_varchar`;
 TRUNCATE `sales_flat_quote`;
 TRUNCATE `sales_flat_quote_address`;
 TRUNCATE `sales_flat_quote_address_item`;
 TRUNCATE `sales_flat_quote_item`;
 TRUNCATE `sales_flat_quote_item_option`;
 TRUNCATE `sales_flat_order_item`;
 TRUNCATE `sendfriend_log`;
 TRUNCATE `tag`;
 TRUNCATE `tag_relation`;
 TRUNCATE `tag_summary`;
 TRUNCATE `wishlist`;
 TRUNCATE `log_quote`;
 TRUNCATE `report_event`;
ALTER TABLE `sales_order` AUTO_INCREMENT=1;
 ALTER TABLE `sales_order_datetime` AUTO_INCREMENT=1;
 ALTER TABLE `sales_order_decimal` AUTO_INCREMENT=1;
 ALTER TABLE `sales_order_entity` AUTO_INCREMENT=1;
 ALTER TABLE `sales_order_entity_datetime` AUTO_INCREMENT=1;
 ALTER TABLE `sales_order_entity_decimal` AUTO_INCREMENT=1;
 ALTER TABLE `sales_order_entity_int` AUTO_INCREMENT=1;
 ALTER TABLE `sales_order_entity_text` AUTO_INCREMENT=1;
 ALTER TABLE `sales_order_entity_varchar` AUTO_INCREMENT=1;
 ALTER TABLE `sales_order_int` AUTO_INCREMENT=1;
 ALTER TABLE `sales_order_text` AUTO_INCREMENT=1;
 ALTER TABLE `sales_order_varchar` AUTO_INCREMENT=1;
 ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
 ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
 ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
 ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
 ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
 ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
 ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
 ALTER TABLE `tag` AUTO_INCREMENT=1;
 ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
 ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
 ALTER TABLE `wishlist` AUTO_INCREMENT=1;
 ALTER TABLE `log_quote` AUTO_INCREMENT=1;
 ALTER TABLE `report_event` AUTO_INCREMENT=1;
– Reset all ID counters
 TRUNCATE `eav_entity_store`;
 ALTER TABLE  `eav_entity_store` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;
– set appropriate prefixes for orders, invoices, shipments, credit memos
 INSERT INTO  `YOUR_DB_NAME`.`eav_entity_store` (`entity_store_id` ,`entity_type_id` ,`store_id` ,`increment_prefix` ,`increment_last_id`) VALUES (‘1′,  ‘11′,  ‘1′,  ‘1′,  ‘000000000′);
 update `eav_entity_store` set `increment_prefix`= 1 where `entity_type_id`=’4′ and `store_id`=’1′;
 update `eav_entity_store` set `increment_last_id`= ‘000000000′ where `entity_type_id`=’4′ and `store_id`=’1′;
INSERT INTO  `YOUR_DB_NAME`.`eav_entity_store` (`entity_store_id` ,`entity_type_id` ,`store_id` ,`increment_prefix` ,`increment_last_id`) VALUES (‘2′,  ‘16′,  ‘1′,  ‘2′,  ‘000000000′);
 update `eav_entity_store` set `increment_prefix`= 2 where `entity_type_id`=’18′ and `store_id`=’1′;
 update `eav_entity_store` set `increment_last_id`= ‘000000000′ where `entity_type_id`=’18′ and `store_id`=’1′;
INSERT INTO  `YOUR_DB_NAME`.`eav_entity_store` (`entity_store_id` ,`entity_type_id` ,`store_id` ,`increment_prefix` ,`increment_last_id`) VALUES (‘3′,  ‘19′,  ‘1′,  ‘3′,  ‘000000000′);
 update `eav_entity_store` set `increment_prefix`= 3 where `entity_type_id`=’24′ and `store_id`=’1′;
 update `eav_entity_store` set `increment_last_id`= ‘000000000′ where `entity_type_id`=’24′ and `store_id`=’1′;
INSERT INTO  `YOUR_DB_NAME`.`eav_entity_store` (`entity_store_id` ,`entity_type_id` ,`store_id` ,`increment_prefix` ,`increment_last_id`) VALUES (‘4′,  ‘23′,  ‘1′,  ‘4′,  ‘000000000′);
 update `eav_entity_store` set `increment_prefix`= 4 where `entity_type_id`=’28′ and `store_id`=’1′;
 update `eav_entity_store` set `increment_last_id`= ‘000000000′ where `entity_type_id`=’28′ and `store_id`=’1′;

Falls der Artikel für euch hilfreich war, schreibt doch ein kurzes Feedback in den Kommentaren!

Magento: „Zurück“-Button anzeigen

13. November 2009 at 14:45

Ihr benötigt ein „Zurück“-Button in der Produkt-Detail-Liste in Magento um Sackgassen zu vermeiden und damit die Benutzbarkeit zu verbessern (SEO & Usability)? Ist es doch so, dass die Wege für den Kunden auf einer guten Webseite so wenig bzw. so kurz wie möglich sein sollten. Jeder unnötige, zusätzliche oder gar nicht mögliche Klick (da Link fehlt) kann Kunden kosten.

Template anpassen

Die Anpassung ist durch die Ergänzung des folgenden Codes in der Datei /app/design/frontend/[Ihr Interface]/[Ihr Theme]/template/catalog/product/view.phtml möglich:

<?php if ($_category = $_product->getCategory()): ?>
 <button onclick="window.location.href = '<?php echo $_category->getUrl(); ?>';" type="button">
 <span><?php echo $this->__('Back') ?></span>
 </button>
 <?php endif;?>
// pfad zu einer beliebigen anderen Stelle in Magento (z.B. customer account login)
// $this->getUrl('customer/account/login/')

Zur Formatierung des Zurück-Button verwenden wir die Standard „button“-CSS-Klasse. Wahlweise kann natürlich bei Bedarf eine neue/eigene definiert werden.

Ergebnis:

Magento Zurück-Button

Magento Zurück-Button

Sie Benötigen Unterstützung bei der Erstellung oder Anpassung eines Magento eCommerce Shop System?

Fly2Mars-Media unterstützt Sie in diesem und vielen anderen Bereichen rund um das Thema Internet & IT!

Für ein individuelles Angebot nehmen Sie noch heute Kontakt mit uns auf.