feat: add texts configuration

This commit is contained in:
2025-10-27 11:13:04 +03:00
parent 515b82302b
commit 34dfe90286
8 changed files with 44 additions and 7 deletions

View File

@@ -3,7 +3,6 @@
use Bastion\ApplicationFactory;
use Openguru\OpenCartFramework\Logger\OpenCartLogAdapter;
use Openguru\OpenCartFramework\OpenCart\Decorators\OcRegistryDecorator;
use Openguru\OpenCartFramework\OpenCart\OcConfigDecorator;
$sysLibPath = rtrim(DIR_SYSTEM, '/') . '/library/oc_telegram_shop';
$basePath = rtrim(DIR_APPLICATION, '/') . '/..';
@@ -353,6 +352,9 @@ TEXT,
'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' => 'Ваш заказ успешно оформлен и будет обработан в ближайшее время.',
];
}
@@ -472,7 +474,6 @@ HTML,
'help' => 'Для проверки интеграции через кнопку "Проверить" в интерфейсе Яндекс Метрики, необходимо сначала включить "Режим разработчика" на вкладке "Общие".'
],
],
'shop' => [
'module_tgshop_enable_store' => [
'type' => 'select',
@@ -545,7 +546,6 @@ HTML,
HTML,
],
],
'orders' => [
'module_tgshop_order_default_status_id' => [
'type' => 'select',
@@ -560,6 +560,26 @@ HTML,
'help' => 'Группа покупателей, которая будет назначена для заказов, оформленных через Telegram-магазин.',
],
],
'texts' => [
'module_tgshop_text_no_more_products' => [
'type' => 'text',
'placeholder' => 'Это всё по текущему запросу. Попробуйте уточнить фильтры или поиск.',
'help' => 'Текст, отображаемый в конце списка, когда больше нет доступных товаров. Покупатель дошел до конца списка.',
],
'module_tgshop_text_empty_cart' => [
'type' => 'text',
'placeholder' => 'Ваша корзина пуста',
'help' => 'Текст, отображаемый на странице просмотра корзины, если в ней нет товаров.',
],
'module_tgshop_text_order_created_success' => [
'type' => 'text',
'placeholder' => 'Ваш заказ успешно оформлен и будет обработан в ближайшее время.',
'help' => 'Текст, отображаемый при успешном создании заказа.',
],
],
];
}

View File

@@ -11,6 +11,7 @@ $_['tab_telegram'] = 'Telegram';
$_['tab_statistics'] = 'Статистика';
$_['tab_shop'] = 'Магазин';
$_['tab_orders'] = 'Заказы';
$_['tab_texts'] = 'Тексты';
$_['lbl_module_tgshop_status'] = 'Статус';
$_['lbl_module_tgshop_app_name'] = 'Название приложения';
@@ -34,6 +35,9 @@ $_['lbl_module_tgshop_feature_coupons'] = 'Промокоды';
$_['lbl_module_tgshop_feature_vouchers'] = 'Подарочные сертификаты';
$_['lbl_module_tgshop_home_banner_id'] = 'Баннер на главной';
$_['lbl_module_tgshop_debug'] = 'Режим разработчика';
$_['lbl_module_tgshop_text_no_more_products'] = 'Текст в конце списка товаров';
$_['lbl_module_tgshop_text_empty_cart'] = 'Текст пустой корзины';
$_['lbl_module_tgshop_text_order_created_success'] = 'Текст для успешного заказа';
// Entry
$_['entry_status'] = 'Статус';

View File

@@ -95,6 +95,11 @@ class ControllerExtensionTgshopHandle extends Controller
FILTER_VALIDATE_BOOLEAN
),
'home_banner_id' => $this->config->get('module_tgshop_home_banner_id'),
'texts' => [
'no_more_products' => $this->config->get('module_tgshop_text_no_more_products'),
'empty_cart' => $this->config->get('module_tgshop_text_empty_cart'),
'order_created_success' => $this->config->get('module_tgshop_text_order_created_success'),
],
]);
$app->bind(OcModelCatalogProductAdapter::class, function () {

View File

@@ -57,6 +57,7 @@ class SettingsHandler
'feature_coupons' => $this->settings->get('feature_coupons') ?? false,
'feature_vouchers' => $this->settings->get('feature_vouchers') ?? false,
'currency_code' => $this->settings->get('oc_default_currency', 'RUB'),
'texts' => $this->settings->get('texts'),
]);
}

View File

@@ -31,7 +31,7 @@
</div>
<div v-else-if="hasMore === false" class="text-xs text-center mt-4 pt-4 mb-2 border-t">
{{ settings.noMoreProductsMessage }}
{{ settings.texts.no_more_products }}
</div>
</template>

View File

@@ -23,7 +23,11 @@ export const useSettingsStore = defineStore('settings', {
'--product_list_title_max_lines': 2,
}
},
noMoreProductsMessage: '🔚 Это всё по текущему запросу. Попробуйте уточнить фильтры или поиск.',
texts: {
no_more_products: 'Нет товаров',
empty_cart: 'Корзина пуста',
order_created_success: 'Заказ успешно оформлен.',
},
}),
actions: {
@@ -46,6 +50,7 @@ export const useSettingsStore = defineStore('settings', {
this.feature_coupons = settings.feature_coupons;
this.feature_vouchers = settings.feature_vouchers;
this.currency_code = settings.currency_code;
this.texts = settings.texts;
}
}
});

View File

@@ -125,7 +125,7 @@
class="text-center rounded-2xl"
>
<div class="text-5xl mb-4">🛒</div>
<p class="text-lg mb-3">Ваша корзина пуста</p>
<p class="text-lg mb-3">{{ settings.texts.empty_cart }}</p>
<RouterLink class="btn btn-primary" to="/">Начать покупки</RouterLink>
</div>
</div>

View File

@@ -8,7 +8,7 @@
</div>
<p class="text-2xl font-bold mb-3">Спасибо за заказ!</p>
<p class="text-center mb-4">Ваш заказ успешно оформлен и будет обработан в ближайшее время.</p>
<p class="text-center mb-4">{{ settings.texts.order_created_success }}</p>
<ul v-if="checkout.order" class="list w-full bg-base-200 mb-4">
<li class="list-row flex justify-between">
@@ -41,9 +41,11 @@ import {useCheckoutStore} from "@/stores/CheckoutStore.js";
import {onMounted} from "vue";
import {useYaMetrikaStore} from "@/stores/yaMetrikaStore.js";
import {useRoute} from "vue-router";
import {useSettingsStore} from "@/stores/SettingsStore.js";
const checkout = useCheckoutStore();
const yaMetrika = useYaMetrikaStore();
const settings = useSettingsStore();
const route = useRoute();
onMounted(() => {