def METHOD_NAME(self, other_model=None, queryset=None, published=True, on_site=False):
    from taggit.models import TaggedItem
    if on_site:
        queryset = queryset.on_site()
    tag_ids = self._taglist(other_model, queryset)
    kwargs = {}
    if published:
        kwargs = {
            "object_id__in": self.model.objects.published(),
            "content_type": ContentType.objects.get_for_model(self.model),
        }
    kwargs["tag_id__in"] = tag_ids
    counted_tags = dict(
        TaggedItem.objects.filter(**kwargs)
        .values("tag")
        .annotate(count=models.Count("tag"))
        .values_list("tag", "count")
    )
    tags = TaggedItem.tag_model().objects.filter(pk__in=counted_tags.keys())
    for tag in tags:
        tag.count = counted_tags[tag.pk]
    return sorted(tags, key=lambda x: -x.count)