2014-12-22 11 views
6

Chcę wprowadzić hash linki do nagłówków strony w menu strony internetowej. Na stronie internetowej jest generowany z Jekyll i to domyślny układ wygląda następująco:Jekyll: Umieść spis treści kramdown w _include for hash navigation

<!DOCTYPE html> 
<html> 

    {% include head.html %} 

    <body> 

    {% include header.html %} 

    <div id="BigFatContainer"> 
     {{ content }} 
     {% include footer.html %} 
    </div> 
    </body> 
</html> 

Jest w nagłówku, że menu do nawigowania po różnych stronach znajduje się. Byłem w stanie dodać spis treści do {{ content }} za pomocą następującego polecenia Kramdown:

* Point at which the TOC is attached 
{:toc} 

Jeden mogłby brzydki JavaScript Hack przenieść ten spis treści z {{ content }} i do header.html ale to byłoby złe rozwiązanie. Nie można umieścić makra {:toc} wewnątrz pliku header.html, ponieważ nie jest on analizowany przez program Kramdown, a nawet jeśli upewnisz się, że jest on analizowany przez program Kramdown przy użyciu na przykład wtyczki this, wyprowadza on spis treści z header.md zamiast spisu treści dla zawartości.

Odpowiedz

0

@ Miroslav-nedyalkov było na dobrej drodze tutaj. Po jego sugestii, patrząc na dokumentację Bootstrap, odkryłem, że używa on Ruby Gem - jekyll-toc, który pozwala umieścić TOC w dowolnym miejscu pliku układu. Włączasz go w pierwszej sprawie. Jestem teraz z powodzeniem przy użyciu:

<nav aria-label="Table of Contents"> 
    {{ content | toc_only }} 
</nav> 

<section itemprop="articleBody"> 
    {{ content }} 
</section> 
-3

Dlaczego przenosić blok toc?

To prawda, że ​​ten toc jest częścią treści strony. Semantycznie.

Masz problem tutaj nie na poziomie struktury dokumentu, ale na prezentacji.

W tym przypadku zalecane jest użycie CSS w celu rozwiązania problemu.

+0

Wyobraź sobie długą dokumentację lub zobaczyć [to] (http://jcdesign.se/) projekt, aby zrozumieć w jaki sposób można to zrobić sens mieć '' 'TOC''' w strukturze menu twojego dokumentu. – Rovanion

+0

Utrzymuję moje stanowisko w sprawie architektury informacji. Witryna, o której wspomniałeś, nie łączy głównej nawigacji z nawigacją strony: jest to witryna pojedyncza. –

+0

Dziękuję za głosowanie. To naprawdę konstruktywne. –

0

Proponuję, aby użyć podejścia Bootstrap website (przewiń w dół i obserwuj prawy obszar nawigacji), użyj - zrób swój spis treści jako część obszaru zawartości, ale ułóż go tak, aby był umieszczony po stronie jak główna nawigacja. Głównym powodem, dla którego sugeruję ci takie podejście, jest to, że możesz (i najprawdopodobniej będzie) mieć więcej niż jedną stronę. W takim przypadku musisz wyświetlić różne strony nawigacji dla każdej strony i wyświetlić nawigację między stronami.

Więcej informacji można znaleźć w tym artykule - http://idratherbewriting.com/2015/01/20/implementing-scrollspy-with-jekyll-to-auto-build-a-table-of-contents/

+1

Zgadzam się, TOC jest częścią treści strony, a nie główną nawigacją. –

+0

Nie odnosi się do głównego celu PO, którym jest przeniesienie spisu treści poza '{{content}}'. –

Powiązane problemy