Browse Source

project widget: Fix filter for case where `tag` is not CSS class name

Fix #660
George Cushen 7 năm trước cách đây
mục cha
commit
3eb8be428b
1 tập tin đã thay đổi với 13 bổ sung4 xóa
  1. 13 4
      layouts/partials/widgets/projects.html

+ 13 - 4
layouts/partials/widgets/projects.html

@@ -10,19 +10,28 @@
   <div class="col-xs-12 col-md-8">
     {{ with $page.Content }}<p>{{ . | markdownify }}</p>{{ end }}
 
+    {{ if $page.Params.filter }}
+
     {{ $filter_default := default (int $page.Params.filter_default) 0 }}
-    {{ with $page.Params.filter }}
-    <span class="hidden default-project-filter">{{ (index $page.Params.filter ($filter_default)).tag }}</span>
+
+    {{/* Parse default filter tag from front matter in the form of either tag name or CSS class name. */}}
+    {{ $default_filter_tag_raw := (index $page.Params.filter ($filter_default)).tag }}
+    {{ $default_filter_tag := printf ".%s" (urlize $default_filter_tag_raw) }}
+    {{ if or (eq (substr $default_filter_tag_raw 0 1) "*") (eq (substr $default_filter_tag_raw 0 1) ".") }}
+      {{ $default_filter_tag = $default_filter_tag_raw }}
     {{ end }}
 
-    {{ if isset $page.Params "filter" }}
+    <span class="hidden default-project-filter">{{ $default_filter_tag }}</span>
+
+    {{/* Only show filter buttons if there are multiple filters. */}}
     {{ if gt (len $page.Params.filter) 1 }}
     <div class="project-toolbar">
       <div class="project-filters">
         <div class="btn-toolbar">
           <div class="btn-group">
             {{ range $idx, $item := $page.Params.filter }}
-              {{ if or (eq (substr .tag 0 1) "*") (eq (substr .tag 0 1) ".") }}
+            {{/* Parse filter tag from front matter in the form of either tag name or CSS class name. */}}
+            {{ if or (eq (substr .tag 0 1) "*") (eq (substr .tag 0 1) ".") }}
                 {{ $.Scratch.Set "tag" .tag }}
               {{ else }}
                 {{ $.Scratch.Set "tag" (printf ".%s" (urlize .tag)) }}