Membuat Plugin
Panduan ini akan memandu Anda dalam membuat plugin dasar untuk Chamilo. Untuk detail tambahan, lihat halaman wiki pengembangan plugin.
Langkah 1: Membuat Direktori Plugin
Buat direktori di public/plugin/. Nama direktori harus sesuai dengan pengenal plugin Anda:
public/plugin/MyPlugin/Langkah 2: Mendefinisikan Kelas Plugin
Buat file src/MyPluginPlugin.php. Kelas ini memperluas Plugin dan mengikuti pola singleton:
<?php
class MyPluginPlugin extends Plugin
{
protected function __construct()
{
$settings = [
'tool_enable' => 'boolean',
'api_key' => 'text',
];
parent::__construct('1.0', 'Your Name', $settings);
}
public static function create(): static
{
static $instance = null;
return $instance ??= new static();
}
}Tipe Pengaturan yang Tersedia
boolean
Kotak centang aktif/nonaktif
text
Input teks satu baris
select
Dropdown (sediakan array options)
wysiwyg
Editor teks kaya
html
Bidang HTML mentah
checkbox
Kotak centang
user
Pemilih pengguna
Untuk pengaturan select:
Mengakses pengaturan saat runtime:
Langkah 3: Membuat plugin.php
File plugin.php di root plugin adalah wajib. File ini harus menetapkan $plugin_info:
Langkah 4: Membuat Skrip Instalasi dan Uninstall
install.php:
uninstall.php:
Implementasikan pembuatan/penghapusan skema aktual di dalam kelas menggunakan SchemaTool dari Doctrine.
Langkah 5: Menambahkan Terjemahan
Buat file bahasa di lang/ menggunakan kode lokal (misalnya, en_US.php, fr_FR.php, es_ES.php). File cadangan adalah en_US.php.
Akses terjemahan melalui $plugin->get_lang('key').
Langkah 6: Menyisipkan Konten melalui Wilayah Tampilan
Plugin dapat menyisipkan HTML ke dalam 18 wilayah yang telah ditentukan sebelumnya di frontend Vue. Override metode renderRegion() di kelas Anda:
Wilayah yang tersedia meliputi: content_bottom, content_top, course_tool_plugin, footer_center, footer_left, footer_right, header_center, header_left, header_main, header_right, login_bottom, login_top, main_bottom, main_top, menu_administrator, menu_bottom, menu_top, pre_footer.
Langkah 7: Bereaksi terhadap Peristiwa Platform (Opsional)
Plugin dapat bereaksi terhadap peristiwa platform menggunakan subscriber event Symfony. Buat file yang berakhiran EventSubscriber.php di dalam src/EventSubscriber/ — file ini akan terdaftar secara otomatis melalui PluginEventSubscriberPass.
Lihat src/CoreBundle/Event/Events.php untuk daftar lengkap peristiwa yang tersedia (pengguna, kursus, sesi, LP, latihan, portofolio, autentikasi, dan lainnya).
Langkah 8: Kait Siklus Hidup
Ganti metode-metode ini di kelas plugin Anda untuk merespons tindakan platform:
install()
Plugin diaktifkan
uninstall()
Plugin dihapus
performActionsAfterConfigure()
Admin menyimpan formulir konfigurasi
course_settings_updated(array $values)
Pengaturan tingkat kursus berubah
validateCourseSetting(string $variable)
Pengaturan kursus disimpan (kembalikan false untuk menolak)
doWhenDeletingUser(int $userId)
Seorang pengguna dihapus
doWhenDeletingCourse(int $courseId)
Sebuah kursus dihapus
doWhenDeletingSession(int $sessionId)
Sebuah sesi dihapus
Langkah 9: Aktivasi
Masuk sebagai administrator, navigasikan ke Kelola Plugin, temukan plugin Anda, dan klik Aktifkan.
Tips
Ikuti plugin yang sudah ada sebagai contoh —
public/plugin/HelloWorld/danpublic/plugin/TopLinks/adalah referensi sederhana yang baikGunakan terjemahan — Selalu gunakan sistem
lang/untuk teks yang menghadap penggunaBersihkan saat uninstall — Hapus tabel basis data dan pengaturan dalam skrip uninstall
Periksa status aktif — Dalam pelanggan acara, selalu panggil
$this->plugin->isEnabled()sebelum menjalankan logika
Terakhir diperbarui
Apakah ini membantu?