Включить код th1 на вики-страницу Fossil

Я хотел бы иметь возможность включать код th1 на вики-страницу Fossil. В частности, я хочу, чтобы на определенной странице отображалась различная информация в зависимости от пользователя. Это легко сделать в верхнем или нижнем колонтитуле, но я не нашел способа вставить код th1 непосредственно в вики-документ.

Изменить:

Хак, который я нашел, заключается в том, чтобы сгенерировать Javascript в заголовке для генерации переменных с использованием th1, например:

<th1>
html "<script>var foo = \"$login\";</script>"
</th1>

Затем я могу вставить вызов Javascript непосредственно в файл Markdown, например:

<script>document.write(foo);</script

Поскольку это хак и требует создания этих переменных в заголовке каждой страницы, я бы предпочел использовать th1 непосредственно на самой вики-странице.


person user2225804    schedule 16.02.2017    source источник


Ответы (1)


Я не думаю, что это возможно по соображениям безопасности: если бы TH1 был включен для вики, любой, у кого есть права вики, смог бы выполнять код... Даже использование HTML в вики должно быть разрешено явно.

Ваш обходной путь (или хак) с использованием Javascript работает нормально; чтобы предотвратить включение этого Javascript на каждую страницу, вы можете использовать оператор TH1 enable_output, за которым следует 0, чтобы отключить вывод на страницу. Поместите это после условия if в название страницы, и все готово. Не забудьте снова включить вывод с помощью enable_output 1 после вашего кусочка Javascript!

Изменить: вот пример, который я использую, чтобы включить подсветку синтаксиса на странице /artifact. Вы бы заменили тег ссылки элементом сценария. Также обратите внимание, что я использую ne (не равно), чтобы исключить подсветку синтаксиса на каждой странице, кроме страницы артефакта.

<th1>
  if { "$current_page" ne "artifact" } {
    enable_output 0
  }
</th1>
    <link rel="stylesheet" href="$highlighterpath/styles/shCoreDefault.css" type="text/css" media="screen" />
<th1>
  enable_output 1
</th1>
person Martijn    schedule 17.02.2017