9

我使用 pelican-quickstart 创建了一个静态网站,它带有默认的 pelicanconf 和 publishconf。我的 publishconf 中有一个 GOOGLE_ANALYTICS 变量,但是当我在 Github Pages 中发布我的静态页面时,使用以下代码段:

<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '{{ GOOGLE_ANALYTICS }}']);
_gaq.push(['_trackPageview']);

(function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') +   '.google-analytics.com/ga.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

, _setAccount 变为空字符串。

我应该将 GOOGLE_ANALYTICS 从 publishconf 移动到 pelicanconf 吗?他们之间有什么区别?

4

2 回答 2

19

作为首先拆分 Pelican 设置文件的人,我建议考虑两种主要的操作模式:本地开发和生产部署(即,分别为 和 )pelicanconf.pypublishconf.py

不建议GOOGLE_ANALYTICSpublishconf.pyto移动。pelicanconf.py在本地开发时,Google Analytics 和 Disqus 之类的设置被故意排除在pelicanconf.py设计之外。在本地测试中包含这些设置可能会产生不利影响:不准确的站点统计信息、虚假评论线程和其他未预料到的副作用。

当需要发布您的网站时,您当然希望包含这些设置。这样做的方法是确保您publishconf.py在发布时被引用:

pelican content -s publishconf.py

如果您使用“包装”pelican命令的 Fabric 或 Make 自动化框架,则可以改用:

fab publish

... 或者 ...

make publish

我建议仔细查看您是如何发布站点的,确保分别在本地开发和生产部署期间使用适当的设置文件。

于 2013-12-30T18:23:16.180 回答
3

您在 中定义的内容publishconf.py会覆盖 中的相同定义pelicanconf.py
请注意,publishconf.py仅在两种情况下使用:

  1. 当您使用make publish(或其他 make 命令之一)生成您的站点时。
  2. 当您明确将其指定为要使用的配置文件时(即pelican -s publishconf.py content_dir)。

因此,如果您使用pelican命令生成站点,并且没有明确指定您的配置文件,则只会pelicanconf.py使用;因此,您将需要GOOGLE_ANALYTICS变量出现在那里。

于 2013-12-30T15:47:35.520 回答