У меня есть документ уценки R, в котором используются flexdashboard иshiny. Документ/приложение имеет несколько страниц, и я хотел бы иметь возможность связать заголовок панели навигации, определенный в заголовке YAML, с первой страницей, чтобы у пользователя возникало ощущение перенаправления на «Домашнюю» страницу при нажатии на заголовок.
Я приложил очень простой пример файла .Rmd, который использует flexdashboard и имеет 2 страницы. В этом примере пользователь должен быть направлен на Page 1
при нажатии на App title
.
---
title: "App title"
output: flexdashboard::flex_dashboard
runtime: shiny
---
Page 1
====================================================================================
This is some random text on page 1...
Page 2
========================================================================================
And some even more random text on page 2....
Я видел примеры, когда страницы связаны во внешнем файле .yml (bookdown) или где логотип/заголовок связаны с внешним сайтом, но я не смог найти примеры того, как связать заголовок панели навигации с разделом/страницей внутри сам документ уценки R.
Чтобы добавить сложности: в моем приложении документ используется для нескольких приложений, поэтому заголовок считывается через переменную среды:
---
title: '`r Sys.getenv("TIER")`'
Буду признателен за любую оказанную помощь!
Чтобы сделать заголовок кликабельным как ссылку, вы можете использовать дополнительный JavaScript.
<script>
document.querySelector(".navbar-header").innerHTML =
"<a href=\"path_to_destination\" class=\"navbar-brand navbar-inverse\">
My Dashboard
</a>";
</script>
querySelector
ищет элемент заголовка и заменяет его пользовательским. Здесь я заменяю его ссылкой на path_to_destination
. Вы можете увидеть имена классов, которые добавляются к ссылке, чтобы отформатировать ссылку в соответствии с предопределенными классами. В противном случае ссылка не отформатирована как заголовок.
Как вы сказали, заголовок основан на некоторой переменной, которую мы можем вставить в код R, как и в любое другое место в документе:
<script>
document.querySelector(".navbar-header").innerHTML =
"<a href=\".\" class=\"navbar-brand navbar-inverse\">`r 2+2`</a>";
</script>
спасибо за помощь и извинения за поздний ответ; Я был в отпуске. Я не знаю, когда у меня будет время изучить ваш ответ, но пока я приму его и свяжусь с вами по этому поводу, когда / если это необходимо.