Идея функции: параметризованные макросы (или «умная замена»)

Существует ли способ создать «макросы» на уровне всего сайта (или категории?), которые принимают параметры?

Например, ссылки на чаты Matrix проекта Fedora имеют вид https://matrix.to/#/#social:fedoraproject.org. Я хотел бы, чтобы пользователи могли писать что-то вроде {chat:social}, и это отображалось бы как ссылка с параметром «social», вставленным в нужное место.

Ключевой момент: если макрос когда-либо будет обновлён, все его экземпляры на сайте также должны обновиться. (Хотя допустимо, если это произойдёт «в конечном счёте», а не мгновенно, так как я не предполагаю использовать это для чего-то, что будет часто меняться.)

Я знаю, что существует функция «слежение за словами», но не вижу способа реализовать такую параметризованную замену.

3 лайка

Это можно реализовать в виде небольшого компонента темы, который подключается к методу decoratedCooked, как описано в руководстве для разработчиков тем Discourse по адресу Developing Discourse Themes & Theme Components

2 лайка

Не с параметрами, но попробуйте

Администрирование → Настроить → Следимые слова → Заменить

То, чего я действительно хочу избежать, — это необходимость заранее определять все возможные варианты. Например, если кто-то создаст новый чат для автоматизации дома, я не хочу, чтобы кто-то должен был добавлять его вручную… Я бы просто хотел, чтобы {chat:home-automation} генерировал ссылку [Fedora Chat: #home-automation](https://matrix.to/#/#home-automtaion:fedoraproject.org).

Обычно это решается с помощью oneboxing, например, вставьте URL на отдельной строке:

https://matrix.to/#/#home-automtaion:fedoraproject.org

Понятно, что вставлять такую довольно сложную ссылку немного неудобно.

Да. И на самом деле всё ещё хуже, потому что правильный URL — это https://matrix.to/#/#home-automation:fedoraproject.org?web-instance[element.io]=chat.fedoraproject.org, а Matrix в настоящее время нигде его не предоставляет в удобном виде.

К тому же, я бы хотел иметь возможность изменять его, например, если изменится доменное имя или их странные параметры, без необходимости возвращаться и обновлять все ссылки.

1 лайк