浏览代码

Add tags in post cards from search results (#895)

* Add tags in post cards from search results

* Use on_card parameter to decide to show the cards or not

* Fix search cards height

* Minor fix

* Fix null tags

* Fix CSS not applied properly in search page

Signed-off-by: hossainemruz <hossainemruz@gmail.com>

---------

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
Bernat Borràs Civil 1 年之前
父节点
当前提交
a94ddfe83d
共有 2 个文件被更改,包括 26 次插入7 次删除
  1. 8 1
      assets/scripts/pages/search.js
  2. 18 6
      layouts/_default/search.html

+ 8 - 1
assets/scripts/pages/search.js

@@ -79,6 +79,13 @@ window.addEventListener('DOMContentLoaded', () => {
       // pull template from hugo template definition
       // pull template from hugo template definition
       const templateDefinition = document.getElementById('search-result-template').innerHTML
       const templateDefinition = document.getElementById('search-result-template').innerHTML
       // replace values
       // replace values
+      function adaptTags() {
+        const tags = value.item.tags;
+        let string = '';
+        if (tags) tags.forEach((t) => {string += '<li class="rounded"><a href="/tags/' + t.toLowerCase() + '/" class="btn btn-sm btn-info">' + t + "</a></li>"});
+        return string;
+      }
+
       const output = render(templateDefinition, {
       const output = render(templateDefinition, {
         key,
         key,
         title: value.item.title,
         title: value.item.title,
@@ -86,7 +93,7 @@ window.addEventListener('DOMContentLoaded', () => {
         date: value.item.date,
         date: value.item.date,
         summary: value.item.summary,
         summary: value.item.summary,
         link: value.item.permalink,
         link: value.item.permalink,
-        tags: value.item.tags,
+        tags: adaptTags(),
         categories: value.item.categories,
         categories: value.item.categories,
         snippet
         snippet
       })
       })

+ 18 - 6
layouts/_default/search.html

@@ -28,28 +28,40 @@
 {{ end }}
 {{ end }}
 
 
 {{ define "content" }}
 {{ define "content" }}
+<script>
+  document.body.classList.replace('kind-page', 'kind-section');
+</script>
 <section class="content-section" id="content-section">
 <section class="content-section" id="content-section">
   <div class="content container-fluid" id="content">
   <div class="content container-fluid" id="content">
     <div class="container-fluid post-card-holder" id="post-card-holder">
     <div class="container-fluid post-card-holder" id="post-card-holder">
-      <div id="search-results">
+      <div id="search-results" style="display: flex;">
 
 
         <script id="search-result-template" type="text/x-js-template">
         <script id="search-result-template" type="text/x-js-template">
           <div class="post-card">
           <div class="post-card">
-            <a href="${link}" class="post-card-link">
-              <div class="card" style="min-height: 352px;"><a href="${link}" class="post-card-link">
+              <div class="card">
                 <div class="card-head">
                 <div class="card-head">
+                  <a href="${link}" class="post-card-link">
                   <img class="card-img-top" src="${hero}" alt="Card Heading Image">
                   <img class="card-img-top" src="${hero}" alt="Card Heading Image">
+                  </a>
                 </div>
                 </div>
                 <div class="card-body">
                 <div class="card-body">
-                  <h5 class="card-title">${title}</h5>
-                  <p class="card-text post-summary">${summary}</p>
+                  <a href="${link}" class="post-card-link">
+                    <h5 class="card-title">${title}</h5>
+                    <p class="card-text post-summary">${summary}</p>
+                  </a>
+                  {{ if site.Params.features.tags.on_card }}
+                  <div class="tags">
+                    <ul style="padding-left: 0;">
+                    ${tags}
+                    </ul>
+                  </div>
+                  {{ end }}
                 </div>
                 </div>
                 <div class="card-footer">
                 <div class="card-footer">
                   <span class="float-left">${date}</span>
                   <span class="float-left">${date}</span>
                   <a href="${link}" class="float-right btn btn-outline-info btn-sm">Read</a>
                   <a href="${link}" class="float-right btn btn-outline-info btn-sm">Read</a>
                 </div>
                 </div>
               </div>
               </div>
-	          </a>
           </div>
           </div>
         </script>
         </script>