#186203 gửi bởi qkhanh8x
Ngày 23 Tháng 08 2017 , 03:27
Link ảnh tại:
http://sv1.upsieutoc.com/2017/08/23/cart-giohang.png

Yêu cầu mình muốn là:
- Hai block giỏ hàng xuất hiện được ở 2 chỗ khác nhau.
- Mỗi block có giao diện khác nhau:

+ 1 chỗ là đầy đủ các mục: số mặt hàng đã mua, số tiền cần thanh toán, điểm tích lũy, sản phẩm yêu thích, lịch sử giao dịch, xem chi tiết).
+ 1 chỗ là icon giỏ hàng có con số số mặt hàng và số tiền.

----------------------------

Bước đầu theo hướng dẫn cũa bạn Nhím Thủ Lĩnh:

Ta copy global.block_cart.php và đổi tên thành global.block_cart2.php
C:\xampp\htdocs\nukeviet\modules\shops\blocks\global.block_cart.php
C:\xampp\htdocs\nukeviet\modules\shops\blocks\global.block_cart2.php

Tìm và đổi: nv_cart_info thành nv_cart và cart_ thành carts_

Xong bước này thì ta đã có thể làm cho 2 block cart xuất hiện 2 chỗ khác nhau, nhưng 2 block này có giao diện hoàn toàn giống nhau vì mình thấy file loadcart.php gọi file giao diện block.cart.tpl:

C:\xampp\htdocs\nukeviet\modules\shops\funcs\loadcart.php
$xtpl = new XTemplate("block.cart.tpl", NV_ROOTDIR . "/themes/" . $module_info['template'] . "/modules/" . $module_file);

----------------------------

Ý mình muốn ở đây là làm sao cho:
- global.block_cart.php sẽ gọi giao diện trong block.cart.tpl (giao diện đầy đủ mặc định của module shop)
- global.block_cart2.php sẽ gọi giao diện trong block.cart2.tpl (giao diện mình chỉnh sửa có icon giỏ hàng - phần giao diện này mình làm được)

C:\xampp\htdocs\nukeviet\themes\default\modules\shops\block.cart.tpl
C:\xampp\htdocs\nukeviet\themes\default\modules\shops\block.cart2.tpl

Vậy ta phải làm thế nào? chỉnh sửa loadcart.php thế nào hay tạo mới một file khác?

Khẩn xin các bạn chỉ giúp mình. Rất rất cảm ơn các bạn.
Sửa lần cuối bởi qkhanh8x vào Ngày 23 Tháng 08 2017 , 03:30, với tổng số 3 lần sửa.
#186210 gửi bởi thuvp
Ngày 23 Tháng 08 2017 , 06:13
Bạn có thể viết thêm một file block.cart2.tpl có giao diện như ý muốn.
Viết thêm funtion loadcart2.php tương tự loadcart.php nhưng gọi đến file block.cart2.tpl chứ không phải block.cart.tpl.
tiếp đó trong file global.block_cart2.php đoạn
$("#cart_' . $module . '").load("' . NV_BASE_SITEURL . "index.php?" . NV_LANG_VARIABLE . "=" . NV_LANG_DATA . "&" . NV_NAME_VARIABLE . "=" . $module . "&" . NV_OP_VARIABLE . "=loadcart&coupons_check=1&coupons_code=" . $coupons_code . '");
Đổi thành
$("#cart_' . $module . '").load("' . NV_BASE_SITEURL . "index.php?" . NV_LANG_VARIABLE . "=" . NV_LANG_DATA . "&" . NV_NAME_VARIABLE . "=" . $module . "&" . NV_OP_VARIABLE . "=loadcart2&coupons_check=1&coupons_code=" . $coupons_code . '");
Chúc bạn thành công !
#186218 gửi bởi qkhanh8x
Ngày 23 Tháng 08 2017 , 19:03
thuvp đã viết Bạn có thể viết thêm một file block.cart2.tpl có giao diện như ý muốn.....

Khi mình làm đến bước thay loadcart&coupons_check thành loadcart2&coupons_check thì bị vỡ trang và block không chạy được.

Thanks thuvp.

Sửa lần cuối bởi qkhanh8x vào Ngày 27 Tháng 08 2017 , 03:37, với tổng số 1 lần sửa.
#186226 gửi bởi nambmtk1993
Ngày 24 Tháng 08 2017 , 06:02
Bạn thử tao tác các bước của thuvp xem sao.

Mình thấy có 1 đoạn phải ghi thêm ra là trong file php global.block_cart2.php. Bạn tìm dòng

$xtpl = new XTemplate("block.cart.tpl", NV_ROOTDIR . "/themes/" . $module_info['template'] . "/modules/" . $module_file);

Và sửa lại thành

$xtpl = new XTemplate("block.cart2.tpl", NV_ROOTDIR . "/themes/" . $module_info['template'] . "/modules/" . $module_file);

Để hệ thống hiểu bạn gọi 1 template hoàn toàn khác
#186232 gửi bởi qkhanh8x
Ngày 24 Tháng 08 2017 , 22:29
nambmtk1993 đã viết Bạn thử tao tác các bước của thuvp xem sao.

Cách này mình đã làm trước gần 1 tháng nay rồi mà không được. Cảm ơn bạn nambmtk1993

Sửa lần cuối bởi qkhanh8x vào Ngày 24 Tháng 08 2017 , 22:36, với tổng số 1 lần sửa.
#186250 gửi bởi ngocphan123
Ngày 25 Tháng 08 2017 , 06:17

Khi mình làm đến bước thay loadcart&coupons_check thành loadcart2&coupons_check thì bị vỡ trang và block không chạy được.


Bạn cần làm thêm bước này đó là:copy file C:\xampp\htdocs\nukeviet\modules\shops\funcs\loadcart.php thành file C:\xampp\htdocs\nukeviet\modules\shops\funcs\loadcart2.php trong này bạn sửa đoạn
$xtpl = new XTemplate("block.cart.tpl", NV_ROOTDIR . "/themes/" . $module_info['template'] . "/modules/" . $module_file); thành $xtpl = new XTemplate("block.cart2.tpl", NV_ROOTDIR . "/themes/" . $module_info['template'] . "/modules/" . $module_file);
#186252 gửi bởi qkhanh8x
Ngày 25 Tháng 08 2017 , 08:08
ngocphan123 đã viết
Bạn cần làm thêm bước này đó là:copy file C:\xampp\htdocs\nukeviet\modules\shops\funcs\loadcart.php thành file C:\xampp\htdocs\nukeviet\modules\shops\funcs\loadcart2.php trong này bạn sửa đoạn
$xtpl = new XTemplate("block.cart.tpl", NV_ROOTDIR . "/themes/" . $module_info['template'] . "/modules/" . $module_file); thành $xtpl = new XTemplate("block.cart2.tpl", NV_ROOTDIR . "/themes/" . $module_info['template'] . "/modules/" . $module_file);

Không thể nào được bạn à. Các bước này mình đã làm thử trước khi hỏi trên diễn đàn. ngocphan123 thử làm trên thực tế sẽ thấy bị lỗi ngay.

Code chưa chạy tới bước gọi giao diện block.cart2.tpl thì đã lỗi ở global.block_cart2.php rồi.

Lỗi không chạy được nằm ở chỗ: trong file global.block_cart2.php, nếu sửa loadcart&coupons_check thành loadcart2&coupons_checkvỡ trang.

Nguyên nhân không được: không biết làm sao để hệ thống nó chạy loadcart2.php. Và nếu như làm cho chạy được loadcart2.php thì vẫn xảy ra xung đột id giỏ hàng (khi ta mua sản phẩm, hệ thống không biết đưa vào giỏ hàng nào, khi đó 1 giỏ hàng có số mặt hàng đã mua số tiền, giỏ hàng còn lại là con số 0)...

Cảm ơn ngocphan123.

Sửa lần cuối bởi qkhanh8x vào Ngày 27 Tháng 08 2017 , 03:35, với tổng số 8 lần sửa.
#186295 gửi bởi qkhanh8x
Ngày 29 Tháng 08 2017 , 02:52
vuthao đã viết Bạn chia sẻ lại cách làm để các bạn khác nếu muốn có thể thục hiện nhé.

Mình chỉ làm đường vòng tạm thời bằng css thôi bạn vuthao ơi. Tuy không khoa học nhưng đơn giản dễ làm:

Bước 1: trong thư mục nukeviet\modules\shops\blocks\..

Copy global.block_cart.php và đổi tên thành global.block_minicart.php, sau đó:

Tìm và đổi: nv_cart_info thành nv_minicart

Tìm và đổi: cart_ thành minicarts_

Tìm và đổi đổi class="block_cart clearfix" thành class="block_minicart clearfix"


Bước 2: xác định ID của giỏ hàng: (cái này quan trọng nhất)

Giỏ hàng global.block_cart.php sẽ có id="cart_shops"

Giỏ hàng global.block_minicart.php sẽ có id="minicart_shops"


Bước 3: trong thư mục nukeviet\themes\default\modules\shops\..

Sửa block.cart.tpl: có thể chèn biểu tượng giỏ hàng bằng hình ảnh cụ thể hoặc bằng font Awesome. Thêm thẻ span vào mỗi phần text và number.


Bước 4: viết css cho từng giỏ hàng có id riêng: cái này tùy nhãn quan mỗi người, riêng mình thì:

Giỏ hàng có id="cart_shops" thì có các kiểu css bình thường, riêng biểu tượng giỏ hàng mình cho font-size=0 (nếu là font Awesome) hoặc width=0 (nếu là hình ảnh).

Giỏ hàng có id="minicart_shops" thì biểu tượng giỏ hàng có độ lớn nhất định, font-size của {LANG.cart_title}-{LANG.cart_product_title} mình đều cho bằng 0 trừ cái {num} là số mặt hàng. Sau cùng khống chế chiều cao của nó bằng thuộc tính width và overflow.

Bước 5: em ngồi nhìn mà lòng em sướng. :19:

-----
*** Bạn vuthao ơi. Hình như vuthao là tác giả của module shop này phải không? Mình có đưa ra một số ý tưởng cho phiên bản shop tiếp theo đó:

https://forum.nuke.vn/threads/Modul...-voi-cac-ma-nguon-shop-cua-the-gioi-neu.1049/


Rất cảm ơn tác giả module đã viết code phục vụ anh em cộng đồng. Hy vọng mã nguồn này càng ngày càng hoàn thiện hơn nữa để sánh tầm thế giới. Chúc quý bạn thành công trong công việc và cuộc sống.

Sửa lần cuối bởi qkhanh8x vào Ngày 29 Tháng 08 2017 , 03:00, với tổng số 3 lần sửa.