This commit is contained in:
2025-11-24 13:08:40 +07:00
15 changed files with 132 additions and 51 deletions

View File

@@ -24,18 +24,35 @@ function _get_menu_list() {
$item_menu = include_once __DIR__."/menu_item/".$item.".php";
// skip not enabled
if(!$item_menu['enable']) continue;
if(!$item_menu['enable']) {
continue;
}
// skip not enabled children
$item_menu_children_enabled = array_filter($item_menu['menu'], function ($menu_child) { return $menu_child['enable'];});
if(!sizeof($item_menu_children_enabled)) continue;
// reset menu for $item_menu
$item_menu['menu'] = $item_menu_children_enabled;
$menu_list[$item] = $item_menu;
if(!sizeof($item_menu_children_enabled)) {
continue;
}
$menu_list[] = [
'id' => $item,
'name' => $item_menu['name'],
'icon_class' => $item_menu['icon_class'] ?? '',
'url' => $item_menu['url'],
'menu' => array_map(function ($menu_child) {
return [
//'module' => $menu_child['module'],
//'view' => $menu_child['view'],
'id' => $menu_child['id'],
'name' => $menu_child['name'],
'icon_class' => $menu_child['icon_class'] ?? '',
'url' => $menu_child['url'],
];
}, $item_menu_children_enabled),
];
}
//debug_var($menu_list);
return $menu_list;
}

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Nội dung",
"icon_class" => 'iconify lucide--users tw-tsa',
"url" => "",
"menu" => array(
@@ -12,6 +13,7 @@ return array(
'view' => 'home',
'id' => 'article/home',
'name' => 'Tin bài',
"icon_class" => '',
'url' => '/admin/article',
),
@@ -21,6 +23,7 @@ return array(
'view' => 'home',
'id' => 'media/home',
'name' => 'Thư viện file Media',
"icon_class" => '',
'url' => '/admin/media',
),
@@ -30,6 +33,7 @@ return array(
'view' => 'home',
'id' => 'page/home',
'name' => 'Nội dung cố định',
"icon_class" => '',
'url' => '/admin/page',
),
@@ -39,6 +43,7 @@ return array(
'view' => 'home',
'id' => 'album/home',
'name' => 'Thư viện ảnh',
"icon_class" => '',
'url' => '/admin/album',
),
@@ -48,6 +53,7 @@ return array(
'view' => 'home',
'id' => 'video/home',
'name' => 'Video',
"icon_class" => '',
'url' => '/admin/video',
),
),

View File

@@ -2,8 +2,8 @@
return array(
'enable' => true ,
"name" => "Khách hàng",
"icon_class" => '',
"url" => "",
"menu" => array(
array(
@@ -12,6 +12,7 @@ return array(
'view' => 'home',
'id' => 'customer/home',
'name' => 'Danh sách khách hàng',
"icon_class" => '',
'url' => '/admin/customer',
),
@@ -21,6 +22,7 @@ return array(
'view' => 'customer-group',
'id' => 'customer/customer-group',
'name' => 'Nhóm khách hàng',
"icon_class" => '',
'url' => '/admin/customer/customer-group',
),*/
@@ -30,6 +32,7 @@ return array(
'view' => 'customer-contact',
'id' => 'customer/customer-contact',
'name' => 'Khách hàng liên hệ',
"icon_class" => '',
'url' => '/admin/customer/customer-contact',
),
@@ -39,6 +42,7 @@ return array(
'view' => 'comment',
'id' => 'customer/comment',
'name' => 'Tổng hợp trao đổi',
"icon_class" => '',
'url' => '/admin/customer/comment',
),
@@ -48,6 +52,7 @@ return array(
'view' => 'review',
'id' => 'customer/review',
'name' => 'Tổng hợp Đánh giá',
"icon_class" => '',
'url' => '/admin/customer/review',
),
@@ -57,6 +62,7 @@ return array(
'view' => 'customer-review',
'id' => 'customer/customer-review',
'name' => 'Khách hàng góp ý',
"icon_class" => '',
'url' => '/admin/customer/customer-review',
),
@@ -66,6 +72,7 @@ return array(
'view' => 'customer-newsletter',
'id' => 'customer/customer-newsletter',
'name' => 'Khách hàng nhận bản tin',
"icon_class" => '',
'url' => '/admin/customer/customer-newsletter',
),

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Đại lý",
"icon_class" => 'iconify lucide--handshake tw-tsa',
"url" => "",
"menu" => array(
0 => array(
@@ -11,6 +12,7 @@ return array(
'view' => 'home',
'id' => 'distributor/home',
'name' => 'Danh sách',
"icon_class" => '',
'url' => '/admin/distributor',
),
),

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Tuyển dụng",
"icon_class" => 'iconify lucide--megaphone tw-tsa',
"url" => "",
"menu" => array(
array(

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Marketing",
"icon_class" => 'iconify lucide--newspaper tw-tsa',
"url" => "",
"menu" => array(
array(
@@ -11,6 +12,7 @@ return array(
'view' => 'promotion',
'id' => 'marketing/promotion',
'name' => 'Khuyến mại theo sản phẩm',
"icon_class" => '',
'url' => '/admin/marketing/promotion',
),
@@ -20,6 +22,7 @@ return array(
'view' => 'coupon',
'id' => 'marketing/coupon',
'name' => 'Phiếu giảm giá - Voucher',
"icon_class" => '',
'url' => '/admin/marketing/coupon',
),
@@ -29,6 +32,7 @@ return array(
'view' => 'home',
'id' => 'banner/home',
'name' => 'Danh sách banner',
"icon_class" => '',
'url' => '/admin/banner',
),
@@ -38,6 +42,7 @@ return array(
'view' => 'store-design',
'id' => 'system/store-design',
'name' => 'Banner pop-up',
"icon_class" => '',
'url' => '/admin/system/store-design?section=popup',
),
@@ -47,6 +52,7 @@ return array(
'view' => 'poster-upload',
'id' => 'marketing/poster-upload',
'name' => 'Poster',
"icon_class" => '',
'url' => '/admin/marketing/poster-upload',
),
@@ -56,6 +62,7 @@ return array(
'view' => 'store-design',
'id' => 'system/store-design',
'name' => 'Hình nền website',
"icon_class" => '',
'url' => '/admin/system/store-design?section=background',
),*/
@@ -65,6 +72,7 @@ return array(
'view' => 'home',
'id' => 'email/home',
'name' => 'Email',
"icon_class" => '',
'url' => '/admin/email',
),*/
@@ -74,6 +82,7 @@ return array(
'view' => 'meta-list',
'id' => 'url/meta-list',
'name' => 'Sửa thông tin URL',
"icon_class" => '',
'url' => '/admin/url/meta-list',
),
@@ -83,6 +92,7 @@ return array(
'view' => 'url-seo',
'id' => 'url/url-seo',
'name' => 'Link SEO',
"icon_class" => '',
'url' => '/admin/url/url-seo',
),
@@ -92,6 +102,7 @@ return array(
'view' => 'feed',
'id' => 'marketing/feed',
'name' => 'Facebook/Google Feed',
"icon_class" => '',
'url' => '/admin/marketing/feed',
),
@@ -101,6 +112,7 @@ return array(
'view' => 'product-offer',
'id' => 'marketing/product-offer',
'name' => 'Cài biểu tượng giảm giá',
"icon_class" => '',
'url' => '/admin/marketing/product-offer',
),
@@ -119,6 +131,7 @@ return array(
'view' => 'program',
'id' => 'marketing/program',
'name' => 'Chương trình khuyến mại',
"icon_class" => '',
'url' => '/admin/marketing/program',
),
@@ -128,6 +141,7 @@ return array(
'view' => 'home',
'id' => 'deal/home',
'name' => 'Deal/giờ vàng',
"icon_class" => '',
'url' => '/admin/deal',
),
@@ -137,6 +151,7 @@ return array(
'view' => 'combo-deal',
'id' => 'marketing/combo-deal',
'name' => 'Bán Combo',
"icon_class" => '',
'url' => '/admin/marketing/combo-deal',
),
@@ -146,6 +161,7 @@ return array(
'view' => 'conditional-promotion',
'id' => 'marketing/conditional-promotion',
'name' => 'Khuyến mại BuildPC',
"icon_class" => '',
'url' => '/admin/marketing/conditional-promotion',
),
@@ -155,6 +171,7 @@ return array(
'view' => 'live-support-per-category',
'id' => 'marketing/live-support-per-category',
'name' => 'Hỗ trợ theo từng danh mục',
"icon_class" => '',
'url' => '/admin/marketing/live-support-per-category',
),

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Bán hàng",
"icon_class" => "iconify lucide--store tw-tsa",
"url" => "",
"menu" => array(
array(
@@ -11,6 +12,7 @@ return array(
'view' => 'home',
'id' => 'order/home',
'name' => 'Danh sách đơn hàng',
"icon_class" => '',
'url' => '/admin/order', // &list=new
),
@@ -20,6 +22,7 @@ return array(
'view' => 'bargain',
'id' => 'order/bargain',
'name' => 'Mặc cả giá',
"icon_class" => '',
'url' => '/admin/order/bargain',
),
@@ -29,16 +32,17 @@ return array(
'view' => 'wait-order',
'id' => 'order/wait-order',
'name' => 'Chờ mua sản phẩm',
"icon_class" => '',
'url' => '/admin/order/wait-order',
),
array(
'enable' => true ,
'module' => 'order',
'view' => 'paygate',
'id' => 'order/paygate',
'name' => 'Thanh toán qua cổng dịch vụ',
"icon_class" => '',
'url' => '/admin/order/paygate',
),
@@ -48,6 +52,7 @@ return array(
'view' => 'price-quote',
'id' => 'order/price-quote',
'name' => 'Lập báo giá',
"icon_class" => '',
'url' => '/admin/order/price-quote',
),
),

View File

@@ -2,8 +2,8 @@
return array(
'enable' => true ,
"name" => "Xây dựng máy tính",
"icon_class" => 'iconify lucide--monitor-smartphone tw-tsa',
"url" => "",
"menu" => array(
array(

View File

@@ -5,6 +5,7 @@
return array(
'enable' => true ,
"name" => "Sản phẩm",
"icon_class" => 'iconify lucide--package tw-tsa',
"url" => "",
"menu" => array(
array(
@@ -13,6 +14,7 @@ return array(
'view' => 'home',
'id' => 'product/home',
'name' => 'Sản phẩm',
"icon_class" => '',
'url' => '/admin/product',
),
@@ -49,6 +51,7 @@ return array(
'view' => 'category',
'id' => 'product/category',
'name' => 'Danh mục',
"icon_class" => '',
'url' => '/admin/product/category',
),
array(
@@ -57,6 +60,7 @@ return array(
'view' => 'home',
'id' => 'brand/home',
'name' => 'Thương hiệu',
"icon_class" => '',
'url' => '/admin/product/brand',
),
array(
@@ -65,6 +69,7 @@ return array(
'view' => 'attribute',
'id' => 'product/attribute',
'name' => 'Thuộc tính ',
"icon_class" => '',
'url' => '/admin/product/attribute',
),
array(
@@ -73,6 +78,7 @@ return array(
'view' => 'collection',
'id' => 'product/collection',
'name' => 'Bộ sưu tập',
"icon_class" => '',
'url' => '/admin/product/collection',
),
@@ -82,6 +88,7 @@ return array(
'view' => 'product-wait-list',
'id' => 'product/product-wait-list',
'name' => 'Chờ mua sản phẩm',
"icon_class" => '',
'url' => '/admin/product/product-wait-list',
),
@@ -91,6 +98,7 @@ return array(
'view' => 'home',
'id' => 'addon/home',
'name' => 'SP/Dịch vụ mua kèm',
"icon_class" => '',
'url' => '/admin/product/addon',
),
@@ -100,6 +108,7 @@ return array(
'view' => 'home',
'id' => 'config_group/home',
'name' => 'Nhóm cấu hình',
"icon_class" => '',
'url' => '/admin/product/config_group',
),
@@ -109,6 +118,7 @@ return array(
'view' => 'home',
'id' => 'supplier/home',
'name' => 'Nhà cung cấp',
"icon_class" => '',
'url' => '/admin/supplier',
),*/
@@ -118,6 +128,7 @@ return array(
'view' => 'set-promotion-price',
'id' => 'product/set-promotion-price',
'name' => 'Cài đặt giá khuyến mại',
"icon_class" => '',
'url' => '/admin/product/set-promotion-price',
),*/
@@ -127,6 +138,7 @@ return array(
'view' => 'product-per-customer-group',
'id' => 'product/product-per-customer-group',
'name' => 'Giá theo nhóm khách hàng',
"icon_class" => '',
'url' => '/admin/product/product-per-customer-group',
),*/
@@ -136,6 +148,7 @@ return array(
'view' => 'set',
'id' => 'product/set',
'name' => 'Set sản phẩm',
"icon_class" => '',
'url' => '/admin/product/set',
),
@@ -145,6 +158,7 @@ return array(
'view' => 'spec-group',
'id' => 'product/spec-group',
'name' => 'Nhóm thông số kỹ thuật',
"icon_class" => '',
'url' => '/admin/product/spec-group',
),
@@ -154,6 +168,7 @@ return array(
'view' => 'list-competitor',
'id' => 'product/list-competitor',
'name' => 'So sánh giá đối thủ',
"icon_class" => '',
'url' => '/admin/product/list-competitor',
),
),

View File

@@ -4,6 +4,7 @@ return array(
'enable' => true ,
"name" => "Thống kê",
"icon_class" => 'iconify lucide--pie-chart tw-tsa',
"url" => "",
"menu" => array(
array(
@@ -12,6 +13,7 @@ return array(
'view' => 'visitor',
'id' => 'report/visitor',
'name' => 'Thống kê truy cập',
"icon_class" => '',
'url' => '/admin/report/visitor',
),
@@ -21,6 +23,7 @@ return array(
'view' => 'customer',
'id' => 'report/customer',
'name' => 'Thống kê khách hàng',
"icon_class" => '',
'url' => '/admin/report/customer',
),
@@ -30,6 +33,7 @@ return array(
'view' => 'order',
'id' => 'report/order',
'name' => 'Thống kê đơn hàng',
"icon_class" => '',
'url' => '/admin/report/order',
),
@@ -39,6 +43,7 @@ return array(
'view' => 'product-buy',
'id' => 'report/product-buy',
'name' => 'Sản phẩm mua nhiều',
"icon_class" => '',
'url' => '/admin/report/product-buy',
),
@@ -48,6 +53,7 @@ return array(
'view' => 'product-visit',
'id' => 'report/product-visit',
'name' => 'Sản phẩm xem nhiều',
"icon_class" => '',
'url' => '/admin/report/product-visit',
),
@@ -57,6 +63,7 @@ return array(
'view' => 'referer',
'id' => 'report/referer',
'name' => 'Web giới thiệu',
"icon_class" => '',
'url' => '/admin/report/referer',
),
@@ -66,6 +73,7 @@ return array(
'view' => 'search',
'id' => 'report/search',
'name' => 'Từ khóa tìm kiếm',
"icon_class" => '',
'url' => '/admin/report/search',
),
@@ -75,6 +83,7 @@ return array(
'view' => 'error-page',
'id' => '',
'name' => 'Lỗi website',
"icon_class" => '',
'url' => '/admin/report/error-page',
),
),

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Hệ thống",
"icon_class" => 'iconify hugeicons--settings-04 tw-tsa',
"url" => "",
"menu" => array(
array(
@@ -11,6 +12,7 @@ return array(
'view' => 'settings',
'id' => 'system/settings',
'name' => 'Cài đặt chung',
"icon_class" => '',
'url' => '/admin/system/settings',
),
@@ -20,6 +22,7 @@ return array(
'view' => 'home',
'id' => 'template/home',
'name' => 'Sửa file template',
"icon_class" => '',
'url' => '/admin/template',
),
@@ -29,6 +32,7 @@ return array(
'view' => 'home',
'id' => '',
'name' => 'Quản trị viên',
"icon_class" => '',
'url' => '/admin/admin',
),
@@ -38,6 +42,7 @@ return array(
'view' => 'store-address',
'id' => '',
'name' => 'Địa chỉ cửa hàng',
"icon_class" => '',
'url' => '/admin/system/store-address',
),
@@ -47,6 +52,7 @@ return array(
'view' => 'domain',
'id' => 'system/domain',
'name' => 'Cài đặt tên miền',
"icon_class" => '',
'url' => '/admin/system/domain',
),
@@ -56,6 +62,7 @@ return array(
'view' => 'ban-ip',
'id' => '',
'name' => 'Chặn IP truy cập website',
"icon_class" => '',
'url' => '/admin/system/ban-ip',
),
@@ -65,6 +72,7 @@ return array(
'view' => 'change-info',
'id' => '',
'name' => 'Thông tin website',
"icon_class" => '',
'url' => '/admin/system/change-info',
),
@@ -76,6 +84,7 @@ return array(
'view' => 'province-list',
'id' => '',
'name' => 'Cài đặt tỉnh thành',
"icon_class" => '',
'url' => '/admin/system/province-list',
),
@@ -85,6 +94,7 @@ return array(
'view' => 'home',
'id' => '',
'name' => 'Tình trạng đơn hàng',
"icon_class" => '',
'url' => '/admin/system/order-status',
),
@@ -94,6 +104,7 @@ return array(
'view' => 'home',
'id' => '',
'name' => 'Hỗ trợ bán hàng',
"icon_class" => '',
'url' => '/admin/online_support',
),
@@ -103,6 +114,7 @@ return array(
'view' => 'country',
'id' => '',
'name' => 'Quốc gia',
"icon_class" => '',
'url' => '/admin/system/country',
),
@@ -112,6 +124,7 @@ return array(
'view' => 'home',
'id' => '',
'name' => 'Cài đặt thông báo ngoài',
"icon_class" => '',
'url' => '/admin/report_out',
),
@@ -121,6 +134,7 @@ return array(
'view' => 'home',
'id' => '',
'name' => 'Cài đặt phí vận chuyển',
"icon_class" => '',
'url' => '/admin/shipping2',
),
@@ -130,6 +144,7 @@ return array(
'view' => 'redirect',
'id' => 'url/redirect',
'name' => 'Url Redirect',
"icon_class" => '',
'url' => '/admin/url/redirect',
),
@@ -139,17 +154,10 @@ return array(
'view' => 'home',
'id' => 'tool/home',
'name' => 'Công cụ',
"icon_class" => '',
'url' => '/admin/tool',
),
array(
'enable' => true ,
'module' => 'civi',
'view' => 'home',
'id' => '',
'name' => 'Civi Affiliate',
'url' => '/admin/civi',
),
array(
'enable' => true ,
@@ -157,6 +165,7 @@ return array(
'view' => 'home',
'id' => 'menu/home',
'name' => 'Quản trị menu',
"icon_class" => '',
'url' => '/admin/menu',
),
@@ -166,6 +175,7 @@ return array(
'view' => 'keyword-suggest',
'id' => 'system/keyword-suggest',
'name' => 'Từ khóa gợi ý',
"icon_class" => '',
'url' => '/admin/system/keyword-suggest',
),
@@ -175,6 +185,7 @@ return array(
'view' => 'home',
'id' => 'tag/home',
'name' => 'Quản trị Tag',
"icon_class" => '',
'url' => '/admin/tag',
),
),

View File

@@ -4,6 +4,7 @@ return array(
'enable' => true ,
"name" => "Bảo hành sản phẩm",
"icon_class" => '',
"url" => "",
"menu" => array(
/*0 => array(

View File

@@ -1,8 +1,8 @@
{
"require": {
"liquid/liquid": "1.4.32",
"ext-json": "*",
"ext-mysqli": "*",
"ext-zip": "*"
"ext-zip": "*",
"liquid/liquid": "^1.4"
}
}

View File

@@ -467,46 +467,29 @@
</div>
<div class="flex items-center justify-between px-3 gap-3 relative">
<ul class="menu menu-horizontal">
{% for _category in global.main_menu %}
{% assign _type = _category[0] %}
{% assign _menuArray = _category[1].menu %}
{% if _category[1].enable == 1 %}
<li>
<div class="flex items-center gap-3">
<span class=""></span>
<a href="/"><span class="grow">Home</span></a>
</div>
</li>
{% for _menu_item in global.main_menu %}
{% assign _menu_children = _menu_item.menu %}
<li
class="{%- for _item in _menuArray -%}{%- if _item.url == global.url -%} active {%- endif -%} {%- endfor -%}">
<div class="flex items-center gap-3">
{% if _type == 'order' %}
<span class="iconify lucide--store tw-tsa"></span>
{% elsif _type == 'product' %}
<span class="iconify lucide--package tw-tsa"></span>
{% elsif _type == 'customer' %}
<span class="iconify lucide--users tw-tsa"></span>
{% elsif _type == 'article' %}
<span class="iconify lucide--newspaper tw-tsa"></span>
{% elsif _type == 'marketing' %}
<span class="iconify lucide--megaphone tw-tsa"></span>
{% elsif _type == 'job' %}
<span class="iconify lucide--briefcase tw-tsa"></span>
{% elsif _type == 'pcbuilder' %}
<span class="iconify lucide--monitor-smartphone tw-tsa"></span>
{% elsif _type == 'payinstall' %}
<span class="iconify lucide--handshake tw-tsa"></span>
{% elsif _type == 'distributor' %}
<span class="iconify lucide--store tw-tsa"></span>
{% elsif _type == 'report' %}
<span class="iconify lucide--pie-chart tw-tsa"></span>
{% elsif _type == 'system' %}
<span class="iconify hugeicons--settings-04 tw-tsa"></span>
{% if _menu_item.icon_class != '' %}
<span class="{{_menu_item.icon_class}}"></span>
{% endif %}
<span class="grow">{{ _category[1].name }}</span>
<span class="grow">{{ _menu_item.name }}</span>
</div>
<ul class="p-2 submenu">
{% for _item in _menuArray %}
{% for _item in _menu_children %}
<li class="{% if _item.url == global.url %} active {% endif %}"><a href="{{ _item.url }}"
style="white-space: nowrap">{{ _item.name }}</a></li>
{% endfor %}
</ul>
</li>
{% endif %}
{% endfor %}
</ul>

View File

@@ -36,6 +36,12 @@
<div id="layout-content">
{{ page_content }}
</div>
<footer class="footer sm:footer-horizontal footer-center bg-base-300 text-base-content p-4">
<aside>
<p>Copyright © 2025 - HuraSoft</p>
</aside>
</footer>
</div>
</div>
@@ -43,6 +49,7 @@
{% include javascript/index %}