Tạo plugin đơn giản
- 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ạybin/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ô.

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.
Xem thêm

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