For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

Tipe
Deskripsi

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:

Metode
Dipicu ketika

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 contohpublic/plugin/HelloWorld/ dan public/plugin/TopLinks/ adalah referensi sederhana yang baik

  • Gunakan terjemahan — Selalu gunakan sistem lang/ untuk teks yang menghadap pengguna

  • Bersihkan 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?