Как отобразить другой 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:
Любые советы о том, как ее решить (надеюсь, не меняя все мои посты), очень приветствуются!
РЕДАКТИРОВАТЬ: Стандартный способ вложения в блог на YouTube создает тревожные сообщения в консоли браузера: