<p>The following pages are tagged with <button type="button" style="cursor: default" class="btn btn-default navbar-btn">{{page.tagName}}</button></p>
    <table><thead><tr><th>Page</th><th>Excerpt</th></tr></thead>
    <tbody>
    {% assign thisTag = page.tagName %}
  {% for page in site.pages %}
    {% for tag in page.tags %}
        {% if tag == thisTag %}
        
        <tr><td><a href="{{ page.url | prepend: '..'}}">{{page.title}}</a></td>
          <td>{% if page.summary %} {{ page.summary | strip_html | strip_newlines | truncate: 160 }} {% else %} {{ page.content | truncatewords: 50 | strip_html }} {% endif %}</td>
        </tr>
        {% endif %}
     {% endfor %}
   {% endfor %} 
</tbody>
</table>