SEO-Saurus - Vývoj webu v reálném čase
seo-saurus

Tvorba HD Shopu: Vlastní rozšíření elektronického obchodu pro TYPO3

V období dovolených často nezbývá čas na velké vedlejší projekty, protože rodina má přednost. Malá, cílená zlepšení však mohou být stále přínosná. Jednou z takových příležitostí je vytvoření vlastního rozšíření elektronického obchodu pro TYPO3: HD Shop.

Přestože systém TYPO3 již nabízí robustní řešení pro elektronické obchodování, vytvoření vlastního rozšíření je fantastický způsob, jak se naučit a přizpůsobit funkčnost konkrétním potřebám. Zde se dozvíte, jak začít s vývojem rozšiřitelného rozšíření elektronického obchodu vhodného pro různé varianty.

Plán

Než se pustíte do tvorby kódu, je nutné definovat cíle projektu. Naše rozšíření HD Shop by mělo:

  • být snadno rozšiřitelný pro budoucí úpravy.
  • Podporovat více variant produktů.
  • Začít v malém měřítku a růst v komplexnosti.

Krok 1: Nastavení základu rozšíření

Naše rozšíření pojmenujeme HD Shop, takže název složky bude hd_shop. Při použití instalace TYPO3 založené na nástroji Composer umístěte své vlastní rozšíření do adresáře, např. do adresáře Packages, v kořenovém adresáři projektu.

Protože se jedná o vlastní rozšíření, které není k dispozici v úložišti Packagist nebo TYPO3 Extension Repository (TER), musíte o místním úložišti informovat program Composer. Do kořenového souboru composer.json přidejte následující nastavení:

"repositories": [
{
"type": "path",
"url": "./Packages/*/"
}
],

Vytváření základních souborů

composer.json: Tento soubor umožňuje instalaci rozšíření.

{
"name": "hyperdigital/hd_shop",
"type": "typo3-cms-extension",
"description": "E-commerce extension for TYPO3",
"license": "GPL-2.0-or-later",
"require": {
"typo3/cms-core": "^13.0"
},
"autoload": {
"psr-4": {
"Hyperdigital\\HdShop\\": "Classes/"
}
},
"extra": {
"typo3/cms": {
"extension-key": "hd_shop"
}
}
}

ext_emconf.php: TYPO3 ho používá pro konfiguraci rozšíření.

<?php
$EM_CONF[$_EXTKEY] = [
'title' => 'HD Shop',
'description' => 'E-commerce extension for TYPO3',
'category' => 'plugin',
'author' => 'Martin Pribyl',
'author_email' => 'developer@hyperdigital.de',
'author_company' => 'Hyperdigital',
'state' => 'alpha',
'version' => '0.0.1',
'constraints' => [
'depends' => [
'typo3' => '13.0.0-13.4.99',
],
],
];

Po instalaci těchto souborů nainstalujte rozšíření spuštěním:

composer req hyperdigital/hd_shop @dev

Ověřte instalaci v backendu TYPO3 v modulu Rozšíření.

Krok 2: Konfigurace backendu pro produkty

TYPO3 používá pole konfigurace tabulek (Table Configuration Arrays, TCA) k definování backendových formulářů pro databázové tabulky. Začněte vytvořením souboru pro tabulku produktu:
Configuration/TCA/tx_hdshop_domain_model_product.php

Zde je zjednodušený příklad TCA pro produkty:

<?php
return [
'ctrl' => [
'title' => 'Product',
'label' => 'title',
'tstamp' => 'tstamp',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'searchFields' => 'title,slug',
],
'columns' => [
'title' => [
'label' => 'Title',
'config' => [
'type' => 'input',
'size' => 50,
'eval' => 'trim,required',
],
],
'slug' => [
'label' => 'Slug',
'config' => [
'type' => 'slug',
'generatorOptions' => [
'fields' => ['title'],
],
'eval' => 'uniqueInSite',
],
],
],
];

Po přidání TCA vymažte cache, aktualizujte schéma databáze a zkuste vytvořit záznam o produktu v backendu.

Krok 3: Nastavení frontendu

Registrace pluginu

Přidání nového pluginu do ext_localconf.php:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'HdShop',
'Product',
[
\Hyperdigital\HdShop\Controller\ProductController::class => 'list, detail'
]
);

Definice plugin jako obsahový prvek skrze Configuration/TCA/Overrides/tt_content.php:

(static function (): void {
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'HdShop',
'Product',
'HD Shop: Product listing and detail'
);
})();

Přidání Controlleru

Vytvořte Classes/Controller/ProductController.php pro základní logiku pluginu:

<?php
namespace Hyperdigital\HdShop\Controller;
class ProductController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{
public function listAction()
{
return $this->htmlResponse();
}
}

Fluid Templaty

Přidejte soubory pro budoucí šablony Resources/Private/Templates/Product/:

  • List.html pro seznam produktů.
  • Detail.html pro detail konkrétního produktu.

Na závěr spusťte:

composer dumpautoload
vendor/bin/typo3 cache:flush

Co bude dál?

V příštím díle se budeme věnovat načítání produktů z databáze a zobrazování podrobností ve frontendu. Zůstaňte naladěni!

Komentáře

Komentáře

Sledujte mě