Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/readeral/sanity-plugin-dashboard-widget-feed

A plugin for Sanity dashboard to render a feed of content.
https://github.com/readeral/sanity-plugin-dashboard-widget-feed

Last synced: 3 months ago
JSON representation

A plugin for Sanity dashboard to render a feed of content.

Awesome Lists containing this project

README

        

# Feed Widget for Sanity Dashboard

A dashboard widget based on the [Sanity tutorials widget](https://github.com/sanity-io/sanity/tree/next/packages/%40sanity/dashboard/src/widgets/sanityTutorials) with both React component and schemas included

## Install

- `cd` to your Content Studio
- Type `sanity install sanity-plugin-dashboard-widget-feed`:
- The widget will be installed to `./node_modules` in your Studio
- Ensure `dashboard-widget-feed` has been appended to the `plugins` array in the `sanity.json` file of your Studio

## How to configure the Feed Widget

In your dashboardConfig.js file ([see here for more about dashboardConfig](https://www.sanity.io/docs/dashboard/installing-and-configuring-widgets)) add the following in the widgets array:

```
{
name: 'feed-widget',
options: {options}
}
```

Where options is an object containing the configuration for the Feed Widget. A typical options object will look like this:

```
{
title: 'Media Feed',
queryString: '*[ _type == "feedItem"]',
clientConfig: {
projectId: 'y0urpr0j3ct1d',
dataset: 'production',
useCdn: true
}
}
```

| Field | Required | Description | Default value |
| -------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| `title` | Basically | This is the title displayed on the widget. | 'Media Feed' |
| `queryString` | no | This is what you're querying the sanity project for. The default (unset) value will query the included schema type of 'feedItem'. | \*[ _type == "feedItem"] |
| `clientConfig` | no | For setting an alternative sanity project or dataset to draw your feed from. _Note: useCdn can only be adjusted along with a projectId and dataset._ | projectId: current project, dataset: 'production', useCdn: true |

## The 'feedItem' schema

Most of the schema should be obvious, however there are a few sneaky features to be across.

### Image:

This is the image for your feed item. If you're rendering a video, then the image will be ignored unless you use the thumbnail option (see below)

### Link:

Link can be to any fully qualified url you like - however if your link is to a video from a number of sources (see below), then the component will automatically render a video player within the feed. In order to control this behaviour, there are a number of 'Video options' at the bottom of the editor:

- _Link out only_ - prevents the default behaviour of loading a video player, and provides a simple link out instead.
- _Load player only after clicking thumbnail_ - stops the video loading until you click. Great for a video-heavy feed. Will create it's own thumbnail, unless you provide an image (see above).
- _Show video player controls_ - should be self evident
- _Enable picture in picture option_ (non-functional/experimental) - **This will be functional in the next release, once Sanity implements React Hooks.** It will render a button in compatible browsers to enable picture in picture mode. Especially great for tutorial videos in which the viewer needs access to their Desk at the same time.
- _Autoplay_ - use with care, as this is set per video! Won't have an effect if you're using the thumbnail option.

#### Video sources which will result in a video player rendering:

- youtube
- facebook
- dailymotion
- soundcloud
- vimeo
- wistia
- mixcloud
- twitch

**These are supplied by [react-player](https://github.com/CookPete/react-player). Playing from file has not been implemented, but will be a future option. If you want to play a video from a different provider, then you'll need to make a pull-request against react-player, and then raise an issue in this library referencing that pull-request.**