В чем разница между pelicanconf и publishconf при использовании Pelican?

Я использовал pelican-quickstart для создания статического веб-сайта, который поставляется по умолчанию с pelicanconf и publishconf. У меня есть переменная GOOGLE_ANALYTICS в моем publishconf, но когда я публикую свою статическую страницу в 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? Какая разница между ними?

2 ответа

Решение

Как человек, который в первую очередь раздвоил файл настроек Pelican, я рекомендую подумать о двух основных режимах работы: локальная разработка и развертывание производства (т. Е. pelicanconf.py а также publishconf.pyсоответственно).

перемещение GOOGLE_ANALYTICS от publishconf.py в pelicanconf.py не рекомендуется При локальной разработке настройки для таких вещей, как Google Analytics и Disqus сознательно не учитываются. pelicanconf.py по дизайну. Включение этих параметров в локальное тестирование может иметь неблагоприятные последствия: неточная статистика сайта, ложные комментарии и другие непредвиденные побочные эффекты.

Когда пришло время опубликовать ваш сайт, тогда, конечно, вы хотите, чтобы эти настройки были включены. Способ сделать это - обеспечить publishconf.py ссылка на время публикации:

pelican content -s publishconf.py

Если вы используете инфраструктуру автоматизации Fabric или Make, которая "оборачивает" pelican Команда, вы могли бы вместо этого использовать:

fab publish

... или же...

make publish

Я рекомендую внимательно посмотреть, как именно вы публикуете свой сайт, и убедиться, что соответствующий файл настроек используется при локальной разработке и развертывании в рабочей среде, соответственно.

Что вы определяете в publishconf.py переопределяет те же определения в pelicanconf.py,
Но обратите внимание, что publishconf.py используется только в двух случаях:

  1. Когда вы используете make publish (или одна из других команд make) для создания вашего сайта.
  2. Когда вы явно указываете его в качестве файла конфигурации, который будет использоваться (т.е. pelican -s publishconf.py content_dir).

Так что если вы создаете свой сайт с pelican команда, а не явно указывать ваш файл конфигурации, только pelicanconf.py будет использоваться; Таким образом, вам понадобится GOOGLE_ANALYTICS переменная, чтобы появиться там.

Другие вопросы по тегам