Dokuwiki 在页面中设置变量,然后在模版中判断变量

您的问题是关于如何将 DokuWiki 的特定页面设置为 landing page,并控制导航元素的显示。

是的,您可以在页面中设置特殊变量,然后在模板的 main.php 中检测这些变量来控制导航的显示。DokuWiki 提供了几种方法来实现这一点:

方法一:使用页面元数据

您可以在页面中添加特殊的元数据标记,然后在模板中检测这些元数据:

  1. 在您想要作为 landing page 的页面中添加元数据:
    ~~META:hide_navigation=true~~
  2. 在模板的 main.php 中,您可以检测这个元数据并据此控制导航的显示:
    
    <?php  
    global $ID, $INFO;  
    $meta = p_get_metadata($ID, '', METADATA_RENDER_USING_CACHE);  
    $hide_navigation = $meta['hide_navigation'] ?? false;  

if (!$hide_navigation) {
// 显示导航
tpl_include_page('sidebar', true, true);
// 或者其他导航元素
tpl_youarehere();
tpl_breadcrumbs();
}
?>


### 方法二:使用命名空间或页面 ID 判断

您也可以根据页面的 ID 或命名空间来决定是否显示导航:

<?php
global $ID;
// 检查是否是特定页面
if ($ID == 'landing' || $ID == 'start:landing') {
// 这是 landing page,不显示导航
} else {
// 显示导航
tpl_youarehere();
tpl_breadcrumbs();
}
?>


### 方法三:使用自定义模板变量

DokuWiki 的模板系统允许您在页面中设置变量,然后在模板中使用这些变量:

1. 在页面中添加一个特殊的语法标记(需要插件支持):

TEMPLATE_VAR:hide_navigation=true

2. 然后在模板中检测这个变量:

<?php
global $ID;
// 假设您有一个函数来获取模板变量
$template_vars = get_template_vars($ID);
if (!isset($template_vars['hide_navigation']) || $template_vars['hide_navigation'] !== 'true') {
// 显示导航
tpl_youarehere();
}
?>


### 实际实现示例

基于 DokuWiki 的代码,以下是一个更具体的实现方式:

1. 在您的 landing page 页面中添加:

NOTOC
META:hide_navigation=true

2. 在您的模板的 main.php 中修改导航部分:

<?php
global $ID, $INFO;
$meta = p_get_metadata($ID, '', METADATA_RENDER_USING_CACHE);
$hide_navigation = $meta['hide_navigation'] ?? false;

if (!$hide_navigation) {
// 显示面包屑导航
if ($conf['breadcrumbs']) {
echo '<div class="breadcrumbs">';
tpl_breadcrumbs();
echo '</div>';
}

// 显示"您在这里"导航  
if ($conf['youarehere']) {  
    echo '<div class="youarehere">';  
    tpl_youarehere();  
    echo '</div>';  
}  

// 显示侧边栏  
echo '<div class="sidebar">';  
tpl_include_page('sidebar', true, true);  
echo '</div>';  

}
?>



这样,当您访问设置了 hide_navigation=true 元数据的页面时,导航元素将不会显示,从而创建一个干净的 landing page。

## Notes

- DokuWiki 的模板系统非常灵活,您可以根据需要修改 main.php 和其他模板文件。
- 使用元数据是最直接的方法,因为 DokuWiki 已经内置了元数据处理功能。
- 如果您需要更复杂的控制,可能需要开发一个简单的插件。
- 请注意,隐藏导航可能会影响用户体验,确保您的 landing page 提供了足够的导航选项或返回主站的链接。
- 您也可以考虑为 landing page 创建一个完全独立的模板,这样可以有更大的自由度。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