Joomla! Programmierung/Programmierung/Struktur einer Komponente

Aus Joomla! Dokumentation
Wechseln zu: Navigation, Suche

[Bearbeiten] Übersicht

JRoot
Tree-T.pngFolder blue.png administrator
Tree-V.pngTree-T.pngFolder blue.png components
Tree-V.pngTree-V.pngTree-L.pngFolder blue.png com_KOMPONENTENNAME Administrator (Backend)
Tree-V.pngTree-V.pngTree-S.pngTree-T.pngFolder blue.png assets Optionaler Ordner z.B. für Bilder oder Javascript Dateien
Tree-V.pngTree-V.pngTree-S.pngTree-T.pngFolder blue.png controllers Optionaler Ordner für Subcontroller
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-L.pngFile php.png SUBCONTROLLER.php Optionaler Subcontroller
Tree-V.pngTree-V.pngTree-S.pngTree-T.pngFolder blue.png help Optionaler Ordner für Hilfedateien (Toolbar Button)
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-T.pngFolder blue.png de-DE Beispielverzeichnis bei deutsch als gewählte Sprache des Backends
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-V.pngTree-T.pngFile html.png KONTEXTA.html Kontext-spezifische Hilfedatei
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-V.pngTree-L.pngFile html.png KONTEXTB.html Weitere Hilfedatei
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-T.pngFolder blue.png en-GB Beispielverzeichnis bei englisch als gewählte Sprache des Backends
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-V.pngTree-T.pngFile html.png CONTEXTA.html Kontext-spezifische Hilfedatei
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-V.pngTree-L.pngFile html.png CONTEXTB.html Weitere Hilfedatei
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-L.pngFolder blue.png LÄNDERCODE Ländercode weiterer, installierter Sprachen
Tree-V.pngTree-V.pngTree-S.pngTree-T.pngFolder blue.png helpers Optionaler Ordner für Helperdateien
Tree-V.pngTree-V.pngTree-S.pngTree-T.pngFolder blue.png models Ordner für Modelklassen die automatisch geladen werden
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-L.pngFile php.png KOMPONENTENNAME.php Das Standardmodel
Tree-V.pngTree-V.pngTree-S.pngTree-T.pngFolder blue.png tables Ordner für Tableklassen die automatisch geladen werden
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-L.pngFile php.png table.php Die Standardtabelle
Tree-V.pngTree-V.pngTree-S.pngTree-T.pngFolder blue.png views Ordner für Viewklassen die automatisch geladen werden
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-L.pngFolder blue.png KOMPONENTENNAME Der Standardview
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-S.pngTree-T.pngFolder blue.png tmpl Ordner für Viewtemplates
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-S.pngTree-V.pngTree-L.pngFile php.png default.php Das Standardtemplate
Tree-V.pngTree-V.pngTree-S.pngTree-V.pngTree-S.pngTree-L.pngFile php.png view.html.php Der Standardview
Tree-V.pngTree-V.pngTree-S.pngTree-T.pngFile php.png KOMPONENTENNAME.php Die Einstiegsdatei der Komponente
Tree-V.pngTree-V.pngTree-S.pngTree-T.pngFile php.png controller.php Der Standardcontroller
Tree-V.pngTree-V.pngTree-S.pngTree-L.pngFile xml.png manifest.xml Das Installmanifest der Komponente
Tree-V.pngTree-L.pngFolder blue.png language Spachdateien für das Backend
Tree-V.pngTree-S.pngTree-T.pngFolder blue.png de-DE Sprachdateien für die deutsche Sprache
Tree-V.pngTree-S.pngTree-V.pngTree-T.pngFile ini.png de-DE.com_KOMPONENTENNAME.ini Deutsche Sprachdatei
Tree-V.pngTree-S.pngTree-V.pngTree-L.pngFile ini.png de-DE.com_KOMPONENTENNAME.menu.ini Optionale Sprachdatei für das Administrator Menü
Tree-V.pngTree-S.pngTree-L.pngFolder blue.png en-GB Sprachdateien für die englische Sprache
Tree-V.pngTree-S.pngTree-S.pngTree-T.pngFile ini.png en-GB.com_KOMPONENTENNAME.ini Englische Sprachdatei
Tree-V.pngTree-S.pngTree-S.pngTree-L.pngFile ini.png en-GB.com_KOMPONENTENNAME.menu.ini Optionale Sprachdatei für das Administrator Menü
Tree-T.pngFolder blue.png components
Tree-V.pngTree-L.pngFolder blue.png com_KOMPONENTENNAME Site (Frontend)
Tree-V.pngTree-S.pngTree-T.pngFolder blue.png assets Optionaler Ordner z.B. für Bilder oder Javascript Dateien
Tree-V.pngTree-S.pngTree-T.pngFolder blue.png controllers Optionaler Ordner für Subcontroller
Tree-V.pngTree-S.pngTree-V.pngTree-L.pngFile php.png SUBCONTROLLER.php
Tree-V.pngTree-S.pngTree-T.pngFolder blue.png helpers Optionaler Ordner für Helperdateien
Tree-V.pngTree-S.pngTree-T.pngFolder blue.png models Ordner für Modelklassen die automatisch geladen werden
Tree-V.pngTree-S.pngTree-V.pngTree-L.pngFile php.png KOMPONENTENNAME.php Das Standardmodel
Tree-V.pngTree-S.pngTree-T.pngFolder blue.png tables Ordner für Tableklassen die automatisch geladen werden
Tree-V.pngTree-S.pngTree-V.pngTree-L.pngFile php.png KOMPONENTENNAME.php Die Standardtabelle
Tree-V.pngTree-S.pngTree-T.pngFolder blue.png views Ordner für Viewklassen die automatisch geladen werden
Tree-V.pngTree-S.pngTree-V.pngTree-L.pngFolder blue.png KOMPONENTENNAME Der Standardview
Tree-V.pngTree-S.pngTree-V.pngTree-S.pngTree-T.pngFolder blue.png tmpl Ordner für Viewtemplates.
Tree-V.pngTree-S.pngTree-V.pngTree-S.pngTree-V.pngTree-L.pngFile php.png default.php Das Standardtemplate
Tree-V.pngTree-S.pngTree-V.pngTree-S.pngTree-L.pngFile php.png view.html.php
Tree-V.pngTree-S.pngTree-T.pngFile php.png KOMPONENTENNAME.php Die "Einstiegsdatei der Komponente
Tree-V.pngTree-S.pngTree-L.pngFile php.png controller.php Der Standardcontroller
Tree-T.pngFolder blue.png language Spachdateien für das Frontend
Tree-V.pngTree-T.pngFolder blue.png de-DE Sprachdateien für die deutsche Sprache
Tree-V.pngTree-V.pngTree-L.pngFile ini.png de-DE.com_KOMPONENTENNAME.ini Deutsche Sprachdatei
Tree-V.pngTree-L.pngFolder blue.png en-GB Sprachdateien für die englische Sprache
Tree-V.pngTree-S.pngTree-L.pngFile ini.png en-GB.com_KOMPONENTENNAME.ini Englische Sprachdatei
 ...

