> For the complete documentation index, see [llms.txt](https://developers.weglot.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.weglot.com/craft-cms/use-cases/extending-weglot-with-events.md).

# Extending Weglot with events

Unlike the WordPress plugin, the Craft plugin does not expose a system of filters. Its extension points are two **Yii events** that let you add CSS selectors to Weglot's dynamic-content configuration from your own plugin or module.

| Event                                        | Purpose                                                |
| -------------------------------------------- | ------------------------------------------------------ |
| `Plugin::EVENT_REGISTER_DYNAMICS_SELECTORS`  | Register selectors for regions translated dynamically. |
| `Plugin::EVENT_REGISTER_WHITELIST_SELECTORS` | Register selectors added to Weglot's whitelist.        |

Both events pass a `RegisterSelectorsEvent` whose `selectors` array you can add to. They are fired only when **dynamic content** is enabled in the plugin settings.

### Example

Register a selector for a dynamically-rendered widget:

```php
use yii\base\Event;
use weglot\craftweglot\Plugin;
use weglot\craftweglot\events\RegisterSelectorsEvent;

Event::on(
    Plugin::class,
    Plugin::EVENT_REGISTER_DYNAMICS_SELECTORS,
    static function (RegisterSelectorsEvent $event): void {
        $event->selectors[] = ['value' => '.my-dynamic-widget'];
    }
);
```

Place this in your plugin or module's `init()` method so it runs on every request.

{% hint style="info" %}
Each selector is an array with a `value` key holding the CSS selector string. Add as many as you need to the `$event->selectors` array.
{% endhint %}
