Files
prestashop/controllers/front/StoresController.php
2026-04-09 18:31:51 +02:00

97 lines
2.5 KiB
PHP

<?php
/**
* For the full copyright and license information, please view the
* docs/licenses/LICENSE.txt file that was distributed with this source code.
*/
use PrestaShop\PrestaShop\Adapter\Presenter\Store\StorePresenter;
class StoresControllerCore extends FrontController
{
/** @var string */
public $php_self = 'stores';
/** @var StorePresenter */
protected $storePresenter;
/**
* Initialize stores controller.
*
* @see FrontController::init()
*/
public function init(): void
{
// Initialize presenter, we will use it for all cases
$this->storePresenter = new StorePresenter(
$this->context->link,
$this->context->getTranslator()
);
parent::init();
}
/**
* Assign template vars related to page content.
*
* @see FrontController::initContent()
*/
public function initContent(): void
{
$distance_unit = Configuration::get('PS_DISTANCE_UNIT');
if (!in_array($distance_unit, ['km', 'mi'])) {
$distance_unit = 'km';
}
// Load stores and present them
$stores = $this->getTemplateVarStores();
// If no stores are configured, we hide this page
if (!empty($stores)) {
$this->context->smarty->assign([
'mediumSize' => Image::getSize(ImageType::getFormattedName('medium')),
'searchUrl' => $this->context->link->getPageLink('stores'),
'distance_unit' => $distance_unit,
'stores' => $stores,
]);
parent::initContent();
$this->setTemplate('cms/stores');
} else {
$this->redirect_after = '404';
$this->redirect();
}
}
public function getTemplateVarStores(): array
{
$stores = Store::getStores($this->context->language->id);
foreach ($stores as &$store) {
$store = $this->storePresenter->present(
$store,
$this->context->language
);
}
return $stores;
}
public function getBreadcrumbLinks(): array
{
$breadcrumb = parent::getBreadcrumbLinks();
$breadcrumb['links'][] = [
'title' => $this->trans('Our stores', [], 'Shop.Theme.Global'),
'url' => $this->context->link->getPageLink('stores'),
];
return $breadcrumb;
}
/**
* {@inheritdoc}
*/
public function getCanonicalURL(): string
{
return $this->context->link->getPageLink('stores');
}
}