Sök…


Anmärkningar

Moduler finns för att förlängas. Du kan inte ändra the app/code/ filerna utan att förbjuda framtida uppdateringar. Istället lägger vi till en modul till app/code/local katalog (den lokala katalogen kan saknas, i så fall måste den skapas manuellt. Detta är vanligt i senare versioner av Magento) för att lägga till anpassad lokal funktionalitet.

Alla modulkonfigurationsfiler börjar med en <config> -tagg. Den nya modulen deklareras i <modules> -taggen. Vi kommer att ringa en modul med namnet YOUR_COMPANY_HelloWorld, därför används <YOUR_COMPANY_HelloWorld> . Här definierar vi versionen (allra första = 0.0.1)

En lista över XML-händelser kan hittas på: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/module_config.xml

Om du har några problem så kolla in: http://coding.smashingmagazine.com/2012/11/30/introducing-magento-layout/

Skapa en modul från början (Hello World)

Magento-anpassad modulutveckling är en kärna del av varje Magento-utvecklings- eller Magento-projekt, eftersom du i varje skede kanske vill integrera din egen funktionalitet / modul i ditt befintliga Magento-projekt.

Det första som utvecklare bör inaktivera är systemcachen. Annars kommer utvecklingen att bli en smärta eftersom alla förändringar kräver en spolning. Från magento adminpanelen: navigera till System > Cache Management > Select All > Actions : Disable. Använd följande guide för att skapa en ny modul:

  • Skapa en mapp i app/code/local/ - namngivningskonventioner tar vanligtvis namnet på ditt företag, t.ex. app/code/local/<YOUR_COMPANY> .

  • Nu har vi en anpassad plats för våra moduler. Skapa en annan katalog, kalla det något relaterat till den typ av modul du vill skapa t.ex. app / kod / local / <YOUR_COMPANY> / HelloWorld / - "HelloWorld" är vad jag kommer att kalla den här modulen.

  • Den här katalogen behöver en config.xml så Magento känner igen den som en ny modul. Skapa en annan mapp med namnet etc Följt av en xml-fil som heter config.xml. Katalogen ska se ut som app/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml Detta är strukturen för xml-filen:

    <?xml version="1.0" encoding="UTF-8" ?>
    <config>
       <modules>
          <YOUR_COMPANY_HelloWorld>
             <version>0.0.1</version>
          </YOUR_COMPANY_HelloWorld>
       </modules>
    </config>
    
  • Därefter måste modulerna deklareras till Magento. Fortsätt till app/etc/modules . Skapa ett nytt XML-dokument och ge det valda namnen på dina taggar: YOUR_COMPANY_HelloWorld i mitt fall. Skriv i detta dokument:

    <?xml version="1.0" encoding="UTF-8"?>
    <config>
       <modules>
          <YOUR_COMPANY_HelloWorld>   
             <!-- Whether our module is active: true or false -->
             <active>true</active>
             <!-- Which code pool to use: core, community or local -->
             <codePool>local</codePool>
          </YOUR_COMPANY_HelloWorld>
       </modules>
    </config>
    
  • Återigen används konfigurations- och modultaggar för att förklara en ny modul till Magento. Aktivt är standardvärdet som du kan komma åt i Admin Panel under System > Configuration > Advanced . codePool berättar Magento vilken katalog du codePool titta på. local i vårt fall

  • Den här modulen har nu skapats, alltså modellen för vår MVC-struktur. Du bör kunna se din nya modul i Admin Panel under System > Configuration > Advanced . Men det gör inte någonting ännu! Du måste gå tillbaka till vår config.xml-fil och definiera XML-element.

  • Därefter med tutorialen; Vi kommer att använda några av dessa XML-element för att skapa klasser och manipulera alla sidor i framsidan av vår webbplats. Tillbaka till filen config.xml skriver du följande under taggen </modules> :

    <global>
       <!-- adding a new block definition -->
       <blocks>
           <!-- A unique short name for our block files -->
           <helloworld>
              <!-- the location of our modules block -->
              <class>YOUR_COMPANY_HelloWorld_Block</class>
           </helloworld>
       </blocks>
    </global>
    <!-- We are making changes to the frontend -->
    <frontend>
       <!-- We are making changes to the layout of the front end -->
       <layout>
          <!-- we are adding a new update file -->
          <updates>
             <!-- Creating the name of our update and linking it the module -->
             <helloworld module="YOUR_COMPANY_HelloWorld">
                 <!-- The name of the layout file we are adding -->
                 <file>helloworld.xml</file>
             </helloworld>
         </updates>
      </layout>
    </frontend>
    
  • Som ni ser ser vi ut hela tiden snarare än att manipulera kärnfiler. helloworld taggen är små bokstäver eftersom det kommer att peka på ett handtag, och för kontinuitet kommer vi att namnge det så nära som möjligt. Vi länkar sedan detta till modulen YOUR_COMPANY_HelloWorld .

  • Vi ändrar layouten. Därför måste vi skapa detta handtag i layoutkatalogen. fortsätt till app/design/frontend/base/default/layout . Vi sa till modulen att leta efter filen helloworld.xml . Därför måste vi skapa det i den här katalogen. Vad väntar du på. Gör det!! och fyll den med:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- All Layout files begin with this code -->
    <layout>
       <!-- this is the layout handle. Default is handled on all pages. We want this module to execute on all pages -->
       <default>
          <!-- This is the block we want to bolt onto the existing before_body_end block -->
          <reference name="before_body_end">
              <!-- We define our new block and template to be added to before_body_end -->
              <block name="helloworld_footer" template="helloworld/footer.phtml" type="helloworld/footer"/>
          </reference>
       </default>
    </layout>
    
  • Nu kan de av er som har en liten Magento-upplevelse eller har läst mer anmärkningsvärda Magento-tutorials kissa på att vi gör ändringar i bas / standard eftersom det är här Magento-kärnfiler finns. Men vi modifierar inga filer här, vi skapar nya och dessutom förbereder vi vårt filnamn med "helloworld", så det finns mycket liten chans att detta kommer i konflikt med andra moduler eller orsakar problem med att uppgradera Magento i framtida. Lyckliga dagar!

  • Eftersom vi vill påverka alla sidor använder vi standardtaggen och hänvisar den till before_body_end strukturblock. Detta kommer att agera åtgärdens roll och utlösa View-avsnittet i vår MVC-struktur.

  • Nu förstår vi att vi before_body_end blocket before_body_end . och länka det till vårt anpassade block. Detta kallas en referens och är en krok . Vi ansluter för närvarande inte till något som finns, därför måste vi skapa nödvändiga filer.

  • I helloworld.xml angav vi i mall en footer.phtml . Fortsätt till app/design/frontend/base/default/template och skapa en katalog helloworld .

  • Inuti den här katalogen skapar du footer.phtml filen och fyller i med HTML, den här handboken skriver helt enkelt detta för att visa några PHP-funktioner kopplade till vår PHTML-fil:

    <p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>
    
  • Vi måste nu skapa vårt eget blockobjekt för att koppla mallen med vår blockfunktion. Skapa katalogappen / koden / local / YOUR_COMPANY / HelloWorld / Block / och skapa filen Footer.php inuti detta. Detta hänvisades till i vår zeta_layout.xml i typen "helloworld / footer". Populera den här filen med:

    <?php
    class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template {
       public function getDate() {
          $date = date('Y-m-d');
          return urlencode($date);
       }
    }
    ?>
    
  • Detta är den funktionalitet som kommer att fylla vårt samtal getDate() vi ringde från vår .phtml fil. Vi utökar Mage_Core_Block_Template .

  • Den här funktionen är nu klar. Testa detta genom att gå till din hemsida där du ska se din modul i sidfoten på varje sida!



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow