docs: def query_tags(order=None, orderby=None, limit=None):
      """
      Query the tags, with usage count included.
      This interface is mainly used by the ``get_tags`` template tag.
      """
      from taggit.models import Tag, TaggedItem    # feature is still optional
  
      # Get queryset filters for published entries
      EntryModel = get_entry_model()
      ct = ContentType.objects.get_for_model(EntryModel)  # take advantage of local caching.
  
      entry_filter = {
          'status': EntryModel.PUBLISHED
      }
      if appsettings.FLUENT_BLOGS_FILTER_SITE_ID:
          entry_filter['parent_site'] = settings.SITE_ID
  
      entry_qs = EntryModel.objects.filter(**entry_filter).values_list('pk')
  
      # get tags
      queryset = Tag.objects.filter(
          taggit_taggeditem_items__content_type=ct,
          taggit_taggeditem_items__object_id__in=entry_qs
      ).annotate(
          count=Count('taggit_taggeditem_items')
      )
  
      # Ordering
      if orderby:
          queryset = queryset.order_by(*_get_order_by(order, orderby, TAG_ORDER_BY_FIELDS))
      else:
          queryset = queryset.order_by('-count')
  
      # Limit
      if limit:
          queryset = queryset[:limit]
  
      return queryset