All Projects → texnixe → kirby3-similar

texnixe / kirby3-similar

Licence: other
Find similar collection items based on similarity

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to kirby3-similar

kirby-minify-html
Enable minify HTML output for Kirby 3
Stars: ✭ 27 (+68.75%)
Mutual labels:  kirby-cms, kirby3, kirby3-plugin
reporter-for-kirby
Gather feedback directly out of the Panel!
Stars: ✭ 27 (+68.75%)
Mutual labels:  kirby3, kirby3-plugin
kirby3-bolt
Kirby 3 Plugin for a fast Page lookup even in big content trees
Stars: ✭ 24 (+50%)
Mutual labels:  kirby3, kirby3-plugin
kirby-securedpages
Protect pages for authenticated users
Stars: ✭ 28 (+75%)
Mutual labels:  kirby-cms, kirby3
k3-image-clip
Visually crop images with a handy image editor directly inside the panel
Stars: ✭ 38 (+137.5%)
Mutual labels:  kirby3, kirby3-plugin
k3-panel-view-extended
Quick fix for some missing features in the panel
Stars: ✭ 24 (+50%)
Mutual labels:  kirby3, kirby3-plugin
kirby3-instagram
Kirby 3 Plugin to call Instagram (or any other) API Endpoints
Stars: ✭ 20 (+25%)
Mutual labels:  kirby3, kirby3-plugin
kirby3-ray
Helper tool that enables ray on all the extendable methods.
Stars: ✭ 17 (+6.25%)
Mutual labels:  kirby3, kirby3-plugin
kirby-blade
Enable Laravel Blade Template Engine for Kirby 3
Stars: ✭ 20 (+25%)
Mutual labels:  kirby-cms, kirby3-plugin
laravel-mix-kirby
Laravel Mix helper for Kirby
Stars: ✭ 23 (+43.75%)
Mutual labels:  kirby-cms, kirby3
komments
A Kirby 3 comment plugin
Stars: ✭ 28 (+75%)
Mutual labels:  kirby3, kirby3-plugin
enhanced-toolbar-link-dialog
Enhanced Toolbar Link Dialog is a Kirby 3 plugin to handle internal links
Stars: ✭ 34 (+112.5%)
Mutual labels:  kirby-cms, kirby3-plugin
kirby3-redirects
Setup HTTP Status Code Redirects from within the Kirby Panel
Stars: ✭ 14 (-12.5%)
Mutual labels:  kirby3, kirby3-plugin
kirby3-doctor
Plugin to check health of your CMS installation
Stars: ✭ 19 (+18.75%)
Mutual labels:  kirby3, kirby3-plugin
vuekit
Kirby 3 + Vue.js kit
Stars: ✭ 16 (+0%)
Mutual labels:  kirby-cms, kirby3
kirby3-many-to-many-field
This plugin allows you to create many-to-many relationships between pages in Kirby and synchronizes them on both sides.
Stars: ✭ 38 (+137.5%)
Mutual labels:  kirby-cms, kirby3
kirby-helpsection
Panel view to display help for users.
Stars: ✭ 35 (+118.75%)
Mutual labels:  kirby-cms, kirby3-plugin
monochrome
A fully responsive Kirby CMS theme
Stars: ✭ 27 (+68.75%)
Mutual labels:  kirby-cms
kirby-html-minifier
Minify the html output of a site built with Kirby CMS
Stars: ✭ 20 (+25%)
Mutual labels:  kirby-cms
kirby-date-methods
Kirby 3 plugin providing field and page methods for formatting dates and creating PHP date objects
Stars: ✭ 13 (-18.75%)
Mutual labels:  kirby3-plugin

GitHub release License Kirby 3 Pluginkit

Kirby Similar

Find related pages or files. Kirby 3 Similar is a Kirby CMS plugin that lets you find items related to the current item based on the similarity between fields. For each given field, the plugin calculates the Jaccard Index and then weighs all indices based on the factor for each field.

Example use case: The current page has a tags field with three values (red, green, blue). You want to find all sibling pages with a minimum Jaccard Index of 0.3 (which possible values between 0 and 1).

Commercial Usage

This plugin is free but if you use it in a commercial project please consider

How is it different from the Kirby 3 Related plugin

  • It allows you to pass multiple fields as an array with a factor for each field, depending on the importance of this field for determining the similarity.
  • The similarity is calculated according to the Jaccard Index, rather than by the number of matches as in the Kirby 3 Related plugin.

A quick example that describes the difference:

Example 1:

Page A: blue, green Page B: blue, green

Matches: 2 Jaccard Index: 2/2 = 1

Example 2:

Page A: blue, green, yellow Page B: blue, green

Matches: 2 Jaccard Index: 2/3 = 0.66666

While both pages have the same number of matches, the Jaccard Index is lower in the second example, because the number of unique tags is taken into account as well.

Installation

Download

Download the files and place them inside site/plugins/kirby-similar.

Git Submodule

You can add the plugin as a Git submodule.

$ cd your/project/root
$ git submodule add https://github.com/texnixe/kirby3-similar.git site/plugins/kirby-similar
$ git submodule update --init --recursive
$ git commit -am "Add Kirby Similar plugin"

Run these commands to update the plugin:

$ cd your/project/root
$ git submodule foreach git checkout master
$ git submodule foreach git pull
$ git commit -am "Update submodules"
$ git submodule update --init --recursive

Usage

Similar pages

<?php

$similarPages = $page->similar($options);

foreach($similarPages as $p) {
  echo $p->title();
}

Similar files

<?php

$similarImages = $image->similar($options);

foreach($similarImages as $image) {
  echo $image->filename();
}

Options

You can pass an array of options:

<?php
$similarPages = $page->similar([
  'index' => $page->siblings(false)->listed(),
  'fields'         => 'tags',
  'threshold'      => 0.2,
  'delimiter'      => ',',
  'languageFilter' => false
]);
?>

index

The collection to search in. Default: $item->siblings(false) (The false argument excludes the current page from the collection)

fields

The name of the field to search in. Default: tags

Single field You can pass a single field as string:

'fields' => 'tags'

Multiple fields

You can also pass multiple fields as array:

'fields' => ['tags', 'size', 'category']

In this case, all fields get the same factor 1.

You can also pass an associative array with a factor for each field:

'fields' => ['tags' => 1, 'size' => 1.5, 'category' => 3]

You might want to change the factor of individual fields when filtering collections to get better result. For example, assign a higher factor dynamically if the filter parameter is set to size:

'fields' => ['tags' => 0.5, 'size' => 2, 'category' => 1]

delimiter

The delimiter that you use to separate values in a field Default: ,

threshold

The minimum Jaccard Index, i.e. a value between 0 (no similarity) and 1 (full similarity) Default: 0.1

languageFilter

Filter similar items by language in a multi-language installation. Default: false

License

Kirby 3 Similar is open-sourced software licensed under the MIT license.

Copyright © 2019 Sonja Broda [email protected] https://sonjabroda.com

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].