SlideShare a Scribd company logo
1 of 36
Download to read offline
Wie programmiere ich ein
Magento-Modul? Erste Schritte.
David Fuhr, Flagbit GmbH & Co. KG
Leipzig, 05.11.2010
Agenda
•  Darstellung: Blocks, Templates und Layout XML
•  Internationalisierung / Lokalisierung
•  Datenhaltung: Models und Resource-Models
•  Konfiguration: Widgets
Verzeichnisse
•  app/code/<codepool>/<namespace>/
<modulname>
– z.B app/code/community/Flagbit/FeedReader
•  app/etc/modules
– Zentrale Stelle um Module zu registrieren
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>
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>
Was bisher geschah...
Blocks...
.../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>
.../Flagbit/FeedReader/Block/
View.php
<?php
/**
* php doc here
*/
class Flagbit_FeedReader_Block_View
extends Mage_Core_Block_Template
{
public function getFeed() { /* ... */ }
}
Was bisher geschah...
... und Layout XML
•  Erstellen
•  Einfügen
•  Entfernen
•  Verschieben
von Blöcken im Layout
.../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>
.../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>
.../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; ?>
Was bisher geschah...
Awsum!
.../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>
Mehr mit Layout XML
•  Layout Handles (Beispiele)
– catalog_product_view
– checkout_cart_index
– customer_account
– customer_logged_in
– PRODUCT_TYPE_configurable
– ...
i18n / l10n
•  Internationalisation
– Schaffen der Vorraussetzungen für die...
•  Localisation
– Die Umsetzung für eine Ziel-Locale
.../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; ?>
.../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>
app/locale/de_DE/
Flagbit_FeedReader.csv
"News from our Feed","Letzte Neuigkeiten"
"Hm... what Feed?","Hm... welche Neuigkeiten?"
Was bisher geschah...
Awsum!
Models...
•  Datenhaltung /-speicherung
•  Enthalten Berechnungen, interne Logik,
Geschäftslogik, etc.
•  z.B. Mage_Catalog_Model_Product,
Mage_Sales_Model_Order
.../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>
.../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());
}
}
Was bisher geschah...
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()); ?>
Awsum!
Resource-Models...
•  Persistenz-Schicht zwischen Models und
Datenbank
•  DBMS-spezifisch (Oracle und MSSQL-Support
sind geplant): Enthalten SQL
Widgets
.../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>
Insert Widget...
Was bisher geschah...
Awsum!
https://github.com/Flagbit/Magento-FeedReader
http://www.mageblog.de/
http://www.flagbit.de/
Fragen?

More Related Content

Similar to Wie programmiere Ich ein Modul? Erste Schritte.

Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenBjoern Reinhold
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGTorsten Kleiber
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013goobi_org
 
Zend Framework 2 - Best Practices
Zend Framework 2 - Best PracticesZend Framework 2 - Best Practices
Zend Framework 2 - Best PracticesRalf Eggert
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Jürg Stuker
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Jürg Stuker
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit WordpressBlogwerk AG
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptRalf Schwoebel
 
Medien Kombinat Meet Magento 05022009
Medien Kombinat Meet Magento 05022009Medien Kombinat Meet Magento 05022009
Medien Kombinat Meet Magento 05022009dasmedienkombinatde
 
Mobile Webentwicklung mit HTML5
Mobile Webentwicklung mit HTML5Mobile Webentwicklung mit HTML5
Mobile Webentwicklung mit HTML5kkramhoeft
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit MavenStefan Scheidt
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft AG
 
magnolia mit thymeleaf - ein agiler prozess-beschleuniger
magnolia mit thymeleaf - ein agiler prozess-beschleunigermagnolia mit thymeleaf - ein agiler prozess-beschleuniger
magnolia mit thymeleaf - ein agiler prozess-beschleunigerThomas Kratz
 

Similar to Wie programmiere Ich ein Modul? Erste Schritte. (20)

Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
AngularJs
AngularJsAngularJs
AngularJs
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
 
Moderner Webentwicklungs-Workflow
Moderner Webentwicklungs-WorkflowModerner Webentwicklungs-Workflow
Moderner Webentwicklungs-Workflow
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
 
Zend Framework 2 - Best Practices
Zend Framework 2 - Best PracticesZend Framework 2 - Best Practices
Zend Framework 2 - Best Practices
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006
 
MVVM mit WPF
MVVM mit WPFMVVM mit WPF
MVVM mit WPF
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit Wordpress
 
GWT
GWTGWT
GWT
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit Javascript
 
Medien Kombinat Meet Magento 05022009
Medien Kombinat Meet Magento 05022009Medien Kombinat Meet Magento 05022009
Medien Kombinat Meet Magento 05022009
 
Hdc2012 cordova-präsi
Hdc2012 cordova-präsiHdc2012 cordova-präsi
Hdc2012 cordova-präsi
 
Mobile Webentwicklung mit HTML5
Mobile Webentwicklung mit HTML5Mobile Webentwicklung mit HTML5
Mobile Webentwicklung mit HTML5
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform Apps
 
Schnelleinstieg in Angular
Schnelleinstieg in AngularSchnelleinstieg in Angular
Schnelleinstieg in Angular
 
magnolia mit thymeleaf - ein agiler prozess-beschleuniger
magnolia mit thymeleaf - ein agiler prozess-beschleunigermagnolia mit thymeleaf - ein agiler prozess-beschleuniger
magnolia mit thymeleaf - ein agiler prozess-beschleuniger
 

Wie programmiere Ich ein Modul? Erste Schritte.