Tạo plugin đơn giản

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 7 tháng 4, 2025
  • Hiểu được cấu trúc cơ bản của một plugin EC-CUBE.
  • Tự tay tạo một plugin “Hello EC-CUBE” từ đầu.
  • Biết cách cài đặt, kích hoạt, gỡ bỏ plugin đúng quy trình.
  • Là nền tảng để phát triển các plugin nâng cao sau này.

Tạo plugin

1. Cấu trúc thư mục một plugin

Một plugin trong EC-CUBE thường gồm các thư mục và file sau:

/HelloPlugin/
├── Controller/
├── Entity/
├── Event/
├── Form/
├── Resource/
│   ├── config/
│   └── template/
├── ServiceProvider/HelloPluginServiceProvider.php
├── PluginManager.php
├── config.yml
├── PluginInstaller.php
└── Plugin.php

Giải thích:

  • Controller/: Chứa các controller cho plugin.
  • Resource/config/: Định nghĩa routing, service, event…
  • template/: Giao diện frontend/admin.
  • Plugin.php: Lớp chính của plugin (entry point).
  • PluginManager.php: Quản lý lifecycle (install, enable, disable…).
  • ServiceProvider/: Đăng ký service, event, form, repository...

2. Tạo plugin "Hello EC-CUBE" đơn giản

Bước 1: Tạo thư mục app/Plugin/HelloPlugin/

Bước 2: Tạo file Plugin.php

namespace Plugin\HelloPlugin;

use Eccube\Plugin\AbstractPluginManager;

class Plugin extends \Eccube\Plugin\AbstractPlugin
{
}

Bước 3: Tạo nội dung ở Resource/template/default/hello.twig

<div style="padding: 10px; background: #f3f3f3;">Xin chào người dùng!</div>

Bước 4: Tạo Controller để hiển thị template

namespace Plugin\HelloPlugin\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class HelloController extends AbstractController
{
    /**
     * @Route("/hello", name="hello_plugin")
     */
    public function index()
    {
        return $this->render('@HelloPlugin/default/hello.twig');
    }
}

Bước 5: Đăng ký routing ở Resource/config/routing.yml

hello_plugin:
    resource: "@HelloPlugin/Controller/"
    type: annotation

3. Cài plugin bằng zip hoặc thủ công

  • Đóng gói thư mục HelloPlugin thành .zip
  • Vào admin EC-CUBE → Quản lý plugin → Tải lên file zip → Cài đặt
  • Hoặc copy trực tiếp vào app/Plugin/ (rồi chạy bin/console plugin:install…)

4. Kích hoạt và quản lý plugin

  • Sau khi cài → Nhấn Kích hoạt
  • Plugin có thể tự tạo DB, thêm route, cấu hình layout…
  • Tùy chỉnh các trạng thái:
    • install()
    • enable()
    • disable()
    • uninstall()

5. Xử lý uninstall, enable/disable

Trong file PluginManager.php bạn có thể định nghĩa thêm:

public function install($config, $app)
{
    // logic khi cài đặt
}

public function enable($config, $app)
{
    // logic khi kích hoạt
}

public function disable($config, $app)
{
    // logic khi vô hiệu hóa
}

public function uninstall($config, $app)
{
    // logic khi gỡ bỏ
}

Kết luận

  • EC-CUBE hỗ trợ plugin rất linh hoạt và mạnh mẽ, giúp mở rộng tính năng mà không làm ảnh hưởng đến core.
  • Chỉ cần hiểu rõ cấu trúc plugin và cách đăng ký routing/template/service, bạn đã có thể tạo ra những tính năng rất mạnh mẽ.
  • Plugin chính là “trái tim” của việc phát triển EC-CUBE một cách chuyên nghiệp và quy mô.
Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