# Kreator treści
Domyślnie moduł ten znajduję się w projekcie CMS. Wykorzystywany jest w module Strony oraz Blog. Służy do tworzenia różnego rodzaju sekcji dla danego modelu. Rodzaje sekcji zostały przedstawione w rozdziale backendu modułu.
# Komponent ContentBuilder
Komponent src/modules/contentBuilder/components/form/VContentBuilder służy do zarządzania treściami za pomocą grup, sekcji (o różnych typach) oraz pozycji. Przykład można znaleźć dla modelu sharedSection: src/modules/contentBuilder/pages/sharedSections/SharedSectionCreatePage.
# Sekcje współdzielone
Jest to jeden z rodzajów sekcji, które można wcześniej zdefiniować i używać w pozostałych modułach. CRUD dla tego modelu znajduję się w src/modules/contentBuilder/pages/sharedSections.
# Custom Fields
W module ContentBuilder istnieje również możliwość zdefiniowania niestandardowych pól dla modeli o różnych typach. Domyślnie w CMS użyte są dla Stron. W komponencie PagePageCustomFields wczytywany jest komponent z konfiguracją pól dla danego typu.
# Przykład użycia dla strony głównej
PagePageHomeCustomFieldsField.vue
<script setup>
defineProps({
name: {
type: String,
default: "custom_fields",
},
});
</script>
<template>
<div class="row q-col-gutter-md">
<v-input
class="col-md-4 col-12"
:name="`${name}.title.content`"
:label="$t('labels.title')"
/>
<v-tiptap-editor
class="col-12"
:name="`${name}.description.content`"
:label="$t('labels.description')"
/>
<v-image-collection
:label="$t('labels.main_picture')"
:name-desktop="`${name}.image.media_files.image_desktop`"
:name-mobile="`${name}.image.media_files.image_mobile`"
class="col-sm-10 col-12"
/>
</div>
</template>
Funkcja getPagePageCustomFieldsInitialValues służy do wczytywania struktury obiektu dla pola custom_fields. Poniżej przykładowa konfiguracja na podstawie powyżej podanych pól.
import { PAGE_TYPE_HOME } from "modules/page/constants/page-types";
export function getPagePageCustomFieldsInitialValues(type, currentValues) {
switch (type) {
case PAGE_TYPE_HOME:
return {
title: getCustomFieldTextValue(currentValues?.title),
description: getCustomFieldTextValue(currentValues?.description),
image: getCustomFieldImageValue(currentValues?.image),
};
default:
return {};
}
}
TIP
getCustomFieldTextValue służy do wczytania obiektu z konfiguracją pola o typie text. Pozostałe funkcje można sprawdzić w src/modules/page/services/custom-fields.js
# Obsługiwane typy
- text
- text-image
- youtube
- header
- file
WARNING
Niestandardowe typy np. relacje z innymi modelami nie są tutaj obsłużone. W danym projekcie API powinno zostać tak przygotowane żeby zwracać potrzebne relacje.
← Media