2012-05-14 12 views
11

Estoy en mi ingenio al final aquí. He estado tratando de ver todas las otras páginas de proyectos github de ejemplo que pude encontrar e incluso los blogs, pero ninguno muestra los problemas que estoy recibiendo. Primero, intento crear una página de proyecto para mi repositorio. Hice esto siguiendo los tutoriales habituales, creando una rama de gh-páginas en mi repositorio de proyecto y presionando.Configurando Jekyll para las páginas del PROYECTO de github

Pude hacer esto y configurar mis archivos. Incluso logré usar HAML y SASS (ambos se convierten a html/css y eso es lo que empujo al repositorio, así que no hay problema). Solo creo que estoy configurando mi jekyll mal. Primero, no veo configuraciones en las páginas de otras personas que usen baseurl o url en config.yml.

El problema con la mía es cuando bucle a través de mis mensajes:

{% for post in site.posts %} 
    <a href="{{ post.url }}">{{ post.title }}</a> 
{% endfor %} 

Siempre genera el href como href="/post-title"

mi _config.yml por cierto sólo tiene esto:

permalink: /exercises/:title 

El problema con esto cuando hago clic en el enlace, siempre apunta a http://corroded.github.com/exercises/title-here cuando en realidad debería ser http://corroded.github.com/projectname/exercises/title-here

De hecho, me he esforzado codificar el trazado llevando a cabo:

<a href="http://corroded.github.com{{ post.url }}"> y esto funciona. Va a la publicación PERO lo muestra como texto sin formato y no como el html generado. Sé que me estoy perdiendo algo muy simple aquí, pero parece que no puedo encontrarlo y he estado luchando con esto todo el fin de semana.

Ah, y se me olvidó añadir: hacer esto en mi localhost, que puede acceder a todo en:

http://localhost:4000/ y haciendo clic en los enlaces me va a llegar a http://localhost:4000/exercises/title-here y funciona. Así que tengo una buena idea de que tiene algo que ver con la configuración.

+0

¿Has intentado cambiar la línea my_config.yml: enlace permanente:/exercises /: title to enlace permanente:/projectname/exercises /: title? No sé nada sobre las páginas de GitHub, pero parece ser algo obvio (¿demasiado obvio?) Para intentarlo. – vlasits

+0

Es un poco demasiado obvio, sí, pero eso solo se aplica a las publicaciones. Cuando creo un enlace para decir, la página Acerca de, todavía hace referencia/Acerca de que va a la raíz http://corroded.github.com. Sin mencionar que también tuve que codificar esa ruta para mis archivos css y js cuando todos los demás ejemplos mostraban solo "/css/stylesheet.css" – corroded

Respuesta

9

Cuando tiene una barra en la parte frontal de su enlace permanente, significa que todas las URL deben ser relativas a la raíz del sitio. Esta es la razón por la que va al http://corroded.github.com/exercises/title-here en lugar de http://corroded.github.com/projectname/exercises/title-here. Pruébalo sin la primera barra:

permalink: exercises/:title 

Lo mismo ocurre con las URL que crees con HTML. Si usted tiene:

<a href="/about"> 

siempre irá a la raíz del dominio (por ejemplo http://corroded.github.com/about). Si eres proyecto se llama 'projectname', puede utilizar HTML como

<a href="/projectname/about"> 

para acceder directamente a las páginas (por ejemplo http://corroded.github.com/projectname/about).

Por supuesto, también puede usar relative URLs (es decir, URLs sin una barra diagonal). Solo tiene que saber dónde se encuentra en el árbol de directorios.

+1

P.S. Otra cosa útil sería eliminar el "enlace permanente" de su configuración todos juntos. Eso le permitirá ver cómo se comporta todo en su modo predeterminado y posiblemente le dará una mejor comprensión de lo que está sucediendo. –

+0

En realidad, he intentado eliminar el enlace permanente y como he dicho, parece que en todas esas investigaciones olvidé la parte más básica: eliminar esa barra diagonal. Seguí pensando que * necesitaba * poner la barra hacia adelante y simplemente tuve que configurar la baseurl y olvidé todo sobre quitar la barra hacia delante. Te agradezco por señalar esto por mí. ¡Gracias Gracias! – corroded

+0

Desafortunadamente, encontré que agregar el nombre del proyecto al principio del enlace permanente genera una subcarpeta adicional en la salida del sitio (como se esperaba) y realmente no resuelve el problema. Publiqué una solución diferente en mi respuesta a continuación. – mjswensen

26

EDITAR: Esta respuesta se ha agregado a la documentación de Jekyll al http://jekyllrb.com/docs/github-pages/.


finalmente me di cuenta de que el truco, si usted está buscando una solución con la URL estándar para las páginas de GitHub (username.github.io/project-name/). Esto es lo que debe hacer:

En _config.yml, establezca la opción baseurl a /project-name - tenga en cuenta la barra inicial y la ausencia de una barra final.

Ahora tendrá que cambiar la forma de hacer enlaces en sus plantillas y puestos de trabajo, de las dos formas siguientes:

Al hacer referencia a archivos JS o CSS, hacerlo de esta manera: {{ site.baseurl }}/path/to/css.css - nota de la barra inmediatamente después de la variable (justo antes de "ruta").

Al hacer enlaces permanentes o enlaces internos, hazlo así: {{ site.baseurl }}{{ post.url }} - ten en cuenta que no hay sin barra entre las dos variables.

Por último, si desea obtener una vista previa de su sitio antes de comprometerse/despliegue utilizando jekyll serve, asegúrese de pasar una cadena vacía a la opción --baseurl, por lo que se puede ver todo en localhost:4000 normalmente (sin entrar en /project-name allí para Muck todo para arriba): jekyll serve --baseurl ''

esta manera se puede obtener una vista previa de su sitio de forma local desde la raíz del sitio en el servidor local, pero cuando GitHub genera las páginas de la rama GH-páginas todas las direcciones URL comenzará con /project-name y resolver adecuadamente.

Más conversación sobre este problema en issue #332.

+3

+1 esta debería ser la respuesta correcta –

+1

¿Por qué no se ha seleccionado esta opción como la respuesta correcta? –

Cuestiones relacionadas