forked from nyancrimew/maia.crimew.gay
		
	show related posts at the bottom of blog posts
This commit is contained in:
		
							parent
							
								
									cb41f112e4
								
							
						
					
					
						commit
						1bf8394678
					
				
					 5 changed files with 56 additions and 6 deletions
				
			
		|  | @ -48,8 +48,6 @@ module.exports = function (eleventyConfig) { | |||
|     return str.split('/').map(part => encodeURI(part)).join('/') | ||||
|   }); | ||||
| 
 | ||||
|   // TODO: this appears to potentially be dependent on rendering order
 | ||||
|   // TODO: actually add to the post ui
 | ||||
|   eleventyConfig.addFilter("related", function(obj) { | ||||
|     const post = this.ctx; | ||||
|     const posts = this.ctx.collections.posts.map(post => post.data); | ||||
|  | @ -64,13 +62,14 @@ module.exports = function (eleventyConfig) { | |||
|       serializer: (doc) => [doc.title, doc.description], | ||||
|       weights: [10, 10], | ||||
|     })(post, posts).map(result => { | ||||
|       console.log(result.document); | ||||
|       return { | ||||
|         relative: result.relative + tagScore(post, result.document), | ||||
|         document: result.document | ||||
|       } | ||||
|     }); | ||||
| 
 | ||||
|     return results.filter(result => result.relative > 0.0).slice(0,3); | ||||
|     return results.filter(result => result.relative > 0.2).sort((a, b) => a.relative - b.relative).reverse().slice(0,3); | ||||
|   }); | ||||
| 
 | ||||
|   eleventyConfig.addCollection('posts', collection => { | ||||
|  |  | |||
|  | @ -17,8 +17,8 @@ subhead: blog | |||
|                 <span class="readtime">{{ content | timeToRead }} to read</span> | ||||
|                 <span class="middot"></span> | ||||
|                 <span>by <span class="author by" id="author">{{ site.name }}</span></span> | ||||
|                 <span class="middot"></span> | ||||
|                 {% if tags %} | ||||
|                     <span class="middot"></span> | ||||
|                     <span>in  | ||||
|                         {% for tag in tags %} | ||||
|                             <span class="tag"><a href="/posts/tagged/{{ tag | slugify }}/">{{ tag }}</a></span>{% if not loop.last %}, {% endif %} | ||||
|  | @ -47,4 +47,35 @@ subhead: blog | |||
|             </div> | ||||
|         </a> | ||||
|     </article> | ||||
|     {% for rel in "" | related %} | ||||
|         {% if loop.first %} | ||||
|         <div class="related"> | ||||
|         <h3>related posts</h3> | ||||
|         <ul> | ||||
|         {% endif %} | ||||
|         <li class="list-entry"> | ||||
|             <!-- rank {{ rel.relative }} --> | ||||
|             <a href="{{ rel.document.page.url }}"><h4>{{ rel.document.title }}</h4></a> | ||||
|             <div class="byline"> | ||||
|                 <time datetime="{{ rel.document.page.date | date_to_datetime }}">{{ rel.document.page.date | date_formatted }}</time> | ||||
|                 {% if rel.document.changed_date %} | ||||
|                     <small class="updated">(updated <time datetime="{{ rel.document.changed_date | date_to_datetime }}">{{ rel.document.changed_date | date_formatted }}</time>)</small> | ||||
|                 {% endif %} | ||||
|                 <span class="middot"></span> | ||||
|                 <span class="readtime">{{ rel.document.content | timeToRead }} to read</span> | ||||
|                 <span class="middot"></span> | ||||
|                 <span>by <span class="author by" id="author">{{ site.name }}</span></span> | ||||
|                 {% if rel.document.tags %} | ||||
|                     <span class="middot"></span> | ||||
|                     <span>in  | ||||
|                     {% for tag in rel.document.tags %} | ||||
|                         <span class="tag"><a href="/posts/tagged/{{ tag | slugify }}/">{{ tag }}</a></span>{% if not loop.last %}, {% endif %} | ||||
|                     {% endfor %} | ||||
|                     </span> | ||||
|                 {% endif %} | ||||
|             </div> | ||||
|             <span class="lead"><strong>{{ rel.document.description }}</strong></span> | ||||
|         </li> | ||||
|         {% if loop.last %}</ul></div>{% endif %} | ||||
|     {% endfor %} | ||||
| {% endblock %} | ||||
|  |  | |||
|  | @ -79,6 +79,26 @@ time, | |||
|   border-bottom: 1px dotted rgb(219, 103, 167); | ||||
| } | ||||
| 
 | ||||
| .related { | ||||
|   margin-top: 18px; | ||||
|   border-top: 1px dotted rgb(219, 103, 167); | ||||
| 
 | ||||
|   h3 { | ||||
|     margin-top: 4px; | ||||
|     margin-bottom: 0; | ||||
|   } | ||||
| 
 | ||||
|   ul { | ||||
|     margin-top: 4px; | ||||
|     padding-left: 0; | ||||
| 
 | ||||
|     h4 { | ||||
|       margin-top: 4px; | ||||
|       margin-bottom: 0; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| .article_header>h1, | ||||
| .page_header>h1 { | ||||
|   margin: 0.1rem; | ||||
|  |  | |||
|  | @ -22,8 +22,8 @@ permalink: /posts/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNumbe | |||
|         <span class="readtime">{{ entry.content | timeToRead }} to read</span> | ||||
|         <span class="middot"></span> | ||||
|         <span>by <span class="author by" id="author">{{ site.name }}</span></span> | ||||
|         <span class="middot"></span> | ||||
|         {% if entry.data.tags %} | ||||
|             <span class="middot"></span> | ||||
|             <span>in  | ||||
|                 {% for tag in entry.data.tags %} | ||||
|                     <span class="tag"><a href="/posts/tagged/{{ tag | slugify }}/">{{ tag }}</a></span>{% if not loop.last %}, {% endif %} | ||||
|  |  | |||
|  | @ -29,8 +29,8 @@ date: git Last Modified | |||
|           {% endif %} | ||||
|           <span class="middot"></span> | ||||
|           <span>by <span class="author by" id="author">{{ site.name }}</span></span> | ||||
|           <span class="middot"></span> | ||||
|           {% if entry.data.tags %} | ||||
|               <span class="middot"></span> | ||||
|               <span>in  | ||||
|                   {% for tag in entry.data.tags %} | ||||
|                       <span class="tag"><a href="/posts/tagged/{{ tag | slugify }}/">{{ tag }}</a></span>{% if not loop.last %}, {% endif %} | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue