hokod
(hokod)
06.Январь.2022 09:41:20
1
Предположим, у меня есть 3 изображения, размещённые по 3 ссылкам, и 3 подписи к этим изображениям. Как сделать пост-слайд, как на 4-м изображении (в этой теме)?
image1:
image2:
image3:
=================
image4:
Спасибо!
Добиться этого в списке тем невозможно, так как для каждой темы сериализуется только одно изображение.
Однако в рамках отдельной темы вы можете ознакомиться с этим: Slick Image Gallery
hokod
(hokod)
06.Январь.2022 10:59:06
3
Спасибо за вашу поддержку.
Как вы и сказали, это невозможно.
Так что, если я хочу просто создать слайд для контента (без изображений),
то как мне создать слайд для контента в публикации?
Вы можете встроить презентацию Google в качестве слайд-шоу в iframe:
Вам нужно разрешить этот источник для iframes в разделе разрешенные iframes:
После создания презентации перейдите в меню Файл -> Опубликовать в интернете и скопируйте ссылку в конце короткого мастера.
То же самое работает и с PowerPoint Sign in to your Microsoft account
Используйте онлайн-версию Office 365, откройте PowerPoint и, когда всё будет готово, перейдите в Файл -> Поделиться -> Встроить, чтобы получить ссылку для iframe.
hokod
(hokod)
06.Январь.2022 11:16:31
6
Я беспокоюсь, что это повлияет на SEO, потому что контент находится не в редакторе Discourse. Вместо этого контент находится в PowerPoint (Google или Microsoft).
Я думаю, что ожидать от Discourse полноценного инструмента для презентаций — это слишком много
Возможно, вы могли бы включить версии слайдов в формате Markdown в следующих сообщениях.
hokod
(hokod)
06.Январь.2022 11:21:14
8
Надеюсь, есть способ создать слайд для содержимого поста (Discourse).
jrgong
(jrgong)
23.Февраль.2026 15:21:56
9
Сейчас тоже изучаю варианты. Должно быть возможно реализовать это как компонент темы, верно?
Например, существуют библиотеки для преобразования Markdown в слайды, которые можно использовать:
Вот лучшие репозитории GitHub для этой задачи, ранжированные по простоте адаптации под компонент темы Discourse.
1. Remark.js (Настоятельно рекомендуется для Discourse)
GitHub: gnab/remark
Как это работает: Remark разработан специально для работы исключительно в браузере. Вы передаете ему строку Markdown (где слайды разделены ---), и он динамически генерирует необходимый HTML/CSS для презентации на лету.
Почему это подходит для Discourse: Поскольку не требуется никаких этапов сборки, вы можете легко загрузить скрипт remark.min.js через компонент вашей темы Discourse. Вы можете извлечь Markdown из сообщения пользователя и передать его непосредственно в движок Remark.
2. Reveal.js
GitHub: hakimel/reveal.js
Как это работает: Reveal.js — это мощное решение для веб-презентаций. Хотя это прежде всего фреймворк для HTML-презентаций, у него есть встроенный плагин для Markdown.
Почему это подходит для Discourse: Он чрезвычайно функционален (заметки докладчика, экспорт в PDF, анимации, математическая верстка). Он может работать на стороне клиента, но он значительно тяжелее, чем Remark.js. Вам потребуется загрузить основную библиотеку Reveal, плагин Markdown и тему CSS Reveal в ваш компонент Discourse.
3. Marp (Markdown Presentation Ecosystem)
GitHub: marp-team/marp
Как это работает: Marp — это современный стандарт для слайдов в Markdown, использующий концепцию «Директив» для обработки темизации CSS непосредственно внутри заголовка (frontmatter) Markdown.
Почему это подходит для Discourse: Marp сильно зависит от инструментов CLI и Node.js для рендеринга. Однако они предлагают Marpit (@marp-team/marpit) — базовый фреймворк, который может парсить Markdown и выдавать HTML/CSS. Реализация этого в Discourse потребует упаковки Marpit в клиентский JavaScript-файл с помощью инструмента вроде Webpack или Rollup перед загрузкой в качестве компонента темы.
Как реализовать это как компонент темы Discourse
Чтобы переделать один из этих инструментов (например, Remark.js) в компонент темы Discourse, вам следует использовать API плагинов Discourse для перехвата определенных блоков Markdown перед их отображением на странице.
Вот высокоуровневый план того, как вы можете это реализовать:
Определите триггер: Решите, как пользователи будут указывать Discourse на необходимость рендеринга слайдов. Отличный способ — использовать специальный язык для блоков кода, например ```slides или обертку Discourse BBCode вида [wrap=slides].
Загрузите библиотеку: В файле about.json вашего компонента темы укажите внешний скрипт для Remark.js или Reveal.js, чтобы он загружался при посещении пользователем форума.
Обработайте обработанный контент: Используйте JavaScript API Discourse (api.decorateCookedElement), чтобы искать ваши блоки-триггеры при рендеринге каждого сообщения.
Рендеринг: Когда API находит блок ```` ```slides ``, он скрывает блок кода по умолчанию, создает новый контейнер <div> и инициализирует библиотеку слайдов внутри этого контейнера, используя необработанный текст из блока кода.