Конфигурирование Jekyll для gizub страниц PROJECT
Я нахожусь здесь на своем пути. Я пытался посмотреть на все другие страницы проекта github, которые я мог найти, и даже блоги, но у меня нет проблем, которые я получаю. Во-первых, я пытаюсь создать страницу проекта для своего репо. Я сделал это, следуя обычным учебникам, создав ветвь gh-страниц в моем репозитории проектов и нажав.
Мне удалось сделать это и создать шаблон моих файлов. Мне даже удалось использовать HAML и SASS (они все еще конвертируются в html/css и что я нажимаю на репо, поэтому проблем нет). Я просто думаю, что я неправильно настраиваю свой jekyll. Во-первых, я не вижу никаких конфигураций на других страницах людей, которые используют baseurl или url для config.yml.
Проблема с моей - это когда я просматриваю свои сообщения:
{% for post in site.posts %}
<a href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}
Он всегда генерирует href как href="/post-title"
my _config.yml
btw имеет только следующее:
permalink: /exercises/:title
Проблема с этим, когда я нажимаю ссылку, всегда указывает на http://corroded.github.com/exercises/title-here, когда она должна быть http://corroded.github.com/projectname/exercises/title-here
Я действительно пытался жестко кодировать путь, делая:
<a href="#" onclick="location.href='http://corroded.github.com{{ post.url }}'; return false;">
и это работает. Он переходит к сообщению, но он показывает его как обычный текст, а не как сгенерированный html. Я знаю, что мне не хватает чего-то очень простого здесь, но я не могу найти его, и я боролся с этим целыми выходными.
О, и я забыл добавить: делая это в своем локальном хосте, я могу получить доступ ко всему:
http://localhost:4000/
, и нажатие на ссылки приведет меня к http://localhost:4000/exercises/title-here
и IT WORKS. Поэтому у меня есть довольно хорошее предположение, что это имеет какое-то отношение к конфигурации.
Ответы
Ответ 1
Когда у вас есть косая черта в начале вашей постоянной ссылки, это означает, что все URL-адреса должны быть относительно корня сайта. Именно по этой причине он будет http://corroded.github.com/exercises/title-here
вместо http://corroded.github.com/projectname/exercises/title-here
. Попробуйте это без первой косой черты:
permalink: exercises/:title
То же самое относится к любым URL-адресам, которые вы создаете с помощью HTML. Если у вас есть:
<a href="/about">
он всегда будет идти в корень домена (например, http://corroded.github.com/about
). Если проект называется "имя проекта", вы можете использовать HTML как
<a href="/projectname/about">
для прямой ссылки на страницы (например, http://corroded.github.com/projectname/about
).
Конечно, вы также можете использовать относительные URL-адреса (т.е. URL-адреса без косой черты). Вам просто нужно знать, где вы находитесь в дереве каталогов.
Ответ 2
EDIT: этот ответ был добавлен в документацию Jekyll на http://jekyllrb.com/docs/github-pages/.
Наконец-то я понял, что вы хотите найти решение со стандартным URL-адресом для страниц GitHub (username.github.io/project-name/
). Вот что делать:
В _config.yml
установите для параметра baseurl
значение /project-name
- отметьте начальную косую черту и отсутствие конечной косой черты.
Теперь вам нужно будет изменить способ создания ссылок в ваших шаблонах и сообщениях двумя способами:
При обращении к файлам JS или CSS сделайте это так: {{ site.baseurl }}/path/to/css.css
- обратите внимание на косую черту сразу после переменной (непосредственно перед "path" ).
При выполнении постоянных ссылок или внутренних ссылок сделайте так: {{ site.baseurl }}{{ post.url }}
- обратите внимание, что между этими двумя переменными есть косая черта нет.
Наконец, если вы хотите предварительно просмотреть свой сайт перед началом/развертыванием с помощью jekyll serve
, обязательно передайте пустую строку в параметр --baseurl
, чтобы вы могли просматривать все при localhost:4000
обычно (без /project-name
попадания туда, чтобы все испортить): jekyll serve --baseurl ''
Таким образом, вы можете предварительно просмотреть свой сайт локально с сайта root на локальном хосте, но когда GitHub генерирует ваши страницы из ветки gh-страниц, все URL-адреса начинаются с /project-name
и будут корректно разрешены.
Подробнее об этой проблеме на вопрос № 332.