Как отобразить другой HTML-документ вместо стандартного поста в блоге?

У меня есть блог, который я обновляю с помощью R Blogdown. У него есть тема Хьюго с конфигурацией YAML и передней частью. Я принимаю на Netlify. Я хотел бы создать пост, в котором после нажатия на ссылку для поста пользователь видит совершенно отдельный HTML-файл вместо заголовка поста. Например, я думал, что следующий фронт будет работать там, где я поместил нужный документ в "static / files"...

---
title: 'Example blog post'
author: Logit
date: '2018-02-21'
URL: ["/files/page_to_display_instead.html"]
---

Но моя желаемая страница не загружается. Вместо этого моя адресная строка пытается загрузить '/posts/2018-02-21-example-blog-post'

Я отмечаю, что включение следующего в тело моего поста делает именно то, что я хочу, и проверяет правильность моего относительного пути, имени файла и желаемой страницы...

Click [here](/files/page_to_display_instead.html) to see the right page.

Но это требует, чтобы пользователь сделал дополнительный щелчок, чтобы получить доступ к контенту, и не очень элегантно.

Аналогично, добавление следующего текста в тело вышеупомянутого поста приближается к работе...

![](/files/page_to_display_instead.html)

Но это решение сохраняет заголовок и тему блога и просто отображает мою нужную страницу внутри фрейма. Это выглядит некрасиво.

Должно быть простое решение для загрузки или перенаправления на нужную страницу вместо заголовка как такового. Неужели я неправильно понял использование переменной "URL" Хьюго? Должен ли я использовать другую переднюю переменную или синтаксис? Спасибо заранее за любые предложения.

РЕДАКТИРОВАТЬ: В дополнение к превосходному ответу Себастьяна Рошетта ниже, я обнаружил, что, поскольку я работаю в R Markdown, следующее также решает проблему:

```{r, include=FALSE}
shiny::includeHTML("/files/page_to_display_instead.html") 
```

2 ответа

Решение

Я думаю, что вы можете напрямую показать свой HTML-файл, если вы положите его прямо в папку блога. Имя html-файла будет использоваться как слаг. Однако, если ваша html-страница не содержит вашего шаблона, вы можете этого не захотеть.

Используйте iframe

Следовательно, вы можете добавить свой HTML-файл в качестве iframe:

---
title: 'Example blog post'
author: Logit
date: '2018-02-21'
---

<iframe width="100%" height="150" name="iframe" src="/files/page_to_display_instead.html"></iframe>

Автоматическое изменение размера iframe для соответствия содержанию

И если вы не хотите, чтобы ваши посетители видели его как iframe, вы можете использовать некоторый javascript для автоматического изменения размера iframe.
Вы должны добавить это в "голову" вашей темы:

<script>
  function resizeIframe(obj) {
    obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
  }
</script>

Тогда ваш пост будет:

---
title: 'Example blog post'
author: Logit
date: '2018-02-21'
---

<iframe width="100%" height="150" name="iframe" src="/files/page_to_display_instead.html" frameborder="0" scrolling="no" onload="resizeIframe(this)"></iframe>

Интересное предложение с iframes... у меня не работает при встраивании контента youtube в iframe:

https://blogs.nopcode.org/brainstorm/2016-06-10-the-right-to-repair-my-drone/

Останавливает рендеринг прямо в iframe код, здесь вы можете увидеть исходный Markdown, который работал с моей предыдущей установкой Jekyll до перехода на blogdown:

https://github.com/brainstorm/brainblog/blob/master/content/brainstorm/2016-06-10-the-right-to-repair-my-drone.md

Любые советы о том, как ее решить (надеюсь, не меняя все мои посты), очень приветствуются!

РЕДАКТИРОВАТЬ: Стандартный способ вложения в блог на YouTube создает тревожные сообщения в консоли браузера:

Ошибки Youtube BlogDown

Другие вопросы по тегам