Warning: fread(): Length parameter must be greater than 0 in /home/marcolx/domains/clevercode.pl/public_html/wp-content/themes/clevercode/header.php on line 182

Clever blog_

Nasz pierwszy moduł i kontroler w Magento 2

MAGENTO 2 TRYB DEWELOPERSKI

Aby umieścić Magento w trybie deweloperskim, konieczne jest wywołanie poniższej komendy:

php bin/magento deploy:mode:set developer

Dlaczego tego potrzebujemy? Pokazuje nam to wszystkie błędy, blokuje przechowywanie plików statycznych w pamięci, odblokowuje automatyczną kompilacje kodu oraz wzmacnia debugowanie. Logi systemowe znajdują się w var/reports. Jeżeli skończyliśmy, możemy ustawić Magento w trybie produkcyjnym poprzez:

php bin/magento deploy:mode:set production

Jest on szybszy niż tryb deweloperski. Wyjątki nie są wyświetlane dla użytkowników, a pliki statyczne zostają pobrane z folderu pub/static

MAGENTO 2 BLOKOWANIE PAMIĘCI PODRĘCZNEJ

W celu oszczędzenia czasu, możemy zablokować generowanie pamięci cache poprzez przejście do:

Admin -> System -> Cache Management

Wybieramy wszystkie możliwości i ustawiamy opcję „zablokuj” („disable”). Jeżeli tego nie zrobimy, będziemy zmuszeni czyścić pamięć cache za każdym razem, kiedy coś zmodyfikujemy. W razie potrzeby pamięć podręczną można wyczyścić także przy użyciu:

php bin/magento cache:clean
php bin/magento cache:flush

 

KONFIGURACJA MODUŁU

W pierwszym kroku musimy utworzyć plik module.xml w app/code/CleverCode/HelloWorld z zawartością:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="CleverCode_HelloWorld" setup_version="1.0.0"/>
</config>

W atrybucie „name” widzimy przestrzeń nazw oraz nazwę modułu, które są zgodne ze strukturą folderów. Naszemu modułowi nadamy określenie HelloWorld. Zostanie on utworzony w wersji 1.0.0

W następnym kroku tworzymy plik registration.php  wapp/code/CleverCode/HelloWorld  z zawartością:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'CleverCode_HelloWorld',
    __DIR__
);

Określa on ścieżkę do folderu, w którym znajduje się nasz moduł. Wymagane jest powtórzenie tego kroku dla każdego nowego elementu. Po wykonaniu całego procesu moduł jest gotowy, jednak należy go odblokować. Status możemy sprawdzić poniższą komendą:

php bin/magento module:status

Jeżeli zobaczymy: List of disabled modules: CleverCode_HelloWorld będzie to sygnał, że wszystko jest w porządku. Aby odblokować moduł, należy wpisać:

php bin/magento module:enable CleverCode_HelloWorld

Inna możliwość polega na modyfikacji pliku: app/etc/config.php  i dodaniu ‚CleverCode_HelloWorld’ =>; 1,  jednak pierwsza opcja jest bardziej praktyczna.

Kolejno w celu zaktualizowania systemu wpisujemy:

php bin/magento setup:upgrade

Routing

Aby do naszego modułu dodać routing, tworzymy plik routes.xml  wapp/code/CleverCode/HelloWorld/etc/frontend  z poniższą zawartością:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
        <router id="standard">
        <route id="hello" frontName="hello">
            <module name="CleverCode_HelloWorld"/>
        </route>
    </router>
</config>

Po co nam routing? Atrybut o nazwie frontName będzie użyty w adresie URL. Za każdym razem podczas wykorzystywania akcji z naszego modułu, zostanie wywołany frontName

 

KONTROLER

TAby wyświetlić dane przy użyciu frontName, niezbędne jest utworzenie kontrolera. Na początku stwórzmy plik Index.php  w app/code/CleverCode/HelloWorld/Controller/World o treści:

<?php
namespace CleverCode\HelloWorld\Controller;
 
class Index extends \Magento\Framework\App\Action\Action
{
    public function __construct(
        \Magento\Framework\App\Action\Context $context)
    {
        return parent::__construct($context);
    }
     
    public function execute()
    {
        echo 'Hello World';
    } 
}

Umieszczamy go w folderze Controller modułu. Zawiera jedyną wywoływalną metodę execute()  W przeciwieństwie do wersji 1, w Magento 2 nie jest możliwe utworzenie większej ilości wywoływalnych akcji. Celem uruchomienia kontrolera należy wpisać:

http://your-website/hello/world

lub

http://your-website/hello/world/index

Co to oznacza? Dopasowujemy akcję kontrolera do routingu. Po wpisaniu odpowiedniego URL wywołamy metodę execute()   Wszystkie frontendowe kontrolery dziedziczą z klasy \Magento\Framework\App\Action\Action Posiada ona metodę dispatch, która sprawdza, czy żądanie jest wysłane, metodę redirect przekierowująca do określonego adresu URL oraz kilka innych użytecznych akcji. Jeżeli wyświetlają się błędy, należy wpisać:

php bin/magento setup:upgrade

 

 


Fatal error: Uncaught Error: Call to undefined function fb_like_button() in /home/marcolx/domains/clevercode.pl/public_html/wp-content/themes/clevercode/template-parts/content.php:25 Stack trace: #0 /home/marcolx/domains/clevercode.pl/public_html/wp-includes/template.php(690): require() #1 /home/marcolx/domains/clevercode.pl/public_html/wp-includes/template.php(647): load_template('/home/marcolx/d...', false) #2 /home/marcolx/domains/clevercode.pl/public_html/wp-includes/general-template.php(167): locate_template(Array, true, false) #3 /home/marcolx/domains/clevercode.pl/public_html/wp-content/themes/clevercode/single.php(5): get_template_part('template-parts/...', '') #4 /home/marcolx/domains/clevercode.pl/public_html/wp-includes/template-loader.php(74): include('/home/marcolx/d...') #5 /home/marcolx/domains/clevercode.pl/public_html/wp-blog-header.php(19): require_once('/home/marcolx/d...') #6 /home/marcolx/domains/clevercode.pl/public_html/index.php(17): require('/home/marcolx/d...') #7 {main} thrown in /home/marcolx/domains/clevercode.pl/public_html/wp-content/themes/clevercode/template-parts/content.php on line 25