sunlab / wn-updown-plugin
Plugin for WinterCMS that allows your users to up/down-vote any models
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 1
Type:winter-plugin
Requires
- php: >=7.0
- composer/installers: ~1.0
- winter/wn-user-plugin: ^2.0
This package is auto-updated.
Last update: 2024-11-29 06:41:13 UTC
README
UpDown feature on any model. Easily.
A tiny demo, based on two distinct model: Winter\Forum\Models\Post
and a custom plugin's Comment model.
UpDown.-.demo.mp4
Composer installation
composer require sunlab/wn-updown-plugin
Requirements
This plugin requires the Winter.User Plugin.
Usage guide - Example with Winter.Blog Post
model
1. First step, extend the model
To use the up/down feature on a model,
you need to add the Votable
behavior to the model(s) you want:
class Plugin extends PluginBase { public function boot() { \Winter\Blog\Models\Post::extend(static function ($post) { $post->implement[] = \SunLab\UpDown\Behaviors\Votable::class; }); } }
2. Second step, add the component to the page
Then, you need to add the upDown
component on a blog post page or blog post list page:
title = "Blog" url = "/blog/:page?" layout = "default" description = "The main blog page, with all posts." hidden = "0" [blogPosts] pageNumber = "{{ :page }}" postsPerPage = "10" noPostsMessage = "No posts found" sortOrder = "published_at desc" categoryPage = "blog/category" postPage = "blog/post" [upDown] == {% component 'blogPosts' %}
3. Third step, add the same component multiple times
Then, inside the override of the blogPosts
partial,
add the upDown
component inside the loop and
use component's dynamic properties
to initialize the component with the current post:
{# Loop over the blog posts #} {% for post in posts %} {# For each post, displays the upDown component #} {% component 'upDown' votable=post %} {% partial "blog/post" post=post %} {% endfor %}