36
Wie programmiere ich ein Magento-Modul? Erste Schritte. David Fuhr, Flagbit GmbH & Co. KG Leipzig, 05.11.2010

Wie programmiere Ich ein Modul? Erste Schritte

  • Upload
    flagbit

  • View
    2.273

  • Download
    0

Embed Size (px)

DESCRIPTION

Eine Einführung in die Modulentwicklung mit Magento.

Citation preview

Page 1: Wie programmiere Ich ein Modul? Erste Schritte

Wie programmiere ich ein Magento-Modul? Erste Schritte.

David Fuhr, Flagbit GmbH & Co. KG Leipzig, 05.11.2010

Page 2: Wie programmiere Ich ein Modul? Erste Schritte

Agenda

•  Darstellung: Blocks, Templates und Layout XML •  Internationalisierung / Lokalisierung •  Datenhaltung: Models und Resource-Models •  Konfiguration: Widgets

Page 3: Wie programmiere Ich ein Modul? Erste Schritte

Verzeichnisse

•  app/code/<codepool>/<namespace>/<modulname> – z.B app/code/community/Flagbit/FeedReader

•  app/etc/modules – Zentrale Stelle um Module zu registrieren

Page 4: Wie programmiere Ich ein Modul? Erste Schritte

app/etc/modules/Flagbit_FeedReader.xml <?xml version="1.0" encoding="UTF-8"?> <config> <modules> <Flagbit_FeedReader> <active>true</active> <codePool>community</codePool> </Flagbit_FeedReader> </modules> </config>

Page 5: Wie programmiere Ich ein Modul? Erste Schritte

app/code/community/Flagbit/ FeedReader/etc/config.xml <?xml version="1.0" encoding="UTF-8"?> <config> <modules> <Flagbit_FeedReader> <version>0.0.1</version> </Flagbit_FeedReader> </modules> </config>

Page 6: Wie programmiere Ich ein Modul? Erste Schritte

Was bisher geschah...

Page 7: Wie programmiere Ich ein Modul? Erste Schritte

Blocks...

Page 8: Wie programmiere Ich ein Modul? Erste Schritte

.../Flagbit/FeedReader/etc/config.xml <?xml version="1.0" encoding="UTF-8"?> <config> <!-- ... --> <global> <blocks> <flagbit_feedreader> <class>Flagbit_FeedReader_Block</class> </flagbit_feedreader> </blocks> </global> </config>

Page 9: Wie programmiere Ich ein Modul? Erste Schritte

.../Flagbit/FeedReader/Block/View.php <?php /** * php doc here */ class Flagbit_FeedReader_Block_View

extends Mage_Core_Block_Template

{ public function getFeed() { /* ... */ } }

Page 10: Wie programmiere Ich ein Modul? Erste Schritte

Was bisher geschah...

Page 11: Wie programmiere Ich ein Modul? Erste Schritte

... und Layout XML

•  Erstellen •  Einfügen •  Entfernen •  Verschieben von Blöcken im Layout

Page 12: Wie programmiere Ich ein Modul? Erste Schritte

.../Flagbit/FeedReader/etc/config.xml <?xml version="1.0" encoding="UTF-8"?> <config> <!-- ... --> <frontend> <layout> <updates> <flagbit_feedreader> <file>flagbit_feedreader.xml</file> </flagbit_feedreader> </updates> </layout> </frontend> </config>

Page 13: Wie programmiere Ich ein Modul? Erste Schritte

.../design/frontend/base/default/layout/flagbit_feedreader.xml <?xml version="1.0" encoding="UTF-8"?> <layout version="0.1.0"> <default> <reference name=“right"> <block type="flagbit_feedreader/view"

name=“right.flagbit_feedreader.rightcol" template="flagbit_feedreader/right_col.phtml“ />

</reference> </default> </layout>

Page 14: Wie programmiere Ich ein Modul? Erste Schritte

.../base/default/template/flagbit_feedreader/right_col.phtml <?php /* @var $this Flagbit_FeedReader_Block_View */ ?> <div class="block"> <div class="block-title“><strong><span> <?php echo $this->escapeHtml($this->__(‘News from out

Feed')); ?>

