2012-05-14 31 views
11

Tôi đang ở giai đoạn trí thông minh kết thúc tại đây. Tôi đã cố gắng xem xét tất cả các trang dự án ví dụ github khác mà tôi có thể tìm thấy và thậm chí cả các blog nhưng không có trang nào hiển thị các vấn đề tôi đang gặp phải. Đầu tiên, tôi đang cố gắng tạo một trang dự án cho repo của tôi. Tôi đã làm điều này bằng cách làm theo các hướng dẫn thông thường, tạo ra một chi nhánh gh-trang trong repo dự án của tôi và đẩy.Định cấu hình Jekyll cho các trang GITHUB PROJECT

Tôi đã quản lý các tệp này và tạo mẫu cho tệp của mình. Tôi thậm chí quản lý để sử dụng HAML và SASS (họ vẫn cả hai được chuyển đổi sang html/css và đó là những gì tôi đẩy vào repo vì vậy không có vấn đề đó). Tôi chỉ nghĩ rằng tôi đang cấu hình jekyll của tôi sai. Trước tiên, tôi không thấy bất kỳ cấu hình nào trong các trang của người khác sử dụng baseurl hoặc url trên config.yml.

Vấn đề với tôi là khi vòng lặp thông qua bài viết của tôi:

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

Nó luôn luôn tạo ra href như href="/post-title"

tôi _config.yml btw chỉ có này:

permalink: /exercises/:title 

Vấn đề với điều này khi tôi nhấp vào liên kết, nó luôn trỏ đến http://corroded.github.com/exercises/title-here khi nó thực sự là http://corroded.github.com/projectname/exercises/title-here

Tôi thực sự đã cố gắng mã hóa đường dẫn bằng cách thực hiện:

<a href="http://corroded.github.com{{ post.url }}"> và hoạt động. Nó đi đến bài BUT nó cho thấy nó như là văn bản đơn giản và không phải là html được tạo ra. Tôi biết tôi đang thiếu một cái gì đó rất đơn giản ở đây nhưng tôi dường như không thể tìm thấy nó và tôi đã đấu vật với toàn bộ cuối tuần này.

Oh và tôi quên thêm: làm điều này trong localhost của tôi, tôi có thể truy cập vào tất cả mọi thứ tại địa chỉ:

http://localhost:4000/ và nhấp vào liên kết này sẽ làm cho tôi để http://localhost:4000/exercises/title-here và IT WORKS. Vì vậy, tôi có một dự đoán khá tốt rằng nó có một cái gì đó để làm với cấu hình.

+0

Bạn đã thử thay đổi dòng my_config.yml: permalink:/exercises /: title thành permalink:/projectname/exercises /: title? Tôi không biết gì về các trang GitHub, nhưng điều đó dường như là một điều rõ ràng (quá rõ ràng?) Để thử. – vlasits

+0

Đó là một chút quá rõ ràng yeah nhưng chỉ sau đó áp dụng cho bài viết. Khi tôi tạo một liên kết để nói, trang giới thiệu, nó vẫn là tài liệu tham khảo/về nó đi tới gốc của http://corroded.github.com. Chưa kể tôi cũng phải hardcode đường dẫn cho các tập tin css và js của tôi khi tất cả các ví dụ khác chỉ hiển thị "/css/stylesheet.css" – corroded

Trả lời

9

Khi bạn có dấu gạch chéo ở phía trước của liên kết cố định, điều đó có nghĩa là tất cả các URL phải tương ứng với gốc của trang web. Đây là lý do tại sao nó sẽ http://corroded.github.com/exercises/title-here thay vì http://corroded.github.com/projectname/exercises/title-here. Hãy dùng thử không có dấu gạch chéo đầu tiên:

permalink: exercises/:title 

Điều tương tự cũng xảy ra với bất kỳ URL nào bạn tạo bằng HTML. Nếu bạn có:

<a href="/about"> 

nó sẽ luôn đi tới gốc của miền (ví dụ: http://corroded.github.com/about). Nếu bạn dự án được gọi là 'projectname', bạn có thể sử dụng HTML như

<a href="/projectname/about"> 

để liên kết trực tiếp đến trang (ví dụ http://corroded.github.com/projectname/about).

Tất nhiên, bạn cũng có thể sử dụng relative URLs (ví dụ: URL không có dấu gạch chéo hàng đầu). Bạn chỉ cần phải nhận thức được nơi bạn đang ở trong cây thư mục.

+1

P.S. một điều hữu ích khác là xóa "permalink" khỏi cấu hình của bạn. Điều đó sẽ cho phép bạn xem mọi thứ hoạt động như thế nào trong chế độ mặc định của nó và có thể giúp bạn hiểu rõ hơn về những gì đang diễn ra. –

+0

ive thực sự đã cố gắng loại bỏ các permalink và như tôi đã nói, nó trông giống như trong tất cả những nghiên cứu tôi quên phần cơ bản nhất: loại bỏ dấu gạch chéo đó. Tôi cứ nghĩ tôi * cần * để đặt dấu gạch chéo về phía trước và chỉ cần thiết lập baseurl và quên tất cả về việc loại bỏ dấu gạch chéo phía trước. Tôi cảm ơn bạn đã chỉ ra điều này cho tôi. Cảm ơn nhiêu! – corroded

+0

Thật không may tôi thấy rằng việc thêm tên dự án vào đầu của liên kết cố định tạo ra một thư mục con bổ sung trong đầu ra của trang web (như mong đợi) và không thực sự giải quyết vấn đề. Tôi đã đăng một giải pháp khác trong câu trả lời của tôi bên dưới. – mjswensen

26

EDIT: Câu trả lời này đã được thêm vào tài liệu Jekyll tại http://jekyllrb.com/docs/github-pages/.


cuối cùng tôi đã tìm ra các trick, nếu bạn đang tìm kiếm một giải pháp với URL chuẩn cho GitHub Trang (username.github.io/project-name/). Dưới đây là những điều cần làm:

Trong _config.yml, thiết lập các tùy chọn baseurl-/project-name - lưu ý các dấu gạch chéo hàng đầu và các vắng mặt của một dấu gạch chéo.

Bây giờ bạn sẽ cần phải thay đổi cách bạn làm các liên kết trong các mẫu và bài viết của mình, trong hai cách sau:

Khi tham chiếu các tệp JS hoặc CSS, làm điều đó như thế này: {{ site.baseurl }}/path/to/css.css - lưu ý các dấu gạch chéo ngay sau biến (ngay trước "đường dẫn").

Khi thực hiện liên kết cố định hoặc liên kết bên trong, hãy thực hiện như sau: {{ site.baseurl }}{{ post.url }} - lưu ý rằng có không có cắt giảm giữa hai biến.

Cuối cùng, nếu bạn muốn xem trước trang web của bạn trước khi cam/triển khai sử dụng jekyll serve, hãy chắc chắn để vượt qua một trống chuỗi đến tùy chọn --baseurl, do đó bạn có thể xem tất cả mọi thứ tại localhost:4000 thường (không có /project-name nhận được trong Bằng cách này bạn có thể xem trước trang web của bạn cục bộ từ gốc trang trên máy chủ cục bộ, nhưng khi GitHub tạo trang của bạn từ chi nhánh gh-trang, tất cả các URL sẽ bắt đầu bằng /project-name và giải quyết đúng cách.

Cuộc trò chuyện khác về sự cố này trên issue #332.

+3

+1 đây phải là câu trả lời đúng –

+1

Tại sao điều này chưa được chọn làm câu trả lời chính xác? –

Các vấn đề liên quan