Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Path DocPad';s文档元数据?_Path_Metadata_Docpad - Fatal编程技术网

Path DocPad';s文档元数据?

Path DocPad';s文档元数据?,path,metadata,docpad,Path,Metadata,Docpad,DocPad文档元数据中所有这些路径之间的区别是什么 每个文档都有一组元数据,其中包含许多不同类型的路径和文件名,下面是一个示例列表: fullPath: '/Users/kizu/Projects/docpad-test/src/documents/pages/page2_en/index.html.md', relativePath: 'pages/page2_en/index.html.md', basename: 'index', outBasename: 'index', filena

DocPad文档元数据中所有这些路径之间的区别是什么

每个文档都有一组元数据,其中包含许多不同类型的路径和文件名,下面是一个示例列表:

fullPath: '/Users/kizu/Projects/docpad-test/src/documents/pages/page2_en/index.html.md',
relativePath: 'pages/page2_en/index.html.md',
basename: 'index',
outBasename: 'index',
filename: 'index.html.md',
fullDirPath: '/Users/kizu/Projects/docpad-test/src/documents/pages/page2_en',
outPath: '/Users/kizu/Projects/docpad-test/out/en/pages/page2/index.html',
outDirPath: '/Users/kizu/Projects/docpad-test/out/pages/page2_en',
outFilename: 'index.html',
relativeOutPath: 'en/pages/page2/index.html',
relativeDirPath: 'pages/page2_en',
relativeOutDirPath: 'en/pages/page2_en',
relativeBase: 'pages/page2_en/index',
relativeOutBase: 'pages/page2_en/index',
name: 'index.html',
slug: 'pages-page2-en-index',
url: '/en/pages/page2/index.html',
urls: [ '/en/pages/page2/index.html' ],
我只知道其中两个元数据的用途:

  • outPath
    设置文件系统中的输出路径,因此在
    renderBefore
    事件之前更改它将更改输出路径和文件名

  • url
    是站点根目录的绝对url,它主要用于链接到其他文档

  • 但所有其他路径和名称的用途是什么?是否有使用它们的插件,或者DocPad的代码特性依赖于这些插件


    这个问题的上下文与以下问题的答案类似:我想重写文档的输出路径和文件名,因此我需要知道需要更改哪些元数据。现在我只更改了
    输出路径
    url
    ,但这是否足够?或者,也许有一种方法可以使用一种神奇的方法来更改输出路径,这样它就可以自动将所有这些路径更改为正确的新路径,所以我根本不需要为此费心了?

    我认为大多数路径都是相对于
    根路径的Docpad.coffee文件配置的路径(其中Docpad.coffee文件是),
    outPath
    (生成的网站所在地)、
    srcPath
    (网站源文件所在地)、
    documentsPath
    (要呈现的文件所在地)和
    filepath
    (不需要呈现的网站资产等)。看

    Docpad使用存储各种路径,因此它不需要在每次需要对文件执行某些操作时重新计算这些路径-从这里渲染文件并在那里输出

    好消息是,此元数据的计算取决于Docpad将文件加载到其数据库(然后重新生成网站)时文件的保存位置

    另一个好消息是
    documentsPath
    是一个数组,因此您可以在多个位置保存要渲染和输出的文档

    但我认为你的问题的答案是,你不需要更改元数据-它取决于文件保存的位置。这有意义吗

    编辑

    只是想了个办法来测试一下。在documents文件夹下创建两个名为“loc1”和“loc2”的文件夹。在“loc1”中放置一个包含以下内容的“index.html.eco”文件

    ---
    layout: 'default'
    title: 'Home'
    ---
    
    <h3><%-@document.title%></h3>
    <ul>
        <% for key, val of @document: %>
        <li>
            <span><%-key%> = <%-val%></span>
        </li>
        <% end %>
    </ul>
    
    这里的想法是根据帖子的URL将文件写入不同的位置。因此,保存的文件将具有相应的元数据。如果我们以保存不同语言文件为例,我们可以在这里使用逻辑将多个文件保存在不同的位置,或者根据每种语言保存文件名

    现在,如果您想根据某些标准提供不同的文档,可以执行以下操作:

                    server.get 'someurllogic', (req,res,next) ->
                        #do something with the url logic                    
                        document = docpad.getCollection('documents')
                            .findOne({relativeOutPath: resultOfUrlLogic+'index.html'});
                            docpad.serveDocument({
                                document: document,
                                req: req,
                                res: res,
                                next: next,
                                statusCode: 200
                        });
    
    以语言为例,您可能有一些逻辑来确定要提供的语言(可能是用户代理),并提供要匹配的适当文档

    另一种可能性是,您可以在保存文档时将元数据添加到文档中,这将帮助您在server.get处理程序中选择适当的文档。这可能与在标记文件中包含元数据的方式相同,如下所示:

       # Server Extend
        serverExtend: (opts) ->  
            safefs = require('safefs')
            server.post '/listentry', (req,res,next) ->
                safefs.writeFile outFile, content, (err) ->
                    return next(err)  if err
    
    ---
    layout: 'default'
    title: 'My title'
    tags: ['news','node']
    mySelectionCriteria: 'selectionCriteria'
    ---
    

    您可以添加的元数据确实没有限制。“您不需要更改元数据”,但是有没有一种方法可以根据文件的某些属性,在不更改其元数据的情况下更改插件中文档的保存位置?简短的回答是肯定的。我现在实际上也在做类似的事情。我刚刚又看了你的评论,我不明白不改变文档元数据的部分,不管它保存在哪里。这没有道理。@kizu我已经猜到了你想要达到的目标,并对我的文章进行了适当的编辑。我猜您并不是真的想更改docpad生成的默认元数据,而是根据一些标准提供不同版本的文档