Website
Strony i formularze
Do czego służy
Hold the content of a public website: pages, menus, blog posts and the form submissions visitors send. This app stores and organises content; something else renders it. Publishing needs approval.
Co pakiet robi, a czego nie robi
Content for a public website: pages with a slug and a draft, published, archived flow, navigation menu items, blog posts with a byline and a publish date, translations of both, and the form submissions visitors send in. When the instance runs with the public site enabled it serves the published content to visitors as a server-rendered website with SEO and no login; only the fields marked public are ever visible to them. Publishing makes content public and needs a human approval, agents may only propose it. Senders are personal data and are never public.
Modele
website_page
A page of the website
Grupa odczytu: website.user. Grupa zapisu: website.user.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
title | text | none | nie | website.user | jawnie | Page title |
slug | text | none | nie | website.user | jawnie | URL path of the page without slashes at the ends, lowercase with dashes, for example about-us. The page with slug home is the front page |
body | longtext | none | nie | website.user | jawnie | Page content in Markdown (a safe subset: headings, lists, links, emphasis, code, quotes, tables) |
seo_title | text | none | nie | website.user | jawnie | Title shown in search results; empty means the page title |
seo_description | text | none | nie | website.user | jawnie | Description shown in search results |
published_on | date | none | nie | website.user | jawnie | Day the page went public (YYYY-MM-DD) |
state | select (draft, published, archived) | none | nie | website.user | jawnie | Page status: draft, published, archived |
website_menu_item
An entry of the site navigation
Grupa odczytu: website.user. Grupa zapisu: website.manager.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
label | text | none | nie | website.user | jawnie | Text shown in the menu |
url | text | none | nie | website.user | jawnie | Where the entry leads: a page slug starting with a slash or a full address |
parent_id | ref → website_menu_item | none | nie | website.user | jawnie | The entry this one is nested under; empty for a top-level entry |
sequence | number | none | nie | website.user | jawnie | Order among its siblings, lowest first |
visible | bool | none | nie | website.user | jawnie | Whether the entry is shown |
new_window | bool | none | nie | website.user | jawnie | Whether the link opens in a new window |
website_blog_post
A blog post
Grupa odczytu: website.user. Grupa zapisu: website.user.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
title | text | none | nie | website.user | jawnie | Post title |
slug | text | none | nie | website.user | jawnie | URL part of the post, lowercase with dashes |
author_name | text | public_directory | tak | website.user | zamaskowane | Name of the author, for the team's own records |
byline | text | none | nie | website.user | jawnie | Author line shown publicly, for example the team or brand name; use a name here only if the person agreed to it |
summary | text | none | nie | website.user | jawnie | Teaser shown in listings |
body | longtext | none | nie | website.user | jawnie | Post content in Markdown (a safe subset: headings, lists, links, emphasis, code, quotes, tables) |
tags | text | none | nie | website.user | jawnie | Comma-separated tags, for example news,product |
published_on | date | none | nie | website.user | jawnie | Day the post is dated (YYYY-MM-DD) |
state | select (draft, published, archived) | none | nie | website.user | jawnie | Post status: draft, published, archived |
website_form_submission
A message a visitor sent through a form on the site
Grupa odczytu: website.user. Grupa zapisu: website.user.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
form_name | text | none | nie | website.user | jawnie | Which form it came from, for example contact |
sender_name | text | internal | tak | website.user | zamaskowane | Name the visitor gave |
sender_email | text | internal | tak | website.user | zamaskowane | Email address the visitor gave |
sender_phone | text | internal | tak | website.user | zamaskowane | Phone number the visitor gave |
message | longtext | internal | tak | website.user | zamaskowane | What the visitor wrote |
source_page | text | none | nie | website.user | jawnie | Slug of the page the form was on |
submitted_on | date | none | nie | website.user | jawnie | Day of the submission (YYYY-MM-DD) |
consent_given | bool | none | nie | website.user | jawnie | Whether the visitor ticked the consent box for being contacted |
state | select (new, handled, spam) | none | nie | website.user | jawnie | Handling status: new, handled, spam |
website_page_translation
A page translated into another language; the public site shows it to visitors who read that language
Grupa odczytu: website.user. Grupa zapisu: website.user.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
page_id | ref → website_page | none | nie | website.user | jawnie | The page this translates |
lang | select (en, de, fr, pl, fi, sv, es) | none | nie | website.user | jawnie | Language of the translation: en, de, fr, pl, fi, sv or es |
title | text | none | nie | website.user | jawnie | Translated page title |
body | longtext | none | nie | website.user | jawnie | Translated page content in Markdown |
seo_title | text | none | nie | website.user | jawnie | Translated title shown in search results |
seo_description | text | none | nie | website.user | jawnie | Translated description shown in search results |
published | bool | none | nie | website.user | jawnie | Whether the translation is shown; it is only reachable while its page is published |
website_blog_post_translation
A blog post translated into another language
Grupa odczytu: website.user. Grupa zapisu: website.user.
| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
post_id | ref → website_blog_post | none | nie | website.user | jawnie | The post this translates |
lang | select (en, de, fr, pl, fi, sv, es) | none | nie | website.user | jawnie | Language of the translation: en, de, fr, pl, fi, sv or es |
title | text | none | nie | website.user | jawnie | Translated post title |
summary | text | none | nie | website.user | jawnie | Translated teaser |
body | longtext | none | nie | website.user | jawnie | Translated post content in Markdown |
published | bool | none | nie | website.user | jawnie | Whether the translation is shown; it is only reachable while its post is published |
Przepływy pracy
website_page
| Akcja | Przenosi | Kto może uruchomić | Zatwierdzenie |
|---|---|---|---|
website_page.publish | state: draft → published | website.manager | tak |
website_page.unpublish | state: published → draft | website.manager | nie |
website_page.archive | state: published → archived | website.manager | nie |
website_blog_post
| Akcja | Przenosi | Kto może uruchomić | Zatwierdzenie |
|---|---|---|---|
website_blog_post.publish | state: draft → published | website.manager | tak |
website_blog_post.unpublish | state: published → draft | website.manager | nie |
website_blog_post.archive | state: published → archived | website.manager | nie |
website_form_submission
| Akcja | Przenosi | Kto może uruchomić | Zatwierdzenie |
|---|---|---|---|
website_form_submission.handle | state: new → handled | website.user | nie |
website_form_submission.mark_spam | state: new → spam | website.user | nie |
Grupy uprawnień
Grupy używane przez tę aplikację:
website.managerwebsite.user
Kroki zatwierdzania
Kroki, które agent może tylko zaproponować:
website_page.publishwebsite_blog_post.publish
Co agenci mogą, a czego nie mogą
Agent może odczytywać, wyszukiwać, tworzyć i aktualizować rekordy tej aplikacji oraz uruchamiać akcje niewymagające zatwierdzenia, w ramach grup uprawnień swojego tokenu.
Te kroki może tylko zaproponować, a człowiek musi je zatwierdzić: website_page.publish, website_blog_post.publish, website_page.delete, website_menu_item.delete, website_blog_post.delete, website_form_submission.delete, website_page_translation.delete, website_blog_post_translation.delete.
Dane osobowe są maskowane jako tokeny zastępcze: website_blog_post.author_name, website_form_submission.sender_name, website_form_submission.sender_email, website_form_submission.sender_phone, website_form_submission.message.
Zależności
Brak.
Instalacja
Zainstaluj ją w aplikacji Customize (Marketplace) lub z wiersza poleceń:
obop modules install-from websiteWymaga bazy danych i uprawnień administratora.
Zbuduj własną
Przewodnik po modułach pokazuje, jak pisze się takie aplikacje