TL; DR: Tôi có thể nói bằng cách nào đó để tạo nội dung cho một {% include %}
một lần và chỉ đóng dấu ở nhiều nơi mà không cần phải tạo lại nó ở mọi vị trí?Jekyll: Tạo một bao gồm một lần và bao gồm nó cho tất cả các trang
Tôi đang xây dựng trang web tài liệu khá lớn với Jekyll hiện có hơn 50 bài viết trên đó. Nó có một thanh bên, nơi tất cả các bài viết được liệt kê. thanh bên được xây dựng trong một sidebar.html riêng biệt và sau đó nó được đưa vào mỗi trang trên trang web với {% include sidebar.html %}
trong default.html.
Vấn đề tôi gặp phải là mỗi bài viết đều chạy thế hệ sidebar.html một cách riêng biệt, vì vậy tôi có hơn 50 lần truyền thế hệ trên đoạn mã đó. Mỗi bài viết tôi thêm vào thêm một pass cho điều này và làm cho tất cả các pass chậm hơn một chút, vì việc tạo ra sidebar phải phân tích từng bài viết trong dự án.
Thời gian xây dựng đã tăng từ 0 về cơ bản lên hơn 100 giây rồi, và nếu tôi xóa {% include sidebar.html %}
thì nó sẽ giảm xuống còn 5 giây. Khi tôi nhận được tất cả các bài viết trong tôi ước tính có khoảng 100-200 trong số họ. Sau đó, tôi nên có phiên bản trong tương lai cho tất cả các bài viết có nghĩa là có thể dễ dàng được 1000 bài viết trong thời gian dài. Tại thời điểm đó, tôi sẽ không ngạc nhiên nếu thay đổi một chữ cái trong một tệp sẽ mất khoảng một giờ để tạo lại các tệp trong jekyll serve
và jekyll build
.
Điều tôi muốn làm là xây dựng sidebar.html một lần trong phần đầu của quá trình xây dựng và chỉ đóng dấu cho mỗi trang khi tôi tạo trang đã nói. Điều này có thể không?
Tạo bảng nội dung 50 bài viết không mất quá nhiều thời gian. Bạn có thể hiển thị mã cho bạn bao gồm không? –
Tôi đặt nó lên trên pastebin: http://pastebin.com/KBKbQr4P. Tôi đã giải thích ngắn gọn tại sao nó làm những gì nó làm và lưu ý một số vấn đề về perfo đã có, nhưng tôi đã không tìm ra cách tốt hơn để làm điều đó. Nó được chia thành ba phần. Mọi đề xuất về cách làm tốt hơn cũng được đánh giá cao. –
Đó là một bảng chức năng của nội dung! Tôi sẽ đào vào tối nay. –