Мне нужно по-разному стилизовать все сообщения в Octopress, которые имеют тег «старый». Мол, в архивах показывать только название, а не изображение и держать их отдельно! Как я могу это сделать? (Примечание: около 1500 постов со старым тегом)
Можно ли стилизовать сообщения в октопрессе в соответствии с их тегами?
Ответы (2)
Вы можете просто использовать теги как классы CSS:
<ul>
{% for post in site.posts %}
<li><a href="{{ post.url }}" class="tags {{ post.tags | join:' ' }}">{{ post.title }}</a></li>
{% endfor %}
</ul>
Таким образом, вы можете легко оформить ссылку с помощью CSS для любого тега.
person
Polygnome
schedule
27.07.2013
Я предполагаю, что у вас есть класс old
, который различает сообщения, или что вы можете стилизовать список старых сообщений с помощью класса old_posts
. Вы можете создать два отдельных списка:
<ul class="old_posts">
{% for post in site.tags.old %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
</ul>
<ul class="new_posts">
{% for post in site.posts %}
{% unless post.tags contains 'old' %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
Или вы можете создать один список со старыми сообщениями, получающими специальный класс old
:
<ul>
{% for post in site.posts %}
{% if post.tags contains 'old' %}
<li><a href="{{ post.url }}" class="old">{{ post.title }}</a></li>
{% else %}
<li><a href="{{ post.url }}" class="new">{{ post.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
По сути, site.posts
, post.tags
и site.tags.TAGNAME
вместе с if-else
, for
и contains
Liquid могут выполнять большинство задач, связанных со стилем специально помеченных постов.
person
agarie
schedule
26.07.2013
Есть одна маленькая проблема. Код не работает. Сообщения с тегом old помещаются в обычный список сообщений. Он не распознает старый тег. Я думаю, это потому, что у одного поста несколько тегов. Как это исправить? Как искать подстроку «старый» в post.tags?
- person THpubs; 28.07.2013
Исправлена! используйте «старый» вместо старого!
- person THpubs; 28.07.2013
Это здорово :) Извините, я ехал на работу, поэтому не было возможности протестировать код. Кстати, если мой ответ помог вам, можете ли вы назначить его лучшим ответом? Спасибо!
- person agarie; 28.07.2013