![Page 1: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/1.jpg)
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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/2.jpg)
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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/3.jpg)
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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/4.jpg)
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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/5.jpg)
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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/6.jpg)
Was bisher geschah...
![Page 7: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/7.jpg)
Blocks...
![Page 8: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/8.jpg)
.../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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/9.jpg)
.../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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/10.jpg)
Was bisher geschah...
![Page 11: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/11.jpg)
... und Layout XML
• Erstellen • Einfügen • Entfernen • Verschieben von Blöcken im Layout
![Page 12: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/12.jpg)
.../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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/13.jpg)
.../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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/14.jpg)
.../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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/15.jpg)
Was bisher geschah...
![Page 16: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/16.jpg)
Awsum!
![Page 17: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/17.jpg)
.../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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/18.jpg)
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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/19.jpg)
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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/20.jpg)
.../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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/21.jpg)
.../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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/22.jpg)
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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/23.jpg)
Was bisher geschah...
![Page 24: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/24.jpg)
Awsum!
![Page 25: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/25.jpg)
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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/26.jpg)
.../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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/27.jpg)
.../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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/28.jpg)
Was bisher geschah...
![Page 29: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/29.jpg)
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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/30.jpg)
Awsum!
![Page 31: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/31.jpg)
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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/32.jpg)
Widgets
![Page 33: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/33.jpg)
.../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](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/34.jpg)
Insert Widget...
![Page 35: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/35.jpg)
Was bisher geschah...
![Page 36: Wie programmiere Ich ein Modul? Erste Schritte](https://reader034.vdokument.com/reader034/viewer/2022051514/548fa984b47959f2248b50c2/html5/thumbnails/36.jpg)
Awsum!
https://github.com/Flagbit/Magento-FeedReader http://www.mageblog.de/ http://www.flagbit.de/
Fragen?