私は仕事をする小さなプラグインを書きました、おそらくより良い解決策がありますが、それはうまくいきます:
# Export Plugin
module.exports = (BasePlugin) ->
# Define Plugin
class absolutePathPlugin extends BasePlugin
# Plugin Name
name: 'absolutepath'
config:
url: "/"
renderAfter: (opts,next) ->
docpad = @docpad
if 'static' in docpad.getEnvironments()
docpad.log 'debug', 'Writing absolute urls'
href = 'href="' + @config.url
src = 'src="' + @config.url
database = docpad.getCollection('html')
database.forEach (document) ->
content = document.get('contentRendered')
if /href="\//.test(content)
content = content.replace(/href="\//g, href)
if /src="\//.test(content)
content = content.replace(/src="\//g, src)
document.set('contentRendered',content)
next()?
else
next()?
# Chain
@
私のdocpad.coffee
ファイルでは、URLを構成するだけで、cleanUrlsプラグインを使用する場合は、絶対URLを考慮に入れるようにgetRedirectTemplate関数を調整する必要があります。
plugins:
absolutepath:
url: "http://www.example.com/demo/"
cleanurls:
getRedirectTemplate: (document) ->
absolutepath = docpadConfig.plugins.absolutepath.url.slice(0, - 1)
"""
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>#{document.get('title') or 'Redirect'}</title>
<meta http-equiv="REFRESH" content="0;url=#{absolutepath + document.get('url')}">
</head>
<body>
This page has moved. You will be automatically redirected to its new location. If you aren't forwarded to the new page, <a href="#{absolutepath + document.get('url')}">click here</a>.
</body>
</html>
"""