Administrator (Backend)

[Bearbeiten] Controllers

Folder blue.png administrator/components/com_KOMPONENTENNAME/controllers/

File php.png SUBCONTROLLER.php - Optionale Subcontroller.

jimport('joomla.application.component.controller');
 
class 'KOMPONENTENNAME'Controller'SUBCONTROLLER' extends 'KOMPONENTENNAME'Controller
{
    function __construct()
    {
        parent::__construct();
    }//function
}//class

[Bearbeiten] Models

Folder blue.png administrator/components/com_KOMPONENTENNAME/models/

File php.png KOMPONENTENNAME.php - Das Standardmodel

jimport('joomla.application.component.model');
 
class 'KOMPONENTENNAME'Model'KOMPONENTENNAME' extends JModel
{
    function __construct()
    {
        parent::__construct();
    }//function
}//class

[Bearbeiten] Tables

Folder blue.png administrator/components/com_KOMPONENTENNAME/tables/

File php.png KOMPONENTENNAME.php - Die Standardtabelle

jimport('joomla.tables.table');
 
class 'KOMPONENTENNAME' extends JTable
{
    function __construct(& $db)
    {
        parent::__construct('#__KOMPONENTENNAME', 'id', $db);
    }//function
 
}//class

[Bearbeiten] Views

Folder blue.png administrator/components/com_KOMPONENTENNAME/views/KOMPONENTENNAME

File php.png view.html.php - Der Standardview

jimport('joomla.application.component.view');
 
class 'KOMPONENTENNAME'View'KOMPONENTENNAME' extends JView
{
    function display($tpl = null)
    {
        parent::display($tpl);
    }//function
}//class

[Bearbeiten] Template

Folder blue.png administrator/components/com_KOMPONENTENNAME/views/KOMPONENTENNAME/tmpl/

File php.png default.php - Das Standardtemplate

[Bearbeiten] Base

[Bearbeiten] KOMPONENTENNAME.php

Folder blue.png administrator/components/com_KOMPONENTENNAME/

File php.png KOMPONENTENNAME.php - Die Einstiegsdatei

Joomla 1.5

require_once JPATH_COMPONENT.DS.'controller.php';
 
//-- Falls ein Subcontroller angefordert wurde wird dieser inkludiert
if($controller = JRequest::getCmd('controller'))
{
    $path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php';
 
    if(file_exists($path))
    {
        require_once $path;
    } else
    {
        $controller = '';
    }
}
 
//-- Ein Controllerobjekt erstellen
$classname = 'KOMPONENTENNAMEController'.$controller;
$controller = new $classname();
 
//-- Den angeforderten Task ausführen
$controller->execute(JRequest::getCmd('task'));
 
//-- Einen Redirect ausführen falls er vom Controller gesetzt wurde
$controller->redirect();

Joomla 1.6

//-- Die Joomla! Controllerbibliothek importieren
jimport('joomla.application.component.controller');
 
//-- Eine Instanz des Controllers mit dem Präfix 'KOMPONENTENNAME' beziehen
$controller = JController::getInstance('KOMPONENTENNAME');
 
// Den 'task' der im Request übergeben wurde ausführen
$controller->execute(JRequest::getCmd('task'));
 
//-- Einen Redirect ausführen falls er vom Controller gesetzt wurde
$controller->redirect();

[Bearbeiten] controller.php

Folder blue.png administrator/components/com_KOMPONENTENNAME/

File php.png controller.php - Der Hauptcontroller

jimport('joomla.application.component.controller');
 
class 'KOMPONENTENNAME'Controller extends JController
{
    function display()
    {
        parent::display();
    }//function
}//class

[Bearbeiten] manifest.xml

Folder blue.png administrator/components/com_KOMPONENTENNAME/

File xml.png manifest.xml

Siehe auch: Manifestdatei für Komponenten Joomla 1.5 Manifestdatei für Komponenten Joomla 1.6

Site (Frontend)

[Bearbeiten] Controllers

Folder blue.png components/com_KOMPONENTENNAME/controllers/

File php.png SUBCONTROLLER.php - Optionale Subcontroller.

jimport('joomla.application.component.controller');
 
class 'KOMPONENTENNAME'Controller'SUBCONTROLLER' extends 'KOMPONENTENNAME'Controller
{
    function __construct()
    {
        parent::__construct();
    }//function
}//class

[Bearbeiten] Models

Folder blue.png components/com_KOMPONENTENNAME/models/

File php.png KOMPONENTENNAME.php - Das Standardmodel

jimport('joomla.application.component.model');
 
class 'KOMPONENTENNAME'Model'KOMPONENTENNAME' extends JModel
{
    function __construct()
    {
        parent::__construct();
    }//function
}//class

[Bearbeiten] Tables

Folder blue.png components/com_KOMPONENTENNAME/tables/

File php.png KOMPONENTENNAME.php - Die Standardtabelle

Standardmässig wird zuerst im Adminbereich nach einer Tabelle gesucht.

jimport('joomla.tables.table');
 
class 'KOMPONENTENNAME' extends JTable
{
    function __construct(& $db)
    {
        parent::__construct('#__KOMPONENTENNAME', 'id', $db);
    }//function
 
}//class

[Bearbeiten] Views

Folder blue.png components/com_KOMPONENTENNAME/views/KOMPONENTENNAME/

File php.png view.html.php - Der Standardview

jimport('joomla.application.component.view');
 
class 'KOMPONENTENNAME'View'KOMPONENTENNAME' extends JView
{
    function display($tpl = null)
    {
        parent::display($tpl);
    }//function
}//class

[Bearbeiten] Template

Folder blue.png components/com_KOMPONENTENNAME/views/KOMPONENTENNAME/tmpl/

File php.png default.php - Das Standardtemplate

[Bearbeiten] Base

[Bearbeiten] KOMPONENTENNAME.php

Folder blue.png components/com_KOMPONENTENNAME/

File php.png KOMPONENTENNAME.php - Die Einstiegsdatei

Joomla 1.5

require_once JPATH_COMPONENT.DS.'controller.php';
 
//-- Falls ein Subcontroller angefordert wurde wird dieser inkludiert
if($controller = JRequest::getCmd('controller'))
{
    $path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php';
 
    if(file_exists($path))
    {
        require_once $path;
    } else
    {
        $controller = '';
    }
}
 
//-- Ein Controllerobjekt erstellen
$classname = 'KOMPONENTENNAMEController'.$controller;
$controller = new $classname();
 
//-- Den angeforderten Task ausführen
$controller->execute(JRequest::getCmd('task'));
 
//-- Einen Redirect ausführen falls er vom Controller gesetzt wurde
$controller->redirect();

Joomla 1.6

//-- Die Joomla! Controllerbibliothek importieren
jimport('joomla.application.component.controller');
 
//-- Eine Instanz des Controllers mit dem Präfix 'KOMPONENTENNAME' beziehen
$controller = JController::getInstance('KOMPONENTENNAME');
 
// Den 'task' der im Request übergeben wurde ausführen
$controller->execute(JRequest::getCmd('task'));
 
//-- Einen Redirect ausführen falls er vom Controller gesetzt wurde
$controller->redirect();

[Bearbeiten] controller.php

Folder blue.png components/com_KOMPONENTENNAME/

File php.png controller.php - Der Hauptcontroller

jimport('joomla.application.component.controller');
 
class 'KOMPONENTENNAME'Controller extends JController
{
    function display()
    {
        parent::display();
    }//function
}//class
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Sonstiges
Team Navigation
Werkzeuge