</span></strong></div> <div class="block-content"> <p><?php echo $this->escapeHtml($this->__(‘Hm... what

Feed?')); ?></p>

</div> </div> <?php endif; ?>

Page 15: Wie programmiere Ich ein Modul? Erste Schritte

Was bisher geschah...

Page 16: Wie programmiere Ich ein Modul? Erste Schritte

Awsum!

Page 17: Wie programmiere Ich ein Modul? Erste Schritte

.../design/frontend/base/default/layout/flagbit_feedreader.xml <?xml version="1.0" encoding="UTF-8"?> <layout version="0.1.0"> <default> <reference name=“right"> <block type="flagbit_feedreader/view"

name=“right.flagbit_feedreader.rightcol" template="flagbit_feedreader/right_col.phtml“ />

</reference> </default> </layout>

Page 18: Wie programmiere Ich ein Modul? Erste Schritte

Mehr mit Layout XML

•  Layout Handles (Beispiele) – catalog_product_view – checkout_cart_index – customer_account – customer_logged_in – PRODUCT_TYPE_configurable –  ...

Page 19: Wie programmiere Ich ein Modul? Erste Schritte

i18n / l10n

•  Internationalisation – Schaffen der Vorraussetzungen für die...

•  Localisation – Die Umsetzung für eine Ziel-Locale

Page 20: Wie programmiere Ich ein Modul? Erste Schritte

.../base/default/template/flagbit_feedreader/right_col.phtml <?php /* @var $this Flagbit_FeedReader_Block_View */ ?> <div class="block"> <div class="block-title“><strong><span> <?php echo $this->escapeHtml($this->__(‘News from out

Feed')); ?>

</span></strong></div> <div class="block-content"> <p><?php echo $this->escapeHtml($this->__(‘Hm... what

Feed?')); ?></p>

</div> </div> <?php endif; ?>

Page 21: Wie programmiere Ich ein Modul? Erste Schritte

.../Flagbit/FeedReader/etc/config.xml (schon wieder) <?xml version="1.0" encoding="UTF-8"?> <config> <!-- ... --> <frontend> <!-- ... --> <translate> <modules> <Flagbit_FeedReader> <files> <default>Flagbit_FeedReader.csv</default> </files> </Flagbit_FeedReader> </modules> </translate> </frontend> </config>

Page 22: Wie programmiere Ich ein Modul? Erste Schritte

app/locale/de_DE/Flagbit_FeedReader.csv "News from our Feed","Letzte Neuigkeiten" "Hm... what Feed?","Hm... welche Neuigkeiten?"

Page 23: Wie programmiere Ich ein Modul? Erste Schritte

Was bisher geschah...

Page 24: Wie programmiere Ich ein Modul? Erste Schritte

Awsum!

Page 25: Wie programmiere Ich ein Modul? Erste Schritte

Models...

•  Datenhaltung /-speicherung •  Enthalten Berechnungen, interne Logik,

Geschäftslogik, etc. •  z.B. Mage_Catalog_Model_Product,

Mage_Sales_Model_Order

Page 26: Wie programmiere Ich ein Modul? Erste Schritte

.../Flagbit/Faq/etc/config.xml (wieder mal) <?xml version="1.0" encoding="UTF-8"?> <config> <!-- ... --> <global> <!-- ... --> <models> <flagbit_feedreader> <class>Flagbit_FeedReader_Model</class> </flagbit_feedreader> </models> </global> <!-- ... --> </config>

Page 27: Wie programmiere Ich ein Modul? Erste Schritte

.../Flagbit/FeedReader/Model/Feed.php <?php

class Flagbit_FeedReader_Model_Feed extends Mage_Core_Model_Abstract

{ public function getFeed() { return Zend_Feed::import($this->getUri()); } }

Page 28: Wie programmiere Ich ein Modul? Erste Schritte

Was bisher geschah...

Page 29: Wie programmiere Ich ein Modul? Erste Schritte

Ein bisschen Demo-Voodoo...

•  Block/View.php public function getTitle() { return Mage::getModel('flagbit_feedreader/feed') ->setUri('http://feeds.feedburner.com/MageBlog') ->title(); }

•  template/flagbit_feedreader/right_col.phtml <?php echo $this->escapeHtml($this->__('News from ') . $this->getTitle()); ?>

Page 30: Wie programmiere Ich ein Modul? Erste Schritte

Awsum!

Page 31: Wie programmiere Ich ein Modul? Erste Schritte

Resource-Models...

•  Persistenz-Schicht zwischen Models und Datenbank

•  DBMS-spezifisch (Oracle und MSSQL-Support sind geplant): Enthalten SQL

Page 32: Wie programmiere Ich ein Modul? Erste Schritte

Widgets

Page 33: Wie programmiere Ich ein Modul? Erste Schritte

.../Flagbit/FeedReader/etc/widget.xml <?xml version="1.0" encoding="UTF-8"?> <widgets> <flagbit_feedreader_sidebar type="flagbit_feedreader/view"

translate="name description">

<name>FeedReader: Sidebar</name> <description type="desc">Adds a FeedReader block</description> <parameters> <uri translate="label"> <required>1</required> <visible>1</visible> <label>Feed URI</label> <type>text</type> </uri> </parameters> </flagbit_feedreader_sidebar> </widgets>

Page 34: Wie programmiere Ich ein Modul? Erste Schritte

Insert Widget...

Page 35: Wie programmiere Ich ein Modul? Erste Schritte

Was bisher geschah...

Page 36: Wie programmiere Ich ein Modul? Erste Schritte

Awsum!

https://github.com/Flagbit/Magento-FeedReader http://www.mageblog.de/ http://www.flagbit.de/

Fragen?