Hi @DarrenPlant
This functionality is already available in the "Community Portal"


If you are not after using a different portal template. Then you can build your web template based on your content snippet and inject the content snippet you have created.
Example web template to give you an idea.
{% assign showdescription = showdescription | default: false %}
{% assign count = count | default: 3 %}
{% assign languagecode = website.selected_language.code %}
<div class="panel panel-default">
<div class="panel-heading">
<div class="panel-title">{% editable snippets 'KnowledgeMgmt/MostPopularArticles' type: 'text', default: resx['KnowledgeMgmt_Most_Popular_Articles'], escape: true, tag: 'span' %}</div>
</div>
{% assign popular_articles = knowledge.articles | popular: count,languagecode %}
{% if popular_articles %}
<div class="list-group">
{% for article in popular_articles %}
<div class="list-group-item clearfix">
<a class="title" href="{{ article.url | escape }}">{{ article.title | escape }}</a>
{% if showdescription %}<p class="description">{{ article.description | escape }}</p>{% endif %}
</div>
{% endfor %}
</div>
{% endif %}
</div>
Hope it helps.
------------
If you like this post, give it a Thumbs up. Where it solved your request, Mark it as a Solution to enable other users to find it.