diff --git a/shared/models.py b/shared/models.py index b2469220811d5319bcdfca96904e2a454568854f..6ac73c33b80cc6aec73e16bb15646f7b5feb1f2d 100644 --- a/shared/models.py +++ b/shared/models.py @@ -25,7 +25,11 @@ class SubpageMixin: class ArticleMixin(models.Model): - """Common fields for articles""" + """ + Common fields for articles + + If you want to tag articles, add tags as `tags` field in article page model. + """ RICH_TEXT_FEATURES = [ "h2", @@ -66,6 +70,18 @@ class ArticleMixin(models.Model): class Meta: abstract = True + @classmethod + def has_tags(cls): + try: + cls._meta.get_field("tags") + except models.FieldDoesNotExist: + return False + return True + + def tag_filter_page(self): + """Page used for filtering by tags in url like `?tag=foo`.""" + return self.get_parent() + class Person(models.Model): """Informace o Piratovi. Slouzi prevazne jako cache informaci o osobe pro diff --git a/shared/templates/styleguide/2.3.x/article_card.html b/shared/templates/styleguide/2.3.x/article_card.html index 24edf2f606116615334a7e5602e226d193094fae..0759bab0c2d30888f5a6bb9b401043e2a412102c 100644 --- a/shared/templates/styleguide/2.3.x/article_card.html +++ b/shared/templates/styleguide/2.3.x/article_card.html @@ -41,20 +41,15 @@ </a> <p class="card-body-text flex-grow">{{ article.perex }}</p> - {# TODO tags #} - {% comment %} - <div class="inline-block-nogap mt-4"> - <button class="btn article-card__category-button btn--grey-125 btn--condensed text-sm font-light"> - <div class="btn__body ">Kategorie 1</div> - </button> - <button class="btn article-card__category-button btn--grey-125 btn--condensed text-sm font-light"> - <div class="btn__body ">Kategorie 2</div> - </button> - <button class="btn article-card__category-button btn--grey-125 btn--condensed text-sm font-light"> - <div class="btn__body ">Dlouhá kategorie 3</div> - </button> - </div> - {% endcomment %} + {% if article.has_tags %} + <div class="inline-block-nogap mt-4"> + {% for tag in article.tags.all %} + <a href="{% pageurl article.tag_filter_page %}?tag={{ tag }}" class="btn article-card__category-button btn--grey-125 btn--condensed text-sm font-light"> + <div class="btn__body ">{{ tag }}</div> + </a> + {% endfor %} + </div> + {% endif %} </div> </article>