feat(slider): add slider feature
This commit is contained in:
@@ -93,6 +93,7 @@ class ControllerExtensionModuleTgshop extends Controller
|
||||
$hasConfig = $this->config->get('module_tgshop_app_name') !== null;
|
||||
|
||||
if ($hasConfig) {
|
||||
$this->cleanUpConfigs();
|
||||
$this->updateConfigFromDefaults();
|
||||
$this->cleanUpOldAssets();
|
||||
$this->injectVueJs();
|
||||
@@ -109,9 +110,9 @@ class ControllerExtensionModuleTgshop extends Controller
|
||||
|
||||
if (($this->request->server['REQUEST_METHOD'] === 'POST') && $this->validate()) {
|
||||
$postData = $this->request->post;
|
||||
$postData['module_tgshop_mainpage_banners'] = [];
|
||||
if (! empty($_POST['module_tgshop_mainpage_banners'])) {
|
||||
$postData['module_tgshop_mainpage_banners'] = $_POST['module_tgshop_mainpage_banners'];
|
||||
$postData['module_tgshop_mainpage_slider'] = [];
|
||||
if (! empty($_POST['module_tgshop_mainpage_slider'])) {
|
||||
$postData['module_tgshop_mainpage_slider'] = $_POST['module_tgshop_mainpage_slider'];
|
||||
}
|
||||
$this->model_setting_setting->editSetting('module_tgshop', $postData);
|
||||
|
||||
@@ -136,11 +137,11 @@ class ControllerExtensionModuleTgshop extends Controller
|
||||
|
||||
$data['settings'] = $this->getSettingsConfig();
|
||||
|
||||
$data['banners'] = [];
|
||||
$banners = $this->config->get('module_tgshop_mainpage_banners');
|
||||
$data['mainpage_slider'] = [];
|
||||
$banners = $this->config->get('module_tgshop_mainpage_slider');
|
||||
if ($banners) {
|
||||
$banners = html_entity_decode($banners);
|
||||
$data['banners'] = $banners;
|
||||
$data['mainpage_slider'] = $banners;
|
||||
}
|
||||
|
||||
foreach ($data['settings'] as $configs) {
|
||||
@@ -364,11 +365,20 @@ TEXT,
|
||||
'module_tgshop_enable_store' => 1,
|
||||
'module_tgshop_feature_coupons' => 0,
|
||||
'module_tgshop_feature_vouchers' => 0,
|
||||
'module_tgshop_home_banner_id' => null,
|
||||
'module_tgshop_text_no_more_products' => 'Это всё по текущему запросу. Попробуйте уточнить фильтры или поиск.',
|
||||
'module_tgshop_text_empty_cart' => 'Ваша корзина пуста',
|
||||
'module_tgshop_text_order_created_success' => 'Ваш заказ успешно оформлен и будет обработан в ближайшее время.',
|
||||
'module_tgshop_mainpage_banners' => '[]',
|
||||
'module_tgshop_mainpage_slider' => json_encode([
|
||||
'is_enabled' => false,
|
||||
'effect' => 'slide',
|
||||
'pagination' => true,
|
||||
'scrollbar' => false,
|
||||
'free_mode' => false,
|
||||
'space_between' => 30,
|
||||
'autoplay' => false,
|
||||
'loop' => false,
|
||||
'slides' => [],
|
||||
], JSON_THROW_ON_ERROR),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -384,11 +394,6 @@ TEXT,
|
||||
'user_token=' . $this->session->data['user_token'],
|
||||
true
|
||||
);
|
||||
$ocBannersLink = $this->url->link(
|
||||
'design/banner',
|
||||
'user_token=' . $this->session->data['user_token'],
|
||||
true
|
||||
);
|
||||
|
||||
return [
|
||||
'general' => [
|
||||
@@ -698,28 +703,22 @@ HTML,
|
||||
}
|
||||
}
|
||||
|
||||
private function getBannersList(): array
|
||||
{
|
||||
$this->load->model('design/banner');
|
||||
$allBanners = $this->model_design_banner->getBanners();
|
||||
$map = [];
|
||||
foreach ($allBanners as $item) {
|
||||
$map[(int) $item['banner_id']] = $item['name'];
|
||||
}
|
||||
|
||||
return [null => 'Не показывать'] + $map;
|
||||
}
|
||||
|
||||
private function injectVueJs(): void
|
||||
{
|
||||
$appDir = rtrim(DIR_APPLICATION, '/');
|
||||
if (file_exists("$appDir/view/javascript/telecart/telecart.js")) {
|
||||
$this->document->addScript('view/javascript/telecart/telecart.js');
|
||||
$this->document->addStyle('view/javascript/telecart/telecart.css');
|
||||
$hash = md5(file_get_contents($appDir . '/view/javascript/telecart/manifest.json'));
|
||||
$this->document->addScript('view/javascript/telecart/telecart.js?v=' . $hash);
|
||||
$this->document->addStyle('view/javascript/telecart/telecart.css?v=' . $hash);
|
||||
} elseif (file_exists("$appDir/view/integration.js")) {
|
||||
$this->document->addScript('view/integration.js');
|
||||
} else {
|
||||
throw new RuntimeException('Unable to load Vuejs frontend.');
|
||||
}
|
||||
}
|
||||
|
||||
private function cleanUpConfigs(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
@@ -452,7 +452,7 @@
|
||||
<script>
|
||||
window.TeleCart = {
|
||||
user_token: '{{ user_token }}',
|
||||
banners: '{{ banners }}',
|
||||
mainpage_slider: '{{ mainpage_slider }}',
|
||||
};
|
||||
</script>
|
||||
<div id="app">App Loading...</div>
|
||||
|
||||
Reference in New Issue
Block a user