Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Prestashop » Prestashop – tùy biến nội dung module cho trang hiện tại

Prestashop – tùy biến nội dung module cho trang hiện tại

Chủ Nhật, 08/02/2015 by Hoàng Quách

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Bạn có thể dễ dàng giới hạn hiển thị module hay tùy biến nội dung module cho trang hiện tại bằng cách thay đổi vị trí của nó trong Prestashop Admin. Tuy nhiên, nếu bạn muốn tự động sử lý động bằng code, mẹo nhỏ sau đây có thể áp dụng để tạo hook module mà cho phép giới hạn chỉ hiển thị cho trang cụ thể.
tùy biến nội dung module với từng page

Biến ngữ cảnh php_self

Mỗi trang trong Prestashop có tên xác định, nó xác định trong từng controller tương ứng. Nó chứa trong thuộc tính id được gán cho thẻ body của trang đó chính là biến template $page_name trong smarty. Tuy nhiên, nếu bạn cố gắng lấy tên page bởi biến này từ trong module, bạn có thể nhận lỗi cảnh báo vì biến đó chỉ tồn tại trong template smarty. Vậy có cách nào để bạn chỉ định sử dụng module cho page không? có trong module bạn gọi biến php_self sẽ thay thế cho biến $page_name.

$this->context->controller->php_self

Nó thực sự hữu ích nếu bạn chỉ muốn giới hạn page khi sử dụng module. Nào chúng ta hãy làm ví dụ đơn giản dưới đây.

Giới hạn hiển thị module cho page

Ví dụ, chúng ta chỉ muốn hiển thị ở phần trên của trang với module nếu page hiện tại là trang chủ. Chúng ta sử dụng blicksearch. Trong trường hợp này, chúng ta sẽ chỉ cần sửa file blocksearch.php, tìm phương thức hookTop:

public function hookTop($params)
{
    if (!$this->isCached('blocksearch-top.tpl', $this->getCacheId('blocksearch-top')))
    {
        $this->calculHookCommon($params);
        $this->smarty->assign('blocksearch_type', 'top');
    }
 
    return $this->display(__FILE__, 'blocksearch-top.tpl', $this->getCacheId('blocksearch-top'));
}

và thêm đoạn sau vào trước nội dung hàm:

if('index' != $this->context->controller->php_self)
    return false;

Code trên nói với module rằng, Chúng ta chỉ hiển thị nội dung của hàm hookTop nếu URL hiện tại là trang chủ.
Sử dụng điều này kiểm tra page sẽ giúp bạn hiển thị những nội dung khác nhau và làm những công việc khác trong cùng một hook tùy thuộc vào trang hiện tại bạn muốn sử lý.

Bằng cách nào? đầu tiên bạn cần xác định page sẽ thay đổi nội dung, sử dụng var_dump($this->context->controller->php_self) để lấy chính xác tên page. Sau đó sử dụng lệnh điều kiện rẽ nhánh và thêm các lệnh ở từng page bạn muốn.

if('index' == $this->context->controller->php_self)
    // Do something and display a template for the homepage
else if('category' == $this->context->controller->php_self)
    // Do something and display a template if we are in the category page
else // not in any of the 2 pages above
    return false: // don't display anything

Chúc bạn thành công!

Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dõi kênh chia sẻ kiến thức WordPress của Hoangweb trên Twitter và Facebook

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: Prestashop Tìm kiếm: hooks, prestashop module

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.