diff --git a/packages/core/server/config.ts b/packages/core/server/config.ts index 4f225e07..922cd5c9 100644 --- a/packages/core/server/config.ts +++ b/packages/core/server/config.ts @@ -1,6 +1,11 @@ +import deburr from 'lodash/deburr'; +import toLower from 'lodash/toLower'; +import kebabCase from 'lodash/kebabCase'; + export interface Config { website_url: string; default_pattern: string, + slugify: (fieldValue: string) => string } const config: { @@ -10,6 +15,7 @@ const config: { default: { website_url: null, default_pattern: '/[pluralName]/[documentId]', + slugify: (fieldValue) => kebabCase(deburr(toLower(fieldValue))), }, validator() {}, }; diff --git a/packages/core/server/services/url-pattern.ts b/packages/core/server/services/url-pattern.ts index efce5e97..f26888b8 100644 --- a/packages/core/server/services/url-pattern.ts +++ b/packages/core/server/services/url-pattern.ts @@ -1,9 +1,7 @@ import { factories, Schema, UID } from '@strapi/strapi'; -import deburr from 'lodash/deburr'; -import toLower from 'lodash/toLower'; -import kebabCase from 'lodash/kebabCase'; import { getPluginService } from '../util/getPluginService'; import { typedEntries } from '../util/typeHelpers'; +import { Config } from '../config'; const contentTypeSlug = 'plugin::webtools.url-pattern'; @@ -171,8 +169,8 @@ const customServices = () => ({ resolvedPattern = resolvedPattern.replace(`[${field}]`, fieldValue || ''); } else if (!relationalField) { - // Slugify the field value - const fieldValue = kebabCase(deburr(toLower(String(entity[field])))); + const { slugify } = strapi.config.get('plugin::webtools'); + const fieldValue = slugify(String(entity[field])); resolvedPattern = resolvedPattern.replace(`[${field}]`, fieldValue || ''); } else if (Array.isArray(entity[relationalField[0]])) { strapi.log.error('Something went wrong whilst resolving the pattern.');