2012-11-03 25 views
8

Tôi đang triển khai tài liệu sử dụng Nhân sư (https://github.com/fridge-project/dbal-docs) & muốn ghi đè trang html của tài liệu cụ thể. Sở thích của tôi là ghi đè tất cả các chỉ mục thư mục để không chỉ hiển thị một ul đơn giản.Ghi đè mẫu trang html cho một tài liệu nhân sư cụ thể

Tôi đã đọc tài liệu Sphinx nhưng tôi không tìm thấy điều gì đó thú vị về vấn đề của mình ... Có ai đó biết cách giải quyết không?

+0

Bạn có cuối cùng tìm một giải pháp? –

+0

Có, tôi đã tìm ra giải pháp nhưng nó thực sự giống như hack ... Tôi đã ghi đè mẫu 'page.html' và thực hiện một số kiểm tra có điều kiện theo mẫu' pagename' & sau đó 'include' thay vì thực tế ... – egeloen

+0

Bạn có thể dán giải pháp vào đây không? Sẽ hữu ích ngay cả khi nó chỉ là một hack. –

Trả lời

10

Đối với hồ sơ, giải pháp này là nhiều hơn một hack hơn là một giải pháp nhưng bây giờ, tôi không tìm thấy điều gì đó tốt hơn ...

Thứ nhất, của tất cả các bạn cần phải hiểu cách giải quyết của tôi là dựa trên theming. Trong tài liệu của bạn, bạn sử dụng một chủ đề (chủ đề mặc định hoặc tùy chỉnh) nhưng dù sao, bạn vẫn sử dụng một chủ đề. Chủ đề này được chia thành nhiều phần khác nhau (trang, toc, ...) có thể được ghi đè riêng. Ghi đè này có thể được thực hiện ở cấp độ khác nhau: chính chủ đề hoặc trong thư mục mẫu tùy chỉnh của dự án (theo mặc định _templates) (có thể định cấu hình trong conf.py).

Giải pháp thay thế của tôi là ghi đè mẫu page.html trong thư mục _templates đại diện cho tất cả các trang trong tài liệu của bạn. Trong mẫu này, bạn có quyền truy cập vào pagename (đường dẫn doc tương đối của mỗi tệp). Biết rằng, bạn có thể thực hiện một số kiểm tra có điều kiện trong mẫu này để phát hiện xem đây có phải là tệp mà bạn muốn ghi đè & rồi ghi đè nó hay không. Nếu nó không phải là một tập tin mà cần phải được ghi đè, chỉ cần dự phòng về hành vi mặc định:

{% extends "layout.html" %} 
{% block body %} 
    {% if pagename == 'index' %} 
     {% include 'custom/index.html' %} 
    {% else %} 
     {{ body }} 
    {% endif %} 
{% endblock %} 

Như giải thích, nó thực sự có vẻ giống như một hack ...

0

Một sẽ có thể sử dụng một biến để xác định mẫu để mở rộng. http://jinja.pocoo.org/docs/2.10/templates/#template-objects

Bằng cách đó, nó có thể ít bị 'hack' hơn. Và bạn có toàn quyền kiểm soát đầu ra được tạo ra (không chỉ khối body).

layout.html:
{% extends meta.page_template|default('basic/page.html') %}

Và trong index.rst của bạn, bạn sử dụng sau đó trang-level-meta-data: http://www.sphinx-doc.org/en/stable/markup/misc.html#file-wide-metadata

index.rst:
:page_template: custom/index.html <your normal index.rst content>

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