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

@webbio/strapi-plugin-internal-links

v2.1.0

Published

A custom field for Strapi that can create internal links

Downloads

370

Readme

Strapi plugin internal-link

Features

  • 1 Adds a new custom field that can link to another entity within Strapi
  • 2 Points to a configurable slug field to generate a link
  • 3 Links are updated when the targeted entity changes

Installation

To install this plugin, you need to add an NPM dependency to your Strapi application.

# Using Yarn
yarn add @webbio/strapi-plugin-internal-links

# Or using NPM
npm install @webbio/strapi-plugin-internal-links

Configuration

./config/plugins.ts

export default ({ env }) => {
	// ...
	'internal-links': {
		enabled: true,
		config: {
			richTextEditorField: 'plugin::tiptap.tiptap' // configure which custom field is used to edit rich texts. By default 'plugin::tiptap.tiptap" will be used. 
			environment: 'test' // current environment which will affect the chosen domain,
			useSinglePageType: 'api::page.page', // Optional option to use a single page type like the page builder (without page builder options)
			defaultNoTitle: "undefined | boolean" // When enabled this will hide titles by default for the field
			enableUrlAddition: "undefined | boolean" // When enabled this will show an extra input for url additions. This text will be put at the end of the url. This can by used for url params.
			noUrlValidation: "undefined | boolean" // When enabled no url validation will happen on external url input.
			pageBuilder: {
				enabled: true, // When enabled, pageBuilder plugin logic is applied.
				pageUid: 'undefined | string',
				pathField: 'undefined | string',
				platformUid: 'undefined |string'
			},
			pageSearchOptions: {
				searchableFields: string[], // Determines what fields are searchable, default: ['title']
				subTitlePath: string // When set, a subtitle will be shown in the options, default: undefined
			}
			domains: {
				default: {
					test: 'https://webbio.nl',
					production: 'https://webbio.nl'
				}
			}
		}
	}
	// ...
});

Add the custom field with the content-type builder or directly to the JSON.

// ...
"fieldName": {
	"type": "customField",
	"customField": "plugin::internal-links.internal-link",
	"options": {
		"title": "title", // uses this field to show the targeted entity's title (defaults to 'title')
		"slug": "slug", // uses this field to link to the targeted entity (defaults to 'path' for pagebuilder options. 	otherwise will default to 'fullPath')
		"noTitle": boolean, // enable this to hide the title field
		"pageSearchOptions": {
			"searchableFields": string[],
			"subTitlePath": string
		},
		"externalApi": {
    "enabled": boolean,
    "apiUrl": string,
    "labelPath": string,
    "valuePath": string,
		"labelAdditionPath": string || null // adds a additional label to the label. it will be divided by a - for example: additional label - label
	},
	 	"externalApi": {
			"apiUrl": string || undefined  // adds an url for all places (is optional), if you want to overwrite it, you can do so in the settings of the specific link module
	}
}
// ...

Then, you'll need to build your admin panel:

# Using Yarn
yarn build

# Or using NPM
npm run build

external Source

The options of the internal link has a option in the contet-type builder to add an external source to the link module.

If the external API is enabled, all fields are required (you can't make if statement in the option thing to make it required) so fill it in.

internal-links settings page

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum nulla ex, maximus quis libero ut, aliquet tincidunt erat. Nulla ut eleifend est, non hendrerit ante. Duis convallis dui quam, quis vehicula sem pulvinar sed. Praesent sit amet lorem eleifend, rutrum mi et, efficitur dolor. Nullam ullamcorper, nisl ac vestibulum tincidunt, purus tellus bibendum ante, at bibendum dui tortor et lectus. Ut volutpat pellentesque aliquam. Nulla euismod nibh nec augue bibendum posuere. Integer tincidunt sagittis leo sed viverra. Ut urna lorem, consectetur sit amet volutpat ut, aliquet non nulla. Fusce varius nisi at nibh feugiat, nec porta justo porttitor. Vivamus eros arcu, congue et quam eu, finibus tincidunt justo. Proin nec tortor lectus. Duis at lectus neque. Duis rhoncus lorem sit amet est dignissim congue. Etiam mattis maximus urna sed euismod.