
Μέρος της προσαρμογής του Magento είναι φυσικά και η δημιουργία προσαρμοσμένων Modules. Αυτό σας επιτρέπει να προσθέσετε δική σας λειτουργικότητα παντού πάνω στο Magento, είτε μιλάμε για ένα στατικό πλαίσιο, είτε μιλάμε για ένα Module που έχει να κάνει με το καλάθι αγορών και την παράδοση των προϊόντων, είτε μιλάμε για ένα μεγάλο Module όπως για παράδειγμα την επικοινωνία του Magento με ένα πρόγραμμα τρίτου κατασκευαστή.
Τα προσαρμοσμένα Modules έχουν πολλές δυνατότητες, από την επεξεργασία της βάσης δεδομένων μέχρι την αναβάθμιση των Modules, την παράκαμψη κλάσεων ( Blocks, Controllers, Models), … , και άλλα πολλά.
Αυτό το άρθρο θα σας παρουσιάσει τα πολύ βασικά, για τη δημιουργία του δικού σας προσαρμοσμένου Module, και τη σύνδεσή του με το δικό σας phtml αρχείο στο εγκατεστημένο Template σας.
Θα δημιουργήσω ένα Webres Example Module. Το Webres είναι το namespace ( όπως για παράδειγμα το Mage), Example είναι το όνομα του Module (όπως για παράδειγμα τα Catalog, Page, Core, Shipping, κα.).
Ενημερώστε το Magento για την ύπαρξη του Module.
Δημιουργήστε το αρχείο Webres_All.xml στον κατάλογο app/etc/modules/
Παρατηρήστε το επίθεμα _All.xml. Σε αυτό το αρχείο μπορώ να δηλώσω όλα τα Modules που δημιουργώ κάτω από το namespace Webres. Αν έχω για παράδειγμα ακόμα μια μονάδα που τη λένε Discounts τότε θα την καταγράψω μέσα σε αυτό το αρχείο.
Μέσα στο αρχείο γράψτε τον παρακάτω κώδικα :
<?xml version="1.0"?>
<config>
<modules>
<Webres_Example>
<active>true</active>
<codePool>local</codePool>
</Webres_Example>
</modules>
</config>
Με αυτό τον κώδικα ενημερώνουμε το Magento ότι έχουμε ένα ενεργό Module (μπορείτε να το απενεργοποιήσετε αν αλλάξετε τη γραμμή <active>true</active> σε <active>false</active>). Επίσης έχω ενημερώσει το Magento ότι το Module βρίσκετε στο local codePool.
Προσαρμόστε το Module σας. Δημιουργήστε το αρχείο config.xml κάτω από τον κατάλογο app/code/local/Webres/Example/etc/.
Μέσα στο αρχείο config.xml βάλτε τον κώδικα που ακολουθεί :
<?xml version="1.0"?>
<config>
<modules>
<Webres_Example>
<version>0.1.0</version>
</Webres_Example>
</modules>
<global>
<blocks>
<webres_example>
<class>Webres_Example_Block</class>
</webres_example>
</blocks>
</global>
</config>
Το παραπάνω αρχείο ενημερώνει αρχικά το Magento για την έκδοση του Module. Η έκδοση του Module είναι χρήσιμη όταν θέλετε να δέχεται αναβαθμίσεις. (Μια νεότερη έκδοση θα ενημερώσει το Magento να εκτελέσει τα αρχεία ενημέρωσης).
Επίσης με τον κώδικα μέσα στο config.xml ενημέρωσα το Magento ότι το Module μου έχει και αρχεία Block τα οποία θα τα βρει στον φάκελο webres/example/block. Το όνομα της κλάσης μου είναι θα είναι Webres_Example_Block.
Αν θέλετε να δείτε το σύνολο των επιλογών που έχετε για το αρχείο config.xml ανοίξτε και μελετήστε το αρχείο config.xml που είναι στον φάκελο app/code/core/Mage/Catalog/etc/. Μέσα σε αυτό το φάκελο θα δείτε και άλλα αρχεία xml τα οποία όμως δεν αφορούν αυτό το άρθρο, οπότε δεν θα τα συζητήσουμε.
Εδώ θα δούμε τον κώδικα του Block μας. Στην πραγματικότητα δεν κάνει τίποτα σπουδαίο, αλλά κάνει μερικές πολύ βασικές λειτουργίες.
Δημιουργήστε το αρχείο View.php στον κατάλογο app/code/local/Webres/Example/Block/
<?php
/**
* Example View block
*
* @codepool Local
* @category Webres
* @package Webres_Example
* @module Example
*/
class Webres_Example_Block_View extends Mage_Core_Block_Template
{
private $message;
private $att;
protected function createMessage($msg)
{
$this->message = $msg;
}
public function receiveMessage()
{
if($this->message != '')
{
return $this->message;
}
else
{
$this->createMessage('Hello World');
return $this->message;
}
}
protected function _toHtml()
{
$html = parent::_toHtml();
if($this->att = $this->getMyCustom() && $this->getMyCustom() != '')
{
$html .= '<br />'.$this->att;
}
else
{
$html .= '<br />No Custom Attribute Found';
}
return $html;
}
}
?>
Η συνάρτηση receiveMessage() απλά επιστρέφει ένα Hello World.
Η συνάρτηση toHtml() είναι υπεύθυνη να επιστρέψει το αρχείο προσχεδίου (template) που είναι συσχετισμένο με αυτό το Block. Βεβαιωθείτε ότι εκτελείτε το parent::toHtml() και ότι το κάνετε return μαζί με ότι άλλο έχει να επιστρέψει αυτή η συνάρτηση.
Σε αυτό το βήμα θα δημιουργήσουμε το Template (phmtl) μας για αυτό το block. Δημιουργήστε το αρχείο view.phtml στον κατάλογο app/design/frontend/default/webres/template/example.
Μέσα στο αρχείο view.phtml τοποθετήστε τον κώδικα που ακολουθεί :
<?php
/**
* Webres view template
*
* @see Webres_Example_Block_View
*
*/
?>
<div>
<span>
<strong>This is the output of the webres example:</strong>
</span>
<br />
<span style="color:#FF9933;">
<?php
echo $this->receiveMessage();
?>
</span>
</div>
Σε αυτό το κομμάτι κώδικα έχουμε βάλει λίγο HTML κώδικα και επίσης εκτελούμε τη συνάρτηση receiveMessage() από το block μας view.php
Δυο σημειώσεις εδώ ! Τοποθετώντας το αρχείο μας view.phtml στη δική του θέση (app/design/frontend/default/webres/template/example), ουσιαστικά δημιουργήσαμε ένα νέο θέμα για το Magento, οπότε για να δείτε το Module σας να λειτουργεί βεβαιωθείτε για τα ακόλουθα :
Το προσαρμοσμένο Module σας τώρα είναι έτοιμo.
Αν θέλετε να προσαρμόσετε το Module σας σε μια σελίδα στο CMS σας γράψτε το ακόλουθο :
{{block type="webres_example/view" my_custom="Test" template="example/view.phtml" }}
Ή γράψτε κάτι σαν το παρακάτω στην περιοχή Layout Update XML (Στο CMS είναι η περιοχή Custom Design )
<reference name="right">
<block type="webres_example/view" my_custom="Test" template="example/view.phtml" />
</reference>
//this will add your block in the right column
Αν έχετε ολοκληρώσει όλα τα βήματα ως τώρα σωστά θα πρέπει να εμφανίζετε το Hello World στη CMS σελίδα σας.
[...] This post was mentioned on Twitter by magento news, Web Resoures.eu. Web Resoures.eu said: Magento : Δημιουργία ενός απλού Module : http://j.mp/b9XSLW [...]