web / lib/utils/slug
lib/utils/slug
Provides utility functions for generating and validating URL-friendly slugs.
This module contains helpers for creating unique, SEO-friendly slugs from a given string (like a title or name). It includes functionality to:
- Sanitize a string into a basic slug format.
- Check for the uniqueness of a slug within a specific collection to prevent duplicates.
- Generate a unique slug by appending a random suffix if a conflict is found.
- A factory function (
createSlugHook) to easily integrate this logic into Payload CMS collection field hooks.
Functions
generateSlug()
generateSlug(
text):string
Generates a basic slug from a string by:
- Converting to lowercase
- Replacing non-alphanumeric characters with hyphens
- Removing leading/trailing hyphens.
Parameters
text
string
Returns
string
generateUniqueSlug()
generateUniqueSlug<
T>(baseText,collection,req,currentId?):Promise<string>
Generates a unique slug by checking for existing slugs and appending random suffixes if needed.
Type Parameters
T
T extends "import-files" | "catalogs" | "datasets" | "dataset-schemas" | "import-jobs" | "scheduled-imports" | "events" | "users" | "user-usage" | "media" | "location-cache" | "geocoding-providers" | "pages" | "payload-jobs" | "payload-locked-documents" | "payload-preferences" | "payload-migrations"
Parameters
baseText
string
collection
T
req
PayloadRequest
currentId?
string | number
Returns
Promise<string>
createSlugHook()
createSlugHook<
T>(collection,options?): (__namedParameters) =>Promise<undefined|string>
Hook function to be used in Payload collection field hooks.
Type Parameters
T
T extends "import-files" | "catalogs" | "datasets" | "dataset-schemas" | "import-jobs" | "scheduled-imports" | "events" | "users" | "user-usage" | "media" | "location-cache" | "geocoding-providers" | "pages" | "payload-jobs" | "payload-locked-documents" | "payload-preferences" | "payload-migrations"
Parameters
collection
T
The collection name.
options?
Optional object with sourceField (dot notation).
sourceField?
string
Returns
(
__namedParameters):Promise<undefined|string>
Parameters
__namedParameters
value?
string
data?
Record<string, unknown>
req?
PayloadRequest
operation?
string
originalDoc?
Record<string, unknown>
Returns
Promise<undefined | string>