Вот элегантный способ сделать это, который я скопировал откуда-то, и я только хотел бы вспомнить, где, чтобы я мог отдать им должное. 8 -)
Я присваиваю id
каждой моей странице (или всем страницам в разделе) следующим образом:
In index.html: <body id='section-intro'>...
In faq.html: <body id='section-faq'>...
In download.html: <body id='section-download'>...
А затем id
для соответствующих ссылок:
<li id='nav-intro'><a href="./">Introduction</a></li>
<li id='nav-faq'><a href="./faq.html">FAQ</a></li>
<li id='nav-download'><a href="./download.html">Download</a></li>
И в CSS я установил правило так:
#section-intro #nav-intro,
#section-faq #nav-faq,
#section-download #nav-download {
font-weight: bold;
/* And whatever other styles the current link should have. */
}
Так что это работает в основном декларативным способом управления стилем ссылки, которой принадлежит текущая страница. Вы можете увидеть это в действии здесь: http://entrian.com/source-search/
Это очень чистая и простая система после ее настройки, потому что:
- Вам не нужно возиться с разметкой шаблона в ваших ссылках
- Вы не в конечном итоге используете большие уродливые
switch
операторы или if / else / else
операторы
- Добавление страниц в раздел Just Works [TM]
- Изменение внешнего вида означает изменение CSS, а не разметки.
Я не использую Django, но эта система работает где угодно. В вашем случае, когда вы «устанавливаете свои собственные соответствующие заголовки и содержимое», вам также нужно установить body id
, и никакой другой разметки Django не требуется.
Эта идея легко распространяется и на другие ситуации, например. «Мне нужна ссылка для скачивания на боковой панели на каждой странице, кроме самих страниц загрузки». Вы можете сделать это в CSS следующим образом:
#section-download #sidebar #download-link {
display: none;
}
вместо того, чтобы помещать условную разметку шаблона в боковую панель HTML.