npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

strapi-plugin-preview-content

v1.3.1

Published

Preview your content with custom URL.

Downloads

285

Readme

Strapi - Preview Content Plugin

All Contributors

This plugin has been inspired by VirtusLab - strapi-molecules/strapi-plugin-preview

A plugin for Strapi Headless CMS that provides content preview to integrate with any frontend:

This is what the plugin looks like when editing content:

This is what the plugin looks like when we are in list view:

🖐 Requirements

Complete installation requirements are exact same as for Strapi itself and can be found in the documentation under Installation Requirements.

Supported Strapi versions:

  • Strapi v3.6.x only version v1.0.0
  • Strapi v3.4.x only version v0.2.76

We recommend always using the latest version of Strapi to start your new projects.

⏳ Installation

# npm
npm install strapi-plugin-preview-content

# yarn
yarn add strapi-plugin-preview-content

📁 Copy required files

Inside strapi-files we have a list of folders with the Strapi version, enter to the version that correspond with your installation, and you will see this files

Copy the folder named content-manager inside your <project-root>/extensions folder

👍 Active content type as previewable

To enable content type to be previewable and see preview, or clone entry, you've to add option previewable to true in a configuration json file (*.settings.json):

{
  "pluginOptions": {
+    "preview-content": {
+      "previewable": true
+    }
  }
}

🚀 Run your project

After successful installation you've to build a fresh package that includes plugin UI. To archive that simply use:

# npm
npm run build && npm run develop

# yarn
yarn build && yarn develop

✏️ Usage

Go to Settings > Preview Content

Base url

Here you can configure the base url of your frontend. This is a seperate field because it will be different depending on whether your project is running locally (e.g. http://localhost:3000) oder in production (e.g. https://your-site.com).

Default preview url

This is the default preview url the plugin uses for when your content type doesn't have its own url defined. For the default preview url there are three parameters provided by this plugin:

| Parameter | Description | |-----------------|-----------------------------------| | :baseUrl | See section above for explanation | | :contentType | The content type to query | | :id | The id of content to query |

For example in NextJS you can make use of serverless functions to make an URL like this:

:baseUrl/api/preview/:contentType/:id

With your base url being http://localhost:3000, for example.

And put the logic there to render content.

Custom preview url

You can also provide a custom url per content type in its *.settings.json. To do so, add this line to its options:

{
  "pluginOptions": {
    "preview-content": {
      "previewable": true,
+      "url": ":baseUrl/your-path/:contentType/:id?a-custom-param=true"
    }
  }
}

Here you can see how the base url comes in handy: You cannot change the model in production, but you can change the base url in the settings.

Adding data to the url

To tell the plugin to allow injection of an entry's data add the following to your model's *.settings.json:

{
  "pluginOptions": {
    "preview-content": {
      "previewable": true,
+      "url": ":baseUrl/your-path/:contentType/<%= slug %>?a-custom-param=<%= title %>",
+      "usesValuesInUrl": true
    }
  }
}

The plugin will now replace <%= slug %> and <%= title %> with the correct values. What you put in the brackets (<%= %>) has to be a name of the an attribute. The syntax used here is lodash's template syntax.

✨ Features

🛠 API

There are some functions that make all of this posible

| function | route | method | description | notes | | --------------- | ------------------------------- | ------ | ------------------------------------------------------------- | ------------------------------------------------------------------------------ | | isPreviewable | /is-previewable/:contentType | GET | Get if preview services is active in the current current type | | | findOne | /:contentType/:id | GET | Find a content type by id | You may want to active this route as public to make request from your frontend | | getPreviewUrl | /preview-url/:contentType/:id | GET | Get preview url of content type | |

Contributing

Feel free to fork and make a Pull Request to this plugin project. All the input is warmly welcome! To learn how, head here.

Community support

For general help using Strapi, please refer to the official Strapi documentation. For additional help, you can use one of these channels to ask a question:

  • Slack We're present on official Strapi slack workspace. Look for @danestves and DM.
  • GitHub (Bug reports, Contributions, Questions and Discussions)

License

MIT License Copyright (c) 2020 Daniel Esteves & Strapi Solutions.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!