add module settings service extension and shop configuration extension

This commit is contained in:
Daniel Seifert 2024-05-07 14:53:44 +02:00
parent 555557dcdd
commit 81ffc7b3d1
5 changed files with 118 additions and 3 deletions

View File

@ -6,12 +6,19 @@
additional extensions that can be used in the shop's Twig templates:
- method_exists - Checks whether the method of an object exists.
```
{% if method_exists(entity, 'getCreatedBy') %}
({{ entity.createdBy.name }})
{% endif %}
```
- getModuleSettingsService - get the module settings service
```
{{ getModuleSettingsService().getString('myModuleSetting', 'myModuleId') }}
```
- getShopConfiguration - get the shop configuration
```
{{ getShopConfiguration().getShopId() }}
```
## Table of content

View File

@ -6,12 +6,19 @@
zusätzliche Erweiterungen, die in den Twig-Templates des Shops verwendet werden können:
- method_exists - Prüft, ob die Methode eines Objekts existiert.
```
{% if method_exists(entity, 'getCreatedBy') %}
({{ entity.createdBy.name }})
{% endif %}
```
- getModuleSettingsService - liefert den Moduleinstellungsservice
```
{{ getModuleSettingsService().getString('myModuleSetting', 'myModuleId') }}
```
- getShopConfiguration - liefert die Shopkonfiguration
```
{{ getShopConfiguration().getShopId() }}
```
## Inhaltsverzeichnis
@ -27,7 +34,6 @@ Dieses Paket erfordert einen mit Composer installierten OXID eShop in einer in d
Öffnen Sie eine Kommandozeile und navigieren Sie zum Stammverzeichnis des Shops (Elternverzeichnis von source und vendor). Führen Sie den folgenden Befehl aus. Passen Sie die Pfadangaben an Ihre Installationsumgebung an.
```bash
php composer require d3/oxid-twig-extensions:^1.0
```

View File

@ -4,3 +4,9 @@ services:
D3\OxidTwigExtensions\MethodExistsExtension:
tags: ['twig.extension']
D3\OxidTwigExtensions\ModuleSettingsServiceExtension:
tags: ['twig.extension']
D3\OxidTwigExtensions\ShopConfigurationExtension:
tags: ['twig.extension']

View File

@ -0,0 +1,50 @@
<?php
/**
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\OxidTwigExtensions;
use OxidEsales\EshopCommunity\Internal\Container\ContainerFactory;
use OxidEsales\EshopCommunity\Internal\Framework\Module\Facade\ModuleSettingServiceInterface;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class ModuleSettingsServiceExtension extends AbstractExtension
{
/**
* @return TwigFunction[]
*/
public function getFunctions(): array
{
return [
new TwigFunction(
'getModuleSettingsService',
[$this, 'getModuleSettingsService'],
['is_safe' => ['html']]
)
];
}
/**
* @return ModuleSettingServiceInterface
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function getModuleSettingsService(): ModuleSettingServiceInterface
{
return ContainerFactory::getInstance()->getContainer()->get(ModuleSettingServiceInterface::class);
}
}

View File

@ -0,0 +1,46 @@
<?php
/**
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\OxidTwigExtensions;
use OxidEsales\Eshop\Core\Registry;
use OxidEsales\EshopCommunity\Core\Config;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class ShopConfigurationExtension extends AbstractExtension
{
/**
* @return TwigFunction[]
*/
public function getFunctions(): array
{
return [
new TwigFunction(
'getShopConfiguration',
[$this, 'getShopConfiguration'],
['is_safe' => ['html']]
)
];
}
/**
* @return Config
*/
public function getShopConfiguration(): Config
{
return Registry::getConfig();
}
}