Complete Domain-Driven Architecture migration: - Phase 1-4: Transport, ProductSet, Coupon, Shop, Search, Basket, ProductCustomField, Category, ProductAttribute, Promotion - Phase 5: Order (~562 lines) + Product (~952 lines) - ~20 Product methods migrated to ProductRepository - Apilo sync migrated to OrderAdminService - Production hotfixes: stale Redis cache (prices 0.00), unqualified Product:: refs in LayoutEngine, object->array template conversion - AttributeRepository::getAttributeValueById() Redis cache added Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
18 lines
1.1 KiB
PHP
18 lines
1.1 KiB
PHP
<? global $lang_id;?>
|
|
<div class="box-title"><?= ucfirst( \Shared\Helpers\Helpers::lang( 'polecane-produkty' ) );?></div>
|
|
<div class="content">
|
|
<? if ( is_array( $this -> products ) ): foreach ( $this -> products as $product_id ):?>
|
|
<?
|
|
$product = (new \Domain\Product\ProductRepository($GLOBALS['mdb']))->findCached( $product_id, $lang_id );
|
|
|
|
$product['languages'][$lang_id]['seo_link'] ? $url = '/' . $product['languages'][$lang_id]['seo_link'] : $url = '/p-' . $product['id'] . '-' . \Shared\Helpers\Helpers::seo( $product['languages'][$lang_id]['name'] );
|
|
|
|
if ( \Shared\Helpers\Helpers::get_session( 'current-lang' ) != ( new \Domain\Languages\LanguagesRepository( $GLOBALS['mdb'] ) )->defaultLanguage() and $url != '#' )
|
|
$url = '/' . \Shared\Helpers\Helpers::get_session( 'current-lang' ) . $url;
|
|
?>
|
|
<?= \Shared\Tpl\Tpl::view( 'shop-product/product-mini', [
|
|
'product' => $product,
|
|
'class' => 'col-12 col-sm-4 col-md-4 col-lg-3'
|
|
] );?>
|
|
<? endforeach; endif;?>
|
|
</div>
|