SlideShare ist ein Scribd-Unternehmen logo
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?

Weitere ähnliche Inhalte

Ähnlich wie 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 Unternehmen
Bjoern Reinhold
 
AngularJs
AngularJsAngularJs
AngularJs
NETUserGroupBern
 
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
Torsten Kleiber
 
Moderner Webentwicklungs-Workflow
Moderner Webentwicklungs-WorkflowModerner Webentwicklungs-Workflow
Moderner Webentwicklungs-Workflow
PLUSPOL interactive GbR
 
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
OPITZ 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 2013
goobi_org
 
Zend Framework 2 - Best Practices
Zend Framework 2 - Best PracticesZend Framework 2 - Best Practices
Zend Framework 2 - Best Practices
Ralf Eggert
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006
Jürg Stuker
 
MVVM mit WPF
MVVM mit WPFMVVM mit WPF
MVVM mit WPF
Hendrik Lösch
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003
Jürg Stuker
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit Wordpress
Blogwerk 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 Javascript
Ralf 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 HTML5
kkramhoeft
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
Stefan Scheidt
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft AG
 
Schnelleinstieg in Angular
Schnelleinstieg in AngularSchnelleinstieg in Angular
Schnelleinstieg in Angular
Sebastian Springer
 
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
Thomas Kratz
 

Ähnlich wie 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.