Giter Club home page Giter Club logo

strapi-plugin-publisher's Introduction

strapi-plugin-publisher

A plugin for Strapi that provides the ability to easily schedule publishing and unpublishing of any content type.

Downloads Install size Package version

Requirements

The installation requirements are the same as Strapi itself and can be found in the documentation on the Quick Start page in the Prerequisites info card.

Supported Strapi versions

  • v4.x.x

NOTE: While this plugin may work with the older Strapi versions, they are not supported, it is always recommended to use the latest version of Strapi.

Installation

npm install strapi-plugin-publisher

or

yarn add strapi-plugin-publisher

Configuration

Enable the plugin

The plugin configuration is stored in a config file located at ./config/plugins.js. If this file doesn't exists, you will need to create it.

A sample configuration

module.exports = ({ env }) => ({
  // ..
	'publisher': {
		enabled: true,
		config: {
			hooks: {
				beforePublish: async ({ strapi, uid, entity }) => {
					console.log('beforePublish');
				},
				afterPublish: async ({ strapi, uid, entity }) => {
					console.log('afterPublish');
				},
				beforeUnpublish: async ({ strapi, uid, entity }) => {
					console.log('beforeUnpublish');
				},
				afterUnpublish: async ({ strapi, uid, entity }) => {
					console.log('afterUnpublish');
				},
			},
		},
	},
	// ..
});

The Complete Plugin Configuration Object

Property Description Type Default Required
actions Settings associated with any actions. Object {} No
actions.syncFrequency The frequency to check for actions to run. It is a cron expression String '*/1 * * * *' No
components Settings associated with any of the plugins components Object {} No
components.dateTimePicker Settings associated with the DateTimePicker component used to set action times Object {} No
components.dateTimePicker.step The step between the numbers displayed for the time section of the DateTimePicker Number 1 No
components.dateTimePicker.locale Allows to enforce another locale to change the date layout String browser locale No
hooks.beforePublish An async function that runs before a content type is published Function () => {} No
hooks.afterPublish An async function that runs after a content type is published Function () => {} No
hooks.beforeUnpublish An async function that runs before a content type is un-published Function () => {} No
hooks.afterUnpublish An async function that runs after a content type is un-published Function () => {} No
contentTypes A list of content type uids where the publish actions should be displayed Array All content types No

Enable server cron

The cron.enabled configuration option needs to be set to true in Server Configuration for the plugin to work.

Usage

Once the plugin has been installed, configured and enabled a Publisher section will be added to the informations section of the edit view for all content types (single + collection) that have draftAndPublish enabled. The Publisher section will provide the ability to schedule publishing and unpublishing of the content type. The content type publication status is checked every minute.

If the Publisher section does not appear in the admin after the plugin is enabled then a clean rebuild of the admin is required. This can be done by deleting the generated .cache and build folders and then re-running the develop command.

Single Content Type

Sample single content type publisher section

Collection Content Type

Sample collection content type publisher section

Adding a (un)publish date

Navigate to the entity record that should be (un)published, under the informations section click the Add a (un)publish date button. Enter in the date and click save, the entity record will then be (un)published at the specified time.

default

Add a (un)publish date

Editing a (un)publish date

Navigate to the entity record that requires its date changed, under the informations section click the Edit (un)publish date button. Enter in the new date and click save.

Edit a (un)publish date

Deleting a (un)publish date

Navigate to the entity record that contains the date that should be removed, under the informations section click the Delete (un)publish date button.

Delete a (un)publish date

Bugs

If any bugs are found please report them as a Github Issue

strapi-plugin-publisher's People

Contributors

comfortablycoding avatar cpaczek avatar flashtheplayer avatar jfmontanaro avatar alikdhim87 avatar dmeijboom avatar gautierdele avatar marob avatar rubek-joshi avatar ruisaraiva19 avatar tasosbak avatar denys-isaichenko avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.