0

我正在尝试创建一个 DocFx 模板,使用它对小胡子的支持。

我希望能够基于项目根目录中的 toc.yml 文件在所有生成的 html 页面的导航栏中生成站点菜单。

我知道默认模板会这样做。但它显然是通过将 toc.yml 转换为独立的 html 文件来实现的,然后由概念性 html 文件中的 javascript 解析以加载菜单。

我希望能够直接在创建概念性 html 文件的 mustache 文件中执行此操作。

我创建了这个部分(toc.tmpl.partial),并在概念胡子文件的适当部分调用它:

{{!版权 (c) 微软。版权所有。在 MIT 许可下获得许可。有关完整的许可证信息,请参阅项目根目录中的 LICENSE 文件。}}

<div class="sidenav">
    this is sidenav!
    {{#items}}
        hello!
    {{/items}}
</div>

但是,不幸的是,没有生成 {{items}} 标记内的任何内容。

然而,如果我在 toc.tmpl 中使用相同的代码,一个带有适当数量的 hello! 的 html 文件。生产线。

因此,我缺少有关 DocFx 各个部分协同工作的基本知识。

这是我的简单概念文件生成器:

{{!include(/^styles/.*/)}}
{{!include(/^fonts/.*/)}}
{{!include(favicon.ico)}}
{{!include(logo.svg)}}
{{!include(search-stopwords.json)}}
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  {{>partials/head}}
  <body data-spy="scroll" data-target="#affix">
        {{>partials/navbar}}
        <div style="position: relative; margin-top: 5px;">
            <div class="toc-column" style="position: fixed;">
                    {{>partials/toc}}
            </div>
            <div style="position: fixed; left: 160px;" data-uid="{{uid}}">
                {{{rawTitle}}}
                {{{conceptual}}}
            </div>
        </div>
        {{^_disableFooter}}
        {{>partials/footer}}
        {{/_disableFooter}}
        {{>partials/scripts}}
  </body>
</html>
4

1 回答 1

0

总之:items是在toc的模型中,而不是在concept的模型中。你不会在概念中得到任何东西items。您可以尝试运行docfx --exportRawModel以查看模型是什么样的。

实际上,您需要使 TOC 的模型在所有其他文件中共享。你可以使用这里isShared提到的。将以下代码添加到您的:toc.tmpl.js

exports.getOptions = function (model) {
    return {
        isShared: true;
    };
}

更多信息可以在这里找到:http: //dotnet.github.io/docfx/tutorial/intro_template.html

于 2017-06-25T15:09:00.400 回答