texnixe/related

Fetch related pages or files based on the values of a given field

Installs: 93

Dependents: 0

Suggesters: 0

Security: 0

Stars: 23

Watchers: 1

Forks: 2

Open Issues: 2

Type:kirby-plugin

1.0.2 2021-01-26 19:13 UTC

This package is auto-updated.

Last update: 2024-10-20 02:36:30 UTC


README

GitHub release License Kirby 3 Pluginkit

Kirby Related

Kirby 3 Related is a Kirby CMS plugin that lets you fetch pages or files related to the current page/file based on matching values in a given field. The resulting collection is sorted by number of matches as an indicator of relevance.

Example: The current page has a tags field with three values (red, green, blue). You want to find all sibling pages with at least 2 matching tag values.

Commercial Usage

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

Installation

Download

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

Git Submodule

You can add the plugin as a Git submodule.

$ cd your/project/root
$ git submodule add https://github.com/texnixe/kirby3-related.git site/plugins/kirby-related
$ git submodule update --init --recursive
$ git commit -am "Add Kirby Related 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

Related pages

<?php

$relatedPages = $page->related($options);

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

Related files

<?php

$relatedImages = $image->related($options);

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

Config options

You can set the cache to true or false using the texnixe.related.cache option.

return [
  'texnixe.related.cache' => true
];

Options

You can pass an array of options:

<?php
$relatedPages = $page->related(array(
  'searchCollection' => $page->siblings()->visible(),
  'searchField'      => 'tags',
  'matches'          => 2,
  'delimiter'        => ',',
  'languageFilter'   => false
  ));
?>

searchCollection

The pages collection to search in. Default: $page->siblings()

searchField

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

delimiter

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

matches

The minimum number of values that should match. Default: 1

languageFilter

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

Disclaimer

This plugin is provided "as is" with no guarantee. Use it at your own risk and always test it yourself before using it in a production environment. If you encounter any problem, please create an issue.

License

MIT

It is discouraged to use this plugin in any project that promotes racism, sexism, homophobia, animal abuse, violence or any other form of hate speech.