Ở giao diện mặc định và một số giao diện khác của ecshop vẫn hay sử dụng tính năng chuyển menu cụ thể như sau: Ví dụ ta có menu 3 cấp (left menu): Dịch vụ --> Tối ưu hóa website --> Dịch vụ SEO. Ở trang chủ ta chỉ thấy left menu Dịch vụ và con của nó là menu Tối ưu hóa website, khi click vào menu Tối ưu hóa website ngay lập tức menu Dịch vụ SEO xuất hiện ở left menu và menu Dịch vụ không hiện cho đến khi ta trở về trang chủ. Tính năng này cũng hay tuy nhiên ở một số webiste điện máy hoặc website bán hàng trực tuyến quy mô lớn, với số lượng nhiều danh mục sản phẩm được phân ra nhiều cấp bậc thì họ hay dùng menu đa cấp (Mega Dropdown Menu). Lúc này menu đa cấp lại gặp rắc rối với tính năng chuyển menu. Sau đây là hướng dẫn hackmod cố định menu cho ecshop hay gọi là hủy bỏ tính năng chuyển menu cho ecshop. Cách 1: - Đối với menu sản phẩm ta chỉnh sửa file: includes/lib_goods.php Tìm đoạn code: - function get_categories_tree($cat_id = 0)
- {
- if ($cat_id > 0)
- {
- $sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cat_id'";
- $parent_id = $GLOBALS['db']->getOne($sql);
- }
- else
- {
- $parent_id = 0;
- }
Sao chép mã- Thay thế bằng đoạn code:
- function get_categories_tree($cat_id = 0)
- {
- $parent_id = 0;
-
Sao chép mã
- Đối với menu tin tức ta chỉnh sửa file: includes/lib_main.php Tìm đoạn code: - function article_categories_tree($cat_id = 0)
- {
- if ($cat_id > 0)
- {
- $sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('article_cat') . " WHERE cat_id = '$cat_id'";
- $parent_id = $GLOBALS['db']->getOne($sql);
- }
- else
- {
- $parent_id = 0;
- }
Sao chép mã
Thay thế bằng đoạn code: - function article_categories_tree($cat_id = 0)
- {
- $parent_id = 0;
Sao chép mã
Cách 2: Còn một cách khác đơn giản hơn nhưng cách này sẽ phát sinh lỗi nếu cập nhật các bản vá lỗi mới từ ecshop.com Mặc dù có lỗi nhưng mình thấy cũng có vài người dùng nên mình trình bày ở đây để mọi người tham khảo: Ta chỉnh sửa file: themes/nava/library/page_header.lbi (Chú ý: Bạn thay tên nava thành tên giao diện hiện tại của bạn nhé.) Thêm đoạn code bên dưới vào trên cùng của file page_header.lbi: - <?php
- $GLOBALS['smarty']->assign('categories',get_categories_tree());
- $GLOBALS['smarty']->assign('article_categories',article_categories_tree());
- ?>
Sao chép mã
Cảnh báo: Mặc định ecshop không có gọi hàm hiển thị menu chuyên mục tin tức ở một số trang như: trang chủ, trang danh mục sản phẩm, trang chi tiết sản phẩm. Vì vậy nếu bạn muốn hiển thị menu chuyên mục tin tức ra trang chủ thì ta chỉnh sửa file index.php trong thư mục chứ web (root). Thêm đoạn code này: - $smarty->assign('article_categories', article_categories_tree($article_id));
Sao chép mã
vào bên dưới đoạn code mà mặc định có sẵn là: - $smarty->assign('categories', get_categories_tree());
Sao chép mã
|