diff --git a/docs/content_model.md b/docs/content_model.md index 913e8bb9..f6769f62 100644 --- a/docs/content_model.md +++ b/docs/content_model.md @@ -1,10 +1,10 @@ # Content Model -At the heart of eZ Platform is a repository that stores all content. -In eZ Platform everything is a Content item — not just the actual pages displayed in the website, +At the heart of [[= product_name_oss =]] is a repository that stores all content. +In [[= product_name_oss =]] everything is a Content item — not just the actual pages displayed in the website, but also all media (images, videos, etc.) and User accounts. -eZ Platform lets you customize and adapt the content model depending on your needs and the type of website you create. +[[= product_name_oss =]] lets you customize and adapt the content model depending on your needs and the type of website you create. Depending on your organization, if you are an editor or a content creator, it is possible that the content model for your installation has already been created by your administrator or content manager. @@ -18,12 +18,9 @@ Whenever you create a new Content item, you must choose its Content Type. The Content Type defines what Fields will be available in the Content item. A Content item may only contain the Fields that are defined in the Content Type. -eZ Platform allows you to create, edit, and delete Content Types and their Fields. +[[= product_name_oss =]] allows you to create, edit, and delete Content Types and their Fields. A clean installation contains a few basic Content Types. -To see what a larger set of Content Types and their Fields looks like in practice, you can take a look at the Demo Bundle. -[Demo is a separate Enterprise installation with a sample website](https://github.com/ezsystems/ezplatform-ee-demo) in which you can preview different features of eZ Platform. - ## Content items A **Content item** is a single piece of content: an article, a blog post, an image, a product, etc. @@ -72,7 +69,7 @@ e.g. Text line, Rich text, Email, Author list, Content relation, Map location, F **Fields and Field Types:** -- eZ Platform comes with a collection of essential Field Types. +- [[= product_name_oss =]] comes with a collection of essential Field Types. - It is possible to extend the system by creating custom Field Types for special needs. ## Content and media @@ -89,7 +86,7 @@ They represent three categories of Content Types that you can create ### Content browser -During your work with eZ Platform you might need to select content from the Repository. +During your work with [[= product_name_oss =]] you might need to select content from the Repository. This happens for example when you want to move or copy a Content item, embed an image, link two Content items, etc. In such cases you use the **Content Browser**. diff --git a/docs/creating_content_advanced.md b/docs/creating_content_advanced.md index 149cee43..7340a9d7 100644 --- a/docs/creating_content_advanced.md +++ b/docs/creating_content_advanced.md @@ -48,7 +48,7 @@ or different language versions to visitors from different countries. See [Site Factory](site_organization/site_factory.md) for more information about setting up sites. -!!! enterprise +!!! dxp ## Forms diff --git a/docs/creating_content_basic.md b/docs/creating_content_basic.md index 3bb8792e..4dff19aa 100644 --- a/docs/creating_content_basic.md +++ b/docs/creating_content_basic.md @@ -6,19 +6,19 @@ There are four ways of creating a new Content item: 1. Click **Create** in the right menu while viewing any other content. The new item appears under the current Content item in the tree. -1. Click **Create** in the upper-right corner of the Dashboard. -In this case you have to select where the content will be located. -1. Click the **Create** (plus) icon in the *Content Browser*. +1. Click the **Create** (plus) icon when you *Browse content*. Here also you have to choose a location for the new item. +1. Click **Create** in the upper-right corner of the **My dashboard** screen. +In this case you have to select where the content will be located. 1. Drag files onto the **Sub-items** box when viewing any content or click the upload button and select files to upload. In this way you can upload files such as images, videos, PDF documents, etc. If you choose the first three options, you have to select the Content Type first. When uploading files, the Content Type will be chosen automatically. -!!! enterprise +!!! dxp - If you are using eZ Enterprise Edition, + If you are using [[= product_name_ee =]], you will have the *Page* Content Type available for selection. Pages are edited in the Page Builder, see [working with Page](working_with_page.md) section. @@ -31,6 +31,11 @@ Some Fields, such as *Relation* Fields (which link two Content items), or *Image require you to select a different Content item to link to. A *Location* Field is a point on the map. You can type the place name, enter its coordinates, or select it on the map. +!!! note "Autosave" + + To help you preserve your work, [[= product_name_oss =]] saves drafts of Content items automatically. + For more information, see [Autosave](publishing/publishing.md#autosave). + ### Editing Rich Text Fields Rich Text Fields are filled in using a special Online Editor. Its options appear when you click the Field box. diff --git a/docs/css/custom.css b/docs/css/custom.css index a773a948..8e49b71a 100644 --- a/docs/css/custom.css +++ b/docs/css/custom.css @@ -1,24 +1,75 @@ +:root { + --ibexa-orange: rgb(255,71,19); + --ibexa-red: rgb(219,0,50); + --ibexa-jazzberry: rgb(174,17,100); + --ibexa-dusk-black: rgb(19,28,38); + --ibexa-snow: rgb(224,224,232); + --black: rgb(0,0,0); + --white: rgb(255,255,255); + --warm-stone: rgb(236,223,209); + --turquoise-pearl: rgb(71,190,219); + --yellow-orange: rgb(252,174,66); + --apricot: rgb(241,138,107); + --sherpa-blue: rgb(0,77,93); + + + --caution-border: var(--ibexa-orange); + --note-border: rgb(201,201,208); + --enterprise-border: var(--ibexa-jazzberry); + + --codeblock: rgb(89,96,103); + --inline-code: rgb(242,242,245); + --table-header: rgb(89,96,103); + --code-highlight: rgb(253,230,198); + + --link: rgb(56,152,175); +} + +@font-face { + font-family: "Noto Sans"; + src: url("../fonts/Noto_Sans/NotoSans-Regular.ttf") format("truetype"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Work Sans"; + src: url("../fonts/Work_Sans/WorkSans-Regular.ttf") format("truetype"); + font-weight: normal; + font-style: normal; +} + body, input { - font-family: "Maven Pro", sans-serif; - color: #63605d; + font-family: "Noto Sans", sans-serif; + color: var(--ibexa-dusk-black); } body { -webkit-font-smoothing: initial; } +@media (min-width: 1600px) { + .md-grid { + max-width: 1600px; + } + + .md-sidebar--secondary { + margin-left: 1600px + } + + [dir=rtl] .md-sidebar--secondary { + margin-right: 1600px; + } +} + .md-typeset { font-size: 16px; line-height: 1.5; -webkit-print-color-adjust: exact; } -.md-typeset a { - color: #2a9dc7; -} - .md-typeset a:hover { - color: #f15a22; + color: var(--ibexa-orange); } .md-nav__title { @@ -27,7 +78,7 @@ body { font-weight: 700; text-overflow: ellipsis; overflow: hidden; - color: #f15a22; + color: var(--ibexa-orange); } .md-nav__heading { @@ -35,7 +86,11 @@ body { } .md-nav__link:hover { - color: #f15a22; + color: var(--ibexa-orange); +} + +.md-nav__link::after { + font-weight: 700; } .md-nav--secondary { @@ -45,23 +100,26 @@ body { padding-bottom: 10px; } -.md-nav__item--nested>.md-nav__link { - color: inherit; - font-weight: 600; +.md-nav__item { + padding: 0 1.75rem; } .md-nav--primary > .md-nav__list > .md-nav__item:first-of-type { font-weight: 700; - color: #f15a22; + color: var(--ibexa-orange); } .md-header-nav__button { padding: .5rem; } -.md-logo img { - width: 32px; - height: 32px; +.md-sidebar__inner { + font-family: "Work Sans", sans-serif; +} + +.md-logo { + margin-top: 0; + padding-top: .2rem; } @@ -69,12 +127,12 @@ body { [data-md-color-primary=blue-grey] .md-header, [data-md-color-primary=blue-grey] .md-hero { - background-color: #0f6d95; + background-color: var(--ibexa-dusk-black); color: #fff; } [data-md-color-primary=blue-grey] .md-typeset a { - color: #2a9dc7; + color: var(--link); } [data-md-color-primary=blue-grey] .md-typeset th a { @@ -89,54 +147,35 @@ body { [data-md-color-accent=deep-orange] .md-typeset .md-clipboard:hover:before, [data-md-color-accent=deep-orange] .md-typeset [id] .headerlink:focus, [data-md-color-accent=deep-orange] .md-typeset [id]:hover .headerlink:hover, -[data-md-color-accent=deep-orange] .md-typeset [id]:target .headerlink +[data-md-color-accent=deep-orange] .md-typeset [id]:target .headerlink, +html .md-footer-meta.md-typeset a:hover { - color: #f15a22; + color: var(--ibexa-orange); } [data-md-color-primary=blue-grey] .md-typeset .md-icon { color: rgba(0,0,0,.26); } -.md-typeset code, .md-typeset pre { - color: #2b2b2b; -} +/* Headings */ -.md-typeset .codehilite code, .md-typeset .codehilite pre { - background-color: #fff; - padding: 0; -} - -.md-typeset .codehilite code, .md-typeset .codehilite pre code { - padding: 1.05rem 1.2rem; -} - -.md-typeset .codehilitetable { - border: 1px solid #999; -} - -.md-typeset .codehilite pre code::-webkit-scrollbar { - height: 10px; +.md-typeset h1, .md-typeset h2, .md-typeset h3, .md-typeset h4, .md-typeset h5, .md-typeset h6 { + font-family: "Work Sans", sans-serif; + color: var(--ibexa-dusk-black); + line-height: 1; } .md-typeset h1 { margin: 0 0 1rem; - color: #f15a22; - font-size: 34px; - line-height: 1; - font-weight: 500; + font-size: 42px; } .md-typeset h2 { font-size: 34px; - font-weight: 500; - line-height: 1; } .md-typeset h3 { - font-size: 28px; - font-weight: 500; - line-height: 1; + font-size: 26px; } .md-typeset h4 { @@ -152,150 +191,214 @@ body { font-size: 18px; } -.md-typeset h2, .md-typeset h3, .md-typeset h4, .md-typeset h5, .md-typeset h6 { - color: #63605d; +.md-typeset h1, .md-typeset h2, .md-typeset h3, .md-typeset h4, .md-typeset h5, .md-typeset h6 { + font-weight: 600; } -.md-typeset h2, .md-typeset h3, .md-typeset h4 { - font-weight: 500; +.md-footer-meta { + background: #fff; } -.md-typeset h5, .md-typeset h6 { - font-weight: 600; +.md-footer-nav { + background-color: #fff; + border-top: 1px solid #e0e0e8; } -.md-footer-meta { - background: #0c5777; +.md-footer-nav, .md-footer-nav__direction { + color: var(--ibexa-dusk-black); } -.md-footer-nav { - background-color: #0f6d95; - color: #fff; - margin-top: 50px; +.md-footer-nav span:hover { + color: var(--ibexa-orange); +} + +.md-footer-copyright, .md-footer-copyright__highlight { + color: var(--ibexa-dusk-black); +} + +html .md-footer-meta.md-typeset a { + color: var(--link); } .md-icon--home { padding: .5rem; } -.md-typeset .admonition, .md-typeset details { +/* Admonitions */ + +.md-typeset details { font-size: 16px; + box-shadow: none; } -.admonition.enterprise .admonition-title:before { - content: ""; +.md-typeset details { + border: .4rem solid; } +/* DXP */ + +.admonition.dxp .admonition-title, .admonition.enterprise .admonition-title { padding-left: 1.2rem; } -.admonition.enterprise .admonition>.admonition-title { +.admonition .admonition>.admonition-title { padding-left: 3.8rem; } -.admonition.enterprise { - border-left-color: #f15a22; +.admonition.dxp, .admonition.dxp>.admonition-title, +.admonition.enterprise, .admonition.enterprise>.admonition-title { + border-color: var(--enterprise-border); background-color: #ffffff; } -.admonition.enterprise>.admonition-title { - background-color: #fcded2; +/* Caution */ + +.md-typeset .admonition.caution, .md-typeset .admonition.caution>.admonition-title { + border-color: var(--caution-border); +} + +.md-typeset .admonition.caution>.admonition-title:before { + color: var(--caution-border); } -.admonition.cloud .admonition-title:before { +/* Note, tip and expand box */ + +.md-typeset .admonition.tip, +.md-typeset .admonition.tip>.admonition-title, +.md-typeset .admonition.note, +.md-typeset .admonition.note>.admonition-title, +.md-typeset details.tip, .md-typeset details.note +{ + border-color: var(--note-border); +} + +.md-typeset .admonition.dxp>.admonition-title:before, .md-typeset .admonition.enterprise>.admonition-title:before { content: ""; } -.admonition.cloud .admonition-title { - padding-left: 1.2rem; +.md-typeset .admonition.tip>.admonition-title:before, .md-typeset details.tip>summary:before { + content: "lightbulb_outline"; } -.admonition.cloud .admonition>.admonition-title { - padding-left: 3.8rem; +.md-typeset .admonition.tip>.admonition-title:before, .md-typeset details.tip>summary:before, +.md-typeset .admonition.note>.admonition-title:before, .md-typeset details.note>summary:before { + color: var(--ibexa-dusk-black); } -.admonition.cloud { - border-left-color: #51B6A4; +/* General admonitions */ + +.md-typeset .admonition.caution>.admonition-title, .md-typeset .admonition.note>.admonition-title, +.md-typeset .admonition.tip>.admonition-title, .md-typeset .admonition.dxp>.admonition-title, +.md-typeset .admonition.enterprise>.admonition-title, +.md-typeset details.tip, .md-typeset details.tip>summary, +.md-typeset details.note, .md-typeset details.note>summary { background-color: #ffffff; } -.admonition.cloud>.admonition-title { - background-color: #b9e8df; +.md-typeset .admonition { + font-size: 16px; + box-shadow: none; } -.md-typeset .admonition.caution { - border-left-color: #f46485; +.admonition { + border: .4rem solid; } -.md-typeset .admonition.caution>.admonition-title { - background-color: #fcd2dc; +.bootstrap-iso .admonition p { + margin-top: 1em; } -.md-typeset .admonition.caution>.admonition-title:before { - color: #f46485; +/* Fix scrollbar in admonitions when containing a table */ +.md-typeset .admonition .md-typeset__scrollwrap { + margin-right: 0; } -.md-typeset .admonition.tip, .md-typeset details.tip { - border-left-color: #6ed28a; +/* Code highlighting */ + +.md-typeset code, .md-typeset pre { + color: var(--ibexa-dusk-black); } -.md-typeset .admonition.tip>.admonition-title, .md-typeset details.tip>summary { - background-color: #d5f2dd; +.md-typeset .codehilite code, .md-typeset .codehilite pre { + background-color: #fff; + padding: 0; } -.md-typeset .admonition.tip>.admonition-title:before, .md-typeset details.tip>summary:before { - color: #6ed28a; - content: "lightbulb_outline"; +.md-typeset .codehilite code, .md-typeset .codehilite pre code { + padding: 1.05rem 1.2rem; } -.md-typeset .admonition.note, .md-typeset details.note { - border-left-color: #4ec7f3; +.md-typeset .codehilitetable { + border: 1px solid var(--codeblock); } -.md-typeset .admonition.note>.admonition-title, .md-typeset details.note>summary { - background-color: #c9eefb; +/* Code block scrollbar */ + +.md-typeset .codehilite pre code::-webkit-scrollbar { + height: 10px; } -.md-typeset .admonition.note>.admonition-title:before, .md-typeset details.note>summary:before { - color: #4ec7f3; +.md-typeset .codehilite pre code::-webkit-scrollbar-track { + background-color: var(--ibexa-snow); } -.bootstrap-iso .admonition p { - margin-top: 1em; +.md-typeset .codehilite pre code::-webkit-scrollbar-thumb { + background: var(--codeblock); } .md-typeset .codehilitetable .linenos { - background-color: #c0c0c0; + background-color: var(--codeblock); color: #fff; } +.md-typeset .codehilitetable .linenodiv { + padding: 1.05rem 1.2rem +} + .md-typeset .codehilite, .md-typeset .highlight pre { - background-color: #f8f8f8; + background-color: var(--inline-code); } .md-typeset code { - background-color: #ededed; - padding: 1px 4px; - margin: 0; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.125); - color: #2b2b2b; + background-color: var(--inline-code); + padding: 1px 2px; + margin: 3px; + box-shadow: none; font-family: monospace; } .codehilite .hll { - background-color: #faecbc; + background-color: var(--code-highlight); +} + +/* Tables */ + +.md-typeset table:not([class]) { + border: 1px solid var(--table-header); + box-shadow: none; +} + +.md-typeset table:not([class]) th { + background-color: var(--table-header); } .md-nav__link[data-md-state=blur] { - color: rgba(0, 0, 0, 0.36); + color: rgb(19, 28, 38); } div.rst-versions { width: 250px; border-top: 0; - background: #3a3b3c; + background: var(--ibexa-dusk-black); font-size: 10pt; + padding-top: 6px; + position: relative; +} + +.rst-versions span.rst-current-version { + background-color: rgb(66,73,81); + height: 3.6rem; } .rst-versions div.rst-other-versions { @@ -326,7 +429,8 @@ a.external:after { padding: 0 3px; } -.md-nav__link--active { +[data-md-color-primary=blue-grey] .md-nav__link--active { + color: var(--ibexa-dusk-black); font-weight: 700; } @@ -346,6 +450,22 @@ a.external:after { box-sizing: border-box; } +.md-search__input { + background-color: rgb(66,73,81); +} + +.md-search__input::placeholder, .md-search__input:-ms-input-placeholder { + color: var(--white); +} + +.md-search__input:hover { + background-color: rgb(84,91,98); +} + +.md-search__icon { + color: var(--white); +} + .ds-dataset-1 { max-height: calc(100vh - 5.5rem); } @@ -355,10 +475,6 @@ a.external:after { box-sizing: border-box; } -.md-search__icon { - z-index: 0; -} - /* Image enlagement Modal */ #imageModal { display: none; @@ -399,6 +515,22 @@ a.external:after { cursor: pointer; } +/* UI guidelines */ + +.ez-code-example { + padding: 1.5rem; + border-width: .2rem; + border: solid #f8f9fa; + border-bottom: 0; +} + +.ez-code-example + .codehilitetable { + padding-top: 0; + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + .injected { display: none; } @@ -427,7 +559,7 @@ a.external:after { display: none; order: 99; width: 100%; - border: 1px solid #dee2e6; + border: 1px solid var(--ibexa-snow); padding: 4px 4px 4px 1rem; border-radius: 0 .2rem .2rem .2rem; } @@ -437,8 +569,8 @@ a.external:after { /* margin: 0 0.5em 0 0; */ padding: 0.25em 1rem; cursor: pointer; - border: 1px solid #dee2e6; - border-bottom: 2px solid #dee2e6; + border: 1px solid var(--ibexa-snow); + border-bottom: 2px solid var(--ibexa-snow); border-radius: 4px 4px 0 0; } @@ -453,11 +585,15 @@ a.external:after { } .tabbed-set input:nth-child(n+1):checked + label { - color: #f15a22; + color: var(--ibexa-orange); font-weight: 700; - border-bottom: 4px solid #f15a22; + border-bottom: 4px solid var(--ibexa-orange); } .tabbed-set input:nth-child(n+1):checked + label + .tabbed-content { display: block; } + +.github-icon { + padding: 1rem; +} diff --git a/docs/css/docs.switcher.css b/docs/css/docs.switcher.css index 8865b60a..34570737 100644 --- a/docs/css/docs.switcher.css +++ b/docs/css/docs.switcher.css @@ -22,12 +22,12 @@ border-style: solid; border-width: 8px 6px 0 6px; border-color: #fff transparent transparent transparent; - transform: rotate(180deg); - transition: transform .2s cubic-bezier(0.25, 0.8, 0.25, 1); + transition: transform .4s,-webkit-transform .4s; } .ez-docs-switcher__selected-item--expanded:after { - transform: rotate(0); + transform: rotateX(180deg); + transition: transform .4s,-webkit-transform .4s; } .ez-docs-switcher__list { diff --git a/docs/faq.md b/docs/faq.md index 84751577..6fab666c 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -4,15 +4,15 @@ ### Product -**What is the difference between eZ Platform and eZ Enterprise Edition?** +**What is the difference between [[= product_name_oss =]] and [[= product_name_ee =]]?** -eZ Platform is open-source. eZ Enterprise bases on eZ Platform, but features new functionalities. +[[= product_name_oss =]] is open-source. [[= product_name_ee =]] bases on [[= product_name_oss =]], but features new functionalities. **Which parts of eZ are open source and which are commercial?** -eZ Platform is fully open-source and available at [GitHub](https://github.com/ezsystems/ezplatform). +[[= product_name_oss =]] is fully open-source and available at [GitHub](https://github.com/ezsystems/ezplatform). -eZ Enterprise is a commercial solution. +[[= product_name_ee =]] is a commercial solution. **What technologies do I need to know to use eZ?** @@ -20,12 +20,6 @@ If you are using eZ as an editor or content manager, you do not need to have any Installing and configuring eZ requires at least basic familiarity with web development. Some more advanced customization possibilities may require programming skills (such as knowledge of PHP or Twig). -**What is Demo Bundle?** - -Demo Bundle is a sample website you can get with your installation of eZ. There are two different Demo Bundles: one for eZ Platform and one for eZ Enterprise. - -The Bundle contains a small number of initial preset Content Types. You can apply them directly to your website or use them as a starting point to create your own Content Types. - **What are the technical requirements for installing eZ?** See [requirements](https://doc.ezplatform.com/en/latest/getting_started/requirements_and_system_configuration/) for the configuration required for installing eZ. @@ -42,7 +36,7 @@ eZ offers two different work modes: **Content mode** and **Page mode**. **What is Content mode?** -Content mode gives you the access to the content repository. It is mostly the role of eZ Platform, but for users of eZ Enterprise it is enriched with specific Studio functionalities. +Content mode gives you the access to the content repository. It is mostly the role of [[= product_name_oss =]], but for users of [[= product_name_ee =]] it is enriched with specific Studio functionalities. Its focus is on creating, modifying, organizing, and publishing Content items. Content mode is an interface for the repository, a place in which eZ stores all the content. @@ -52,7 +46,7 @@ You can preview any Content within the tree, but the Content mode does not allow **What is Page mode?** -Page mode allows you to manage website pages and website content from the pages themselves. It is only available for eZ Enterprise users. It can be enriched by eZ Services functionalities for users subscribed to them. +Page mode allows you to manage website pages and website content from the pages themselves. It is only available for [[= product_name_ee =]] users. It can be enriched by eZ Services functionalities for users subscribed to them. It provides the front-end editing, that is modifying pages directly from their preview. Using a special Timeline toolbar, you can also preview and modify the content of a page at a future date. @@ -117,7 +111,7 @@ See [Design](https://doc.ezplatform.com/en/master/guide/design_engine/) for more **Where is the technical documentation?** -Technical documentation for eZ Platform and eZ Enterprise is available in [eZ Developer documentation](https://doc.ezplatform.com). +Technical documentation for [[= product_name_oss =]] and [[= product_name_ee =]] is available in [eZ Developer documentation](https://doc.ezplatform.com). You can find the technical documentation for eZ Publish 5.x (an earlier version) in [eZ Publish 5.x Developer Documentation](https://doc.ez.no/display/EZP/eZ+Publish+5.x+Developer+Documentation). @@ -131,24 +125,24 @@ If you need more questions answered, have a look at our [Support and Maintenance If you would like to share your questions or ideas with other eZ users, you can do it on: -- [eZ Platform portal](https://ezplatform.com/). +- [[[= product_name_oss =]] portal](https://ezplatform.com/). - [eZ Community Slack channel](http://ez-community-on-slack.herokuapp.com/) where you can discuss the software and ask for help or support. **How can I contact eZ representatives?** If you would like to contact eZ or any of our offices, you can find the [contact information here](http://ez.no/About-eZ/Contact-Us). -## eZ Platform +## [[= product_name_oss =]] ### Product -**Where can I get eZ Platform?** +**Where can I get [[= product_name_oss =]]?** -You can download the current version of eZ Platform from: . +You can download the current version of [[= product_name_oss =]] from: . -**How do I install eZ Platform?** +**How do I install [[= product_name_oss =]]?** -Here is a [guide to installing eZ products](https://doc.ezplatform.com/en/latest/getting_started/install_ez_platform/) (covering both eZ Platform and eZ Enterprise). +Here is a [guide to installing eZ products](https://doc.ezplatform.com/en/latest/getting_started/install_ez_platform/) (covering both [[= product_name_oss =]] and [[= product_name_ee =]]). ### Content model @@ -207,7 +201,7 @@ You can limit the visibility of a Content item by hiding the Location it is plac **How can I preview content?** -In Content mode you cannot edit Content while previewing it (this option is available only in eZ Enterprise). +In Content mode you cannot edit Content while previewing it (this option is available only in [[= product_name_ee =]]). You can preview your content while editing it by clicking one of the icons under **Preview** in the action bar. @@ -221,17 +215,17 @@ on the website or through the API. The **Publish** function allows you to publish the final version of the content object. As a result, the working copy turns into the published version that is visible on the website and available through the API as a publish content. -## eZ Enterprise +## [[= product_name_ee =]] ### Product -**Does eZ Enterprise contain all features of eZ Platform?** +**Does [[= product_name_ee =]] contain all features of [[= product_name_oss =]]?** -Yes, eZ Enterprise is based on eZ Platform and contains it with all of its functionalities. +Yes, [[= product_name_ee =]] is based on [[= product_name_oss =]] and contains it with all of its functionalities. -**What features does eZ Enterprise offer that are unavailable in eZ Platform?** +**What features does [[= product_name_ee =]] offer that are unavailable in [[= product_name_oss =]]?** -eZ Enterprise offers a number of additional features aside from what is available in eZ Platform. +[[= product_name_ee =]] offers a number of additional features aside from what is available in [[= product_name_oss =]]. The key of them are: @@ -239,9 +233,9 @@ The key of them are: - Intuitive Page mode editing - Workflow functionality for managing the review process -**How do I install eZ Enterprise?** +**How do I install [[= product_name_ee =]]?** -Here is a [guide to installing eZ products](https://doc.ezplatform.com/en/latest/getting_started/install_ez_platform/) (covering both eZ Platform and eZ Enterprise). +Here is a [guide to installing eZ products](https://doc.ezplatform.com/en/latest/getting_started/install_ez_platform/) (covering both [[= product_name_oss =]] and [[= product_name_ee =]]). ### Editing diff --git a/docs/fonts/Noto_Sans/LICENSE.txt b/docs/fonts/Noto_Sans/LICENSE.txt new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/docs/fonts/Noto_Sans/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/docs/fonts/Noto_Sans/NotoSans-Bold.ttf b/docs/fonts/Noto_Sans/NotoSans-Bold.ttf new file mode 100644 index 00000000..54ad879b Binary files /dev/null and b/docs/fonts/Noto_Sans/NotoSans-Bold.ttf differ diff --git a/docs/fonts/Noto_Sans/NotoSans-BoldItalic.ttf b/docs/fonts/Noto_Sans/NotoSans-BoldItalic.ttf new file mode 100644 index 00000000..530a8283 Binary files /dev/null and b/docs/fonts/Noto_Sans/NotoSans-BoldItalic.ttf differ diff --git a/docs/fonts/Noto_Sans/NotoSans-Italic.ttf b/docs/fonts/Noto_Sans/NotoSans-Italic.ttf new file mode 100644 index 00000000..27ff1ed6 Binary files /dev/null and b/docs/fonts/Noto_Sans/NotoSans-Italic.ttf differ diff --git a/docs/fonts/Noto_Sans/NotoSans-Regular.ttf b/docs/fonts/Noto_Sans/NotoSans-Regular.ttf new file mode 100644 index 00000000..10589e27 Binary files /dev/null and b/docs/fonts/Noto_Sans/NotoSans-Regular.ttf differ diff --git a/docs/fonts/Work_Sans/OFL.txt b/docs/fonts/Work_Sans/OFL.txt new file mode 100644 index 00000000..d3a046cf --- /dev/null +++ b/docs/fonts/Work_Sans/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2019 The Work Sans Project Authors (https://github.com/weiweihuanghuang/Work-Sans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/fonts/Work_Sans/README.txt b/docs/fonts/Work_Sans/README.txt new file mode 100644 index 00000000..ff9d0856 --- /dev/null +++ b/docs/fonts/Work_Sans/README.txt @@ -0,0 +1,79 @@ +Work Sans Variable Font +======================= + +This download contains Work Sans as both variable fonts and static fonts. + +Work Sans is a variable font with this axis: + wght + +This means all the styles are contained in these files: + WorkSans-VariableFont_wght.ttf + WorkSans-Italic-VariableFont_wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Work Sans: + static/WorkSans-Thin.ttf + static/WorkSans-ExtraLight.ttf + static/WorkSans-Light.ttf + static/WorkSans-Regular.ttf + static/WorkSans-Medium.ttf + static/WorkSans-SemiBold.ttf + static/WorkSans-Bold.ttf + static/WorkSans-ExtraBold.ttf + static/WorkSans-Black.ttf + static/WorkSans-ThinItalic.ttf + static/WorkSans-ExtraLightItalic.ttf + static/WorkSans-LightItalic.ttf + static/WorkSans-Italic.ttf + static/WorkSans-MediumItalic.ttf + static/WorkSans-SemiBoldItalic.ttf + static/WorkSans-BoldItalic.ttf + static/WorkSans-ExtraBoldItalic.ttf + static/WorkSans-BlackItalic.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (OFL.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +Commercial usage is allowed for any purpose, in any medium, but some +requirements apply in some situations. Always read your font licenses and +understand what they mean. diff --git a/docs/fonts/Work_Sans/WorkSans-Regular.ttf b/docs/fonts/Work_Sans/WorkSans-Regular.ttf new file mode 100644 index 00000000..30f7c0ef Binary files /dev/null and b/docs/fonts/Work_Sans/WorkSans-Regular.ttf differ diff --git a/docs/getting_started.md b/docs/getting_started.md index 0152c786..c5ffce27 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -1,21 +1,21 @@ # Getting started -eZ Platform is an open-source, Symfony-based CMS. +[[= product_name_oss =]] is an open-source, Symfony-based CMS. -eZ Platform consists of the technical platform for developers +[[= product_name_oss =]] consists of the technical platform for developers (including a Web framework, APIs and a Content Repository) and provides a user interface to work with the content and administer the platform. -!!! enterprise "eZ Platform Enterprise Edition" +!!! dxp "[[= product_name_ee =]]" - eZ Platform Enterprise Edition is a commercial product built on top of the open-source eZ Platform. + [[= product_name_ee =]] is a commercial product built on top of the open-source [[= product_name_oss =]]. It offers additional functionalities and enhancements to the editing experience. - eZ Enterprise provides advanced editorial capabilities such as [in-page editing](working_with_page.md), creation of [block-based Pages](working_with_page.md#adding-blocks), [editorial workflow](publishing/editorial_workflow.md), etc. + [[= product_name_ee =]] provides advanced editorial capabilities such as [in-page editing](working_with_page.md), creation of [block-based Pages](working_with_page.md#adding-blocks), [editorial workflow](publishing/editorial_workflow.md), etc. ## Quick start -eZ Platform must be [installed by administrator](https://doc.ezplatform.com/en/latest/getting_started/install_ez_platform/). +[[= product_name_oss =]] must be [installed by administrator](https://doc.ezplatform.com/en/latest/getting_started/install_ez_platform/). They should provide you with the address of the installation. To access the Back Office (the editor interface), add `/admin` to this address. @@ -28,14 +28,14 @@ For example, if your website's URL is `www.my-site.com`, you enter the editing i ![Login screen](img/login_form.png "Login screen") -The first screen after logging in is the Dashboard. It contains shortcuts to most commonly used content: +The first screen after logging in is **My dashboard**. It contains shortcuts to most commonly used content: review queue, your drafts, the content you have created, recently modified content, etc. You can select any of these items and view them in detail or start editing them from this point. -You can also reschedule or cancel planned publications using the Dashboard. +You can also reschedule or cancel planned publications using the dashboard. -![Dashboard](img/dashboard.png "Dashboard") +![My dashboard](img/dashboard.png "My dashboard") -You can always return to the Dashboard by selecting the logo in the upper left corner. +You can always return to the **My dashboard** screen by selecting the logo in the upper left corner. The top bar allows you to move between important sections of the application. @@ -43,8 +43,8 @@ The top bar allows you to move between important sections of the application. - **Content** gives you access to the content Repository. It lets you navigate the Content Tree, create, edit, move, copy, delete content, etc. -- **Site** enables you to create and edit block-based Pages and manage multiple sites. It is only available for eZ Enterprise users. -- **Forms** enables you to place a survey, questionnaire, sign-up form, etc. on your website. It is only available for eZ Enterprise users. +- **Site** enables you to create and edit block-based Pages and manage multiple sites. It is only available for [[= product_name_ee =]] users. +- **Forms** enables you to place a survey, questionnaire, sign-up form, etc. on your website. It is only available for [[= product_name_ee =]] users. - **Admin** is the administration panel where you can manage Users, Sections, permissions, etc. ### User settings diff --git a/docs/images/ez-by-ibexa-logo.svg b/docs/images/ez-by-ibexa-logo.svg deleted file mode 100644 index c62b2d46..00000000 --- a/docs/images/ez-by-ibexa-logo.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - ez-by-ibexa logo - - diff --git a/docs/images/favicon.png b/docs/images/favicon.png index 57e6b7f4..be2778af 100644 Binary files a/docs/images/favicon.png and b/docs/images/favicon.png differ diff --git a/docs/images/ibexa-dxp-logo.svg b/docs/images/ibexa-dxp-logo.svg new file mode 100644 index 00000000..0a85962c --- /dev/null +++ b/docs/images/ibexa-dxp-logo.svg @@ -0,0 +1,81 @@ + + + +image/svg+xml + + + + + + + + + diff --git a/docs/images/loading.svg b/docs/images/loading.svg deleted file mode 100644 index ce14db24..00000000 --- a/docs/images/loading.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - diff --git a/docs/img/adding_translation.png b/docs/img/adding_translation.png index 1e50da53..84ccec00 100644 Binary files a/docs/img/adding_translation.png and b/docs/img/adding_translation.png differ diff --git a/docs/img/admin_panel_language.png b/docs/img/admin_panel_language.png index 8a9c73da..f74e3a44 100644 Binary files a/docs/img/admin_panel_language.png and b/docs/img/admin_panel_language.png differ diff --git a/docs/img/admin_panel_segment_groups.png b/docs/img/admin_panel_segment_groups.png new file mode 100644 index 00000000..877e405d Binary files /dev/null and b/docs/img/admin_panel_segment_groups.png differ diff --git a/docs/img/dashboard.png b/docs/img/dashboard.png index 4185a7d7..3816a638 100644 Binary files a/docs/img/dashboard.png and b/docs/img/dashboard.png differ diff --git a/docs/img/form_builder.png b/docs/img/form_builder.png index 73cd85ac..5fa15c34 100644 Binary files a/docs/img/form_builder.png and b/docs/img/form_builder.png differ diff --git a/docs/img/form_builder_button.png b/docs/img/form_builder_button.png index 2c076f30..be332ac2 100644 Binary files a/docs/img/form_builder_button.png and b/docs/img/form_builder_button.png differ diff --git a/docs/img/form_builder_submissions.png b/docs/img/form_builder_submissions.png index c7fb9a97..36bc130d 100644 Binary files a/docs/img/form_builder_submissions.png and b/docs/img/form_builder_submissions.png differ diff --git a/docs/img/left_menu_tree.png b/docs/img/left_menu_tree.png index 04cf40d6..06ec6964 100644 Binary files a/docs/img/left_menu_tree.png and b/docs/img/left_menu_tree.png differ diff --git a/docs/img/login_form.png b/docs/img/login_form.png index b74510dc..04f7734b 100644 Binary files a/docs/img/login_form.png and b/docs/img/login_form.png differ diff --git a/docs/img/online_editor_menu.png b/docs/img/online_editor_menu.png index afe7df5f..5c69c664 100644 Binary files a/docs/img/online_editor_menu.png and b/docs/img/online_editor_menu.png differ diff --git a/docs/img/online_editor_table.png b/docs/img/online_editor_table.png index c91bccee..ba07aac2 100644 Binary files a/docs/img/online_editor_table.png and b/docs/img/online_editor_table.png differ diff --git a/docs/img/rich_text_block_elements.png b/docs/img/rich_text_block_elements.png index 1ff2ee60..dda9350c 100644 Binary files a/docs/img/rich_text_block_elements.png and b/docs/img/rich_text_block_elements.png differ diff --git a/docs/img/siteaccess_bar.png b/docs/img/siteaccess_bar.png index b82e593a..48ab30a2 100644 Binary files a/docs/img/siteaccess_bar.png and b/docs/img/siteaccess_bar.png differ diff --git a/docs/img/top_bar.png b/docs/img/top_bar.png index dfcb4de6..45ab6bb4 100644 Binary files a/docs/img/top_bar.png and b/docs/img/top_bar.png differ diff --git a/docs/img/udw.png b/docs/img/udw.png index 1be211f3..ae2c5a5b 100644 Binary files a/docs/img/udw.png and b/docs/img/udw.png differ diff --git a/docs/img/user_preferences.png b/docs/img/user_preferences.png index 4b741385..5a4492eb 100644 Binary files a/docs/img/user_preferences.png and b/docs/img/user_preferences.png differ diff --git a/docs/index.md b/docs/index.md index 5dd221e9..257ac504 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,9 +1,9 @@ -# eZ Platform user documentation +# Ibexa user documentation -This is the hub for eZ Platform documentation for editors and content managers. -You can find here information on how to create, edit, manage, and publish content in eZ Platform. +This is the hub for [[= product_name_oss =]] documentation for editors and content managers. +You can find here information on how to create, edit, manage, and publish content in [[= product_name_oss =]]. -**New to eZ Platform? See [Getting Started](getting_started.md)** +**New to [[= product_name_oss =]]? See [Getting Started](getting_started.md)** **Got a question? See the [FAQ](faq.md)** diff --git a/docs/js/custom.js b/docs/js/custom.js index f91c25b6..83e224a1 100644 --- a/docs/js/custom.js +++ b/docs/js/custom.js @@ -52,7 +52,8 @@ $(document).ready(function () { var update = setInterval(function() { if ($('.injected .rst-versions').length) { clearInterval(update); - $('.rst-current-version span:first').html(' Change version'); + var version = $('.rst-other-versions strong dd a').text(); + $('.rst-current-version span:first').html(' ' + (version != '' ? version : 'Change version')); $('.rst-other-versions').html($('.injected dl:first').clone()); $('.injected').remove(); @@ -65,8 +66,12 @@ $(document).ready(function () { }); if ($('.version-warning').length) { - var version = $('.version-warning .version').html(), - url = $('.rst-other-versions dd a').first().attr('href').replace('latest', version); + var url, + version = $('.version-warning .version').html(), + parts = $('.rst-other-versions dd a').first().attr('href').split('/'); + + parts[4] = version; + url = parts.join('/'); $('.version-warning .version').html($('' + version + '')); } @@ -117,7 +122,6 @@ $(document).ready(function () { $("#imageModal").click(function(){ $(this).hide() }); - $('.md-nav__permlink').attr('href', '#' + $('h1').attr('id')); - $('.md-nav__permlink').html($('h1').text().replace('¶', '')); + $('.md-sidebar--primary .md-sidebar__scrollwrap')[0].scrollTop = $('.md-sidebar--primary .md-nav__item--active:not(.md-nav__item--nested)')[0].offsetTop - 33; }); diff --git a/docs/managing_shop_content/embed_product.md b/docs/managing_shop_content/embed_product.md new file mode 100644 index 00000000..bbf7ddea --- /dev/null +++ b/docs/managing_shop_content/embed_product.md @@ -0,0 +1,6 @@ +# Embed product + +You can embed products in a RichText Field using the Embed function. +The product is embedded in a box including an add to basket button and a product image. The text floats around the product box. + +![](img/embed_products.png) diff --git a/docs/managing_shop_content/img/bestsellers_block.png b/docs/managing_shop_content/img/bestsellers_block.png new file mode 100644 index 00000000..2eaea7fd Binary files /dev/null and b/docs/managing_shop_content/img/bestsellers_block.png differ diff --git a/docs/managing_shop_content/img/bestsellers_categories.png b/docs/managing_shop_content/img/bestsellers_categories.png new file mode 100644 index 00000000..6f5462ac Binary files /dev/null and b/docs/managing_shop_content/img/bestsellers_categories.png differ diff --git a/docs/managing_shop_content/img/bestsellers_preview.png b/docs/managing_shop_content/img/bestsellers_preview.png new file mode 100644 index 00000000..fd559734 Binary files /dev/null and b/docs/managing_shop_content/img/bestsellers_preview.png differ diff --git a/docs/managing_shop_content/img/embed_products.png b/docs/managing_shop_content/img/embed_products.png new file mode 100644 index 00000000..fe09102a Binary files /dev/null and b/docs/managing_shop_content/img/embed_products.png differ diff --git a/docs/managing_shop_content/img/landingpage_tool.png b/docs/managing_shop_content/img/landingpage_tool.png new file mode 100644 index 00000000..929f0465 Binary files /dev/null and b/docs/managing_shop_content/img/landingpage_tool.png differ diff --git a/docs/managing_shop_content/img/last_viewed.png b/docs/managing_shop_content/img/last_viewed.png new file mode 100644 index 00000000..4d67118e Binary files /dev/null and b/docs/managing_shop_content/img/last_viewed.png differ diff --git a/docs/managing_shop_content/img/legal_checkout.png b/docs/managing_shop_content/img/legal_checkout.png new file mode 100644 index 00000000..d2c6996e Binary files /dev/null and b/docs/managing_shop_content/img/legal_checkout.png differ diff --git a/docs/managing_shop_content/img/legal_contact.png b/docs/managing_shop_content/img/legal_contact.png new file mode 100644 index 00000000..6cbedf76 Binary files /dev/null and b/docs/managing_shop_content/img/legal_contact.png differ diff --git a/docs/managing_shop_content/img/legal_footer.png b/docs/managing_shop_content/img/legal_footer.png new file mode 100644 index 00000000..f5b89884 Binary files /dev/null and b/docs/managing_shop_content/img/legal_footer.png differ diff --git a/docs/managing_shop_content/img/legal_register.png b/docs/managing_shop_content/img/legal_register.png new file mode 100644 index 00000000..31110571 Binary files /dev/null and b/docs/managing_shop_content/img/legal_register.png differ diff --git a/docs/managing_shop_content/img/navigation_content_structure.png b/docs/managing_shop_content/img/navigation_content_structure.png new file mode 100644 index 00000000..067c0170 Binary files /dev/null and b/docs/managing_shop_content/img/navigation_content_structure.png differ diff --git a/docs/managing_shop_content/img/navigation_structure_menu.png b/docs/managing_shop_content/img/navigation_structure_menu.png new file mode 100644 index 00000000..922dfa35 Binary files /dev/null and b/docs/managing_shop_content/img/navigation_structure_menu.png differ diff --git a/docs/managing_shop_content/img/product_slider.png b/docs/managing_shop_content/img/product_slider.png new file mode 100644 index 00000000..5fd88452 Binary files /dev/null and b/docs/managing_shop_content/img/product_slider.png differ diff --git a/docs/managing_shop_content/img/product_slider_basic.png b/docs/managing_shop_content/img/product_slider_basic.png new file mode 100644 index 00000000..548b906a Binary files /dev/null and b/docs/managing_shop_content/img/product_slider_basic.png differ diff --git a/docs/managing_shop_content/img/product_slider_preview.png b/docs/managing_shop_content/img/product_slider_preview.png new file mode 100644 index 00000000..930668bc Binary files /dev/null and b/docs/managing_shop_content/img/product_slider_preview.png differ diff --git a/docs/managing_shop_content/landingpages.md b/docs/managing_shop_content/landingpages.md new file mode 100644 index 00000000..ed5c6777 --- /dev/null +++ b/docs/managing_shop_content/landingpages.md @@ -0,0 +1,47 @@ +# Pages in the shop + +[[= product_name_com =]] has at least one Landing Page which is the homepage. This document describes how to setup and modify Landing Pages. + +## Landing Page tool + +![](img/landingpage_tool.png) + +[[= product_name_com =]] adds the following blocks to the blocks available in [[= product_name_oss =]]: + +- Last viewed +- Bestsellers +- Product Slider + +## Product Slider + +The Product Slider block creates a product slider section with up to three different tabs. + +![](img/product_slider.png) + +Add up to three different tabs and fill them with the SKUs of the products (you can search for SKU, a product name or a part of a product name). + +![](img/product_slider_basic.png) + +Click **Submit** and you will see a preview of the slider. + +![](img/product_slider_preview.png) + +## Last viewed + +The Last viewed block displays a list of the last viewed products in a slider. + +![](img/last_viewed.png) + +The block might not be visible in the edit mode but it will contain products in the frontend. + +## Bestsellers + +The Bestsellers block shows the bestselling products from a chosen category. This can be the whole product catalog or a subcategory. + +![](img/bestsellers_block.png) + +To choose a category, click **Select content**. + +![](img/bestsellers_categories.png) + +![](img/bestsellers_preview.png) diff --git a/docs/managing_shop_content/legal_documents.md b/docs/managing_shop_content/legal_documents.md new file mode 100644 index 00000000..26e108dc --- /dev/null +++ b/docs/managing_shop_content/legal_documents.md @@ -0,0 +1,19 @@ +# Legal documents + +You can link to legal documents and forms for the shop in various places, for example in the footer: + +![](img/legal_footer.png) + +The legal documents are used at various places in the shop. The Terms and Conditions are shown as s full page or as a popup during the checkout process: + +![](img/legal_checkout.png) + +and in the register form: + +![](img/legal_register.png) + +The legal texts are linked in text modules that are used in various locations, e.g. the contact form. + +![](img/legal_contact.png) + +The cancellation policy text is added to the confirmation email from the shop. diff --git a/docs/managing_shop_content/navigation_structure.md b/docs/managing_shop_content/navigation_structure.md new file mode 100644 index 00000000..e4a4e928 --- /dev/null +++ b/docs/managing_shop_content/navigation_structure.md @@ -0,0 +1,22 @@ +# Navigation structure + +![](img/navigation_structure_menu.png) + +Click **Content** > **Content structure** to access the objects displayed in the top navigation + +![](img/navigation_content_structure.png) + +The following Content Types are supported: + +- Article +- Folder (including Folder for news, events and blog post) +- Landing page +- Product category +- Product +- Feature link + +!!! caution + + The main menu of the site displays elements only if the Priority is higher that 0. + +Elements with lower Priority are displayed first. diff --git a/docs/personalization/content_import.md b/docs/personalization/content_import.md new file mode 100644 index 00000000..cc5f65be --- /dev/null +++ b/docs/personalization/content_import.md @@ -0,0 +1,21 @@ +# 9. Content Import + +Basic recommendation algorithms are statistics-based and need only the product ID and user ID. This information is provided by the event tracking as described in chapter [4. Event Types](event_types.md). +There are several use cases where the recommendation engine requires additional information linked to the products. +The most important cases are: + +- Filtering results based on the category the product is located in ([Category Filter](filters.md#category-filter)) +- Filtering results based on price and product availability ([General Filters](filters.md#general-filters)) +- Sub-models based on custom attribute grouping ([Submodels](recommendation_models.md#submodels)) +- An additional export/import interface is designed to provide editor-based models ([6. Recommendation Models](recommendation_models.md)) + +There are four different ways to import data into the recommendation system: + +- **In-Event:** During the event tracking process, where related data is attached to a click event (e.g. categorypath information) +- **Push interface:** Classic HTTP POST-based import. It is suitable for uploading single content or editor lists +- **Pull interface:** The recommendation engine loads an exported file from the specified location in the background. It was designed to upload big portions of information, for example a weekly update of the whole product catalog +- **Trigger logic:** The recommendation engine triggers a transactional full import at the customer's system. Therefore some custom development or a plugin is needed.  + +!!! tip + + You can find Specification for Import interfaces in the developer guide under [Content API](https://doc.ezplatform.com/en/master/guide/personalization/content_api.md). diff --git a/docs/personalization/content_types.md b/docs/personalization/content_types.md new file mode 100644 index 00000000..66b9045f --- /dev/null +++ b/docs/personalization/content_types.md @@ -0,0 +1,33 @@ +# 5. Content Types + +In the **advanced** edition of the recommendation engine it is possible to build different recommendation domains. It can be achieved by splitting all the products into different content types. There are several possible use cases for content types. + +- A publisher tracks articles, pictures and videos as three different types. +- A supermarket splits all the products into food and non-food product groups. +- An owner of several web shops uses a single account for all of them + +The content types concept provides the possibility to make so-called cross domain recommendations (like "Users who watched this film also read this book" or "Users who read this article also liked these photos"). + +Additionally to the logical separation of the content domains the content types provide another important advantage. They play a role if different types of products are not equally popular but must be recommended equally often. For example, on a publisher's page users watch videos less often than they read articles. If the most popular products are requested without content type splitting, there will be most likely no videos in the result. If articles and videos are split into different content types, it is possible to explicitly request popular videos and/or popular articles. + +Below is a comparison for different ways of splitting content in the recommendation engine. + +|Use case|content types solution (domain context)|Attribute based sub-models (group context)|Different recommendation engine accounts| +|---|---|---|---| +|Cross-group recommendation requests are possible|yes|yes|no| +|Products must belong to one group|mandatory|optional|mandatory| +|Products can belong to multiple groups|no|yes|no| +|Single recommendation request can contain products from different groups|no|yes|no| +|Product can change the group it belongs to|no|yes|no| +|Different content types share the scenario and model configuration|yes|yes|no| +|Required Recommender Edition|single advanced|-|multiple basic| + +#### Scenario configuration + +If multiple content types are enabled, one must enable this output type for every scenario that should recommend this type. + +![Scenario settings](img/scenario_configuration.png) + +Every scenario supports a single input type and multiple output types (see [8. Scenarios](scenarios.md)). Every recommendation request delivers only content of one output content type (even if multiple are selected in the interface above). The output type is set during the recommendation request and must be covered by the list of the supported content types in the requested scenario. + +You can find more information about fetching recommendations in developer documentation: [Recommendation API](https://doc.ezplatform.com/en/master/guide/personalization/recommendation_api.md) diff --git a/docs/personalization/dashboard.md b/docs/personalization/dashboard.md new file mode 100644 index 00000000..4b95b70b --- /dev/null +++ b/docs/personalization/dashboard.md @@ -0,0 +1,77 @@ +# 3. Dashboard + +The administration dashboard is the entry point to configure and control the Personalization Solution. It is split into two main sections: + +- The top section contains diagrams representing statistical information on how the recommendation engine is used and how successful - depending on the KPIs - recommendations are. +- The lower section is made up of many configuration tabs. It contains at least the Scenarios and Added revenue information. Depending on the license and registration information there is also a tab for A/B-Testing, Plugin, Content Import and Newsletter settings + +## Statistics + +![Dashboard statistics](img/dashboard_statistics.png) + +The diagram part consists of three main blocks: + +- Collected events: + The input data (clicks, buy, clickrecommended, ...) which is going into the recommendation engine for the customer website (see [4. Event Types](event_types.md) for more information). +- Recommendation calls: + The number of recommendation calls (total and per scenario) +- Clicked recommendations, Purchased recommendations and Revenue by recommendations: + The effectiveness of recommendations regarding clicked recommendations, revenue through recommendations and absolute number of converted/sold recommendations + +The conversion (or click-through) rate is an **indicator of the acceptance** and therefore the **quality of recommendations**. It is calculated as follows: The total number of clicked recommended products divided by the amount of recommendation calls. This statistic only delivers reliable information if the tracking is implemented correctly. + +The revenue-through-recommendations is a **monetary value** which was additionally created by recommendations. It is calculated as follows: If a user buys product A and has clicked on it as a recommendation within 30 minutes before we assume it was sold through a recommendation. + +Purchased recommendations is the **plain number of sold recommendations** without any revenue/price information. + +All statistical information can be downloaded in MS Excel format. The timeframes depend on the selection of the diagram period (day, week, month, 3 months and year) but can also be customized. + +## Configuration Settings + +### Revenue details + +This tab shows you when recommendations were bought and how much time passed between the click on the recommendation and the buying event. + +![Dashboard Added Revenue](img/dashboard_added_revenue.png) + +### Scenarios + +The scenario overview shows all available scenarios. Additional info like a description and the delivered recommendations in the selected timeframes are also presented. + +![Dashboard scenarios](img/dashboard_scenarios.png) + +Scenarios with green status bars indicate that all models can provide recommendations. Yellow bars indicate that only a part of the configured models can provide recommendations and red ones indicate that no recommendations can be delivered. See [8. Scenarios](scenarios.md). + +### Models + +This tab allows you to see all available models and configure them, see [6. Recommendation Models](recommendation_models.md)  + +![Dashboard models](img/dashboard_models.png) + +### Preview + +This tab shows you recommendation preview based on a Scenario. + +![Dashboard Preview](img/dashboard_preview.png) + +### A/B Testing + +This tab holds an overview of A/B Tests. Finished, currently running and scheduled tests are listed here. + +![Dashboard A/B Tests](img/dashboard_ab_tests.png) + +### Plugins + +If a plugin was used to register the service, specific settings can be configured under **Plugins**. + +![Dashboard Plugins](img/dashboard_plugins.png) + +### Import/Export + +Item import jobs are used to fetch data from a customer system. Data-mappings and schedule times are defined here. + +![Dashboard Item Import](img/dashboard_item_import.png) + +### Newsletter + +Newsletters are sent out if certain events happen, e.g. a user did not come back for a number of days or the shopping cart was abandoned. Style and conditions are configured in the **Newsletter** tab. diff --git a/docs/personalization/event_types.md b/docs/personalization/event_types.md new file mode 100644 index 00000000..65f0e929 --- /dev/null +++ b/docs/personalization/event_types.md @@ -0,0 +1,34 @@ +# 4. Event Types + +It was already mentioned that the recommendation engine collects events and computes recommendations based on user behavior. The most important events collected by the engine are click and buy events. They are enough for providing basic recommendations. There are some additional events for creating more complex scenarios and providing statistics about acceptance of recommendations, such as conversion rate or revenue.  + +![Overview of how events work](img/events_overview.png) + +All possible events used in the system are described in the following table. + +|Event|Description| +|---|---| +|CLICK|It should be sent to the recommendation engine if a user opens any detail page on the website.| +|BUY|It should be sent if something was bought.| +|CONSUME|Similar to the BUY event but without a payment. It is designed for publisher websites. This event is sent if an article or a web page is consumed (usually "read" or a "pre-listened" video).| +|RENDER|It should be sent if a recommendation is shown on the web page. This information is used by filters to suppress repeated recommendations of the same item.| +|FOLLOW / CLICKRECOMMENDED|If a user clicks on the recommended product the "clickrecommended" (sometimes called FOLLOW) event must be sent. It allows building acceptance statistics and enables A/B testing.| +|TRANSFER / LOGIN|A special type of event to deal with a user login after the user already surfed on the web page anonymously. It should always sent if the identifier of the user changed. As a result the anonymous history of the user will be transferred from the old identifier to the new one. This workflow is automatically done in the recommender engine.| + +#### Additional events for the advanced edition + +|Event|Description| +|---|---| +|BASKET|It should be sent when the user adds the specified product to the shopping cart. It allows creating recommendations for products the customer is interested in but which they finally did not buy for some reason.| +|BLACKLIST|Allows a user to suppress this recommendation. If the recommendation engine gets this event, the specified product or article won't be recommended anymore to the specified user. Default duration of suppression is one year.| +|OWNS|Same as BUY, but without influence on the statistics. It can be used if a user already owns the product, but bought it somewhere else, to avoid recommending it again.| +|RATE|Additional models can be created for the advanced edition, using this type of events. It allows building recommendations not only for implicit tracking events like "clicked" or "buy", but also for events with explicit value like "rated" or "liked". These events need additional integration into the web page to allow the user to give an appropriate feedback. The event should be triggered as a result of this user feedback.| + +All the events require the current user ID and the ID of one or more context items. Some events need additional information. For more sophisticated algorithms and result filtering event types with additional parameters are needed. In the table below is a brief overview of additional parameter information. + +|Event|Additional information| +|---|---| +|CLICK|Category path of the product a customer clicked on can be attached to the event. It is an alternative way to provide this information for a product without having a catalogue/export. This way is available for both basic and advanced editions. If an export is available to be fed into the recommendation engine, this information is ignored.| +|BUY|The price that a user paid for the product. This is an important parameter for the statistics and especially for A/B tests. Quantity of the products bought must be sent as well to be used in the revenue statistics.| +|FOLLOW/CLICKRECOMMENDED|The scenario which provided the recommendations must be sent in this event.| +|RATE|The rating (for example 1 to 5 stars) can be sent as an additional parameter.| diff --git a/docs/personalization/filters.md b/docs/personalization/filters.md new file mode 100644 index 00000000..33e2b9be --- /dev/null +++ b/docs/personalization/filters.md @@ -0,0 +1,114 @@ +# 7. Filters + +## Category Filter + +For every row in the scenario configuration you can define a category filter. If the filter is activated, only items from the specified category will be recommended. The actual category used to filter on is specified in the parameters of each recommendation request. + +There are two ways to specify a category in a recommendation request: + +- No context items, but the **category explicitly provided in the request**. This recommendation call is usually placed on the category overview page for getting most popular products of the selected, actual category (in the figure it is called "reference category"). +- **Context items are provided** and categories of all context items are used for the request. This approach is recommended only if it is technically impossible (or too complex) to provide the category information explicitly. + +Depending on configuration of the filter, the recommendation engine can take different approaches to finding the actual set of categories the products will be recommended from. + +The following example explains the different possibilities in more detail. + +Depicted below is the configuration dialog - available in the GUI on the right side of the model configuration tab in a scenario (see [Advanced Model Configuration](recommendation_models.md#advanced-model-configuration)) - and category structure which is basically the site navigation: + +![Category path screenshot](img/categorypath_filter.png) + +![Category path tree](img/categorypath_tree.png) + +The table below lists the possible configurations and categories that recommended items will be fetched from. + +In all examples we assume that the category received in the request is **"/Furniture/Desks&Tables/Tables"**. + +|category Path Filter configuration|Target categories to fetch recommended products from| +|---|---| +|Always recommend products from the whole shop. Do not use category path for filtering.|All categories ("Plants", "Furniture" and below).| +|Recommend only products from the same category ("also include..." is not checked).|Category "Tables" and all the sub-categories below ("Garden tables" and "Living room tables").| +|Recommend only products from the same category. "Also include parent category" is set to 1.|Category "Desks/Tables" and below including "Desks", "Tables" and all their sub-categories.| +|Recommend only products from the same category. "Also include parent category" is set to 2.|Category "Furniture" and below.| +|Recommend products from the same main category and its subcategories from level 1.|Category "Furniture" and below.| +|Recommend products from the same main category and its subcategories from level 2.|Category "Desks/Tables" and below.| +|Recommend products from the same main category and its subcategories from level 3.|Category "Tables" and below.| + +It is possible to provide multiple reference categories (both in the request and over the context item or items). In this case the superset of the recommendations will be returned. The results are sorted based of global weight of the recommendations. Depending on the popularity of the categories the more popular category will most probably push the less popular categories out of the results. + +If the recommended item is located in more than one category, it will be recommended if at least one category is requested in this recommendation call. + +### Multiple Categorypath dimensions for popularity models + +The categorypath parameter is very powerful in its usage. The default approach is to represent content in the navigation-based structure of a website which is used by default. If there is a need to represent available items of a website in different dimensions (taxonomies) it is possible to do this out-of-the box simply by enriching the categorypath information of an item, without changing any settings in the recommender engine. + +To make it a bit clearer let's take a look at the following example: In the above mentioned shop both furniture and plants are sold and they are structured based on site navigation. Typically customers would look for computer desks and get a list of recommendations of all computer desks in the shop. If desired, the recommendation engine could also use another dimension for filtering recommendations, for example a "brand" dimension. In this case the user would get recommendations for all items from the same "brand". + +In case of popularity based recommendations it will be possible to get most popular products based on the main navigate tree (most popular desk) or based on the brand (most popular IKEA item). + +Some examples of common representation dimensions of items beyond the site navigation: + +|Business|Possible dimensions| +|---|---| +|eCommerce|manufacturer (e.g. BOSCH, Renault, ...)
season (e.g. winter, spring, ...)
price range (e.g lowprice, midprice, highprice, ...)
platform (e.g. Mac, Windows, Linux ...)| +|Book store|genre (e.g. action, science, ...)
author (e.g. George R. R. Martin, ...)| +|Publisher site|global subject (e.g. politics, sports, ...)
physical location (e.g. Cologne, Munich, ...)
timeframe (time identifier like 2013-07-04)| + +You should avoid using category filtering with also-click/also-buy and stereotype models. These models usually contain only similar items. Additional filtering will probably remove the best results from the list of possible recommendations. The only exception to this rule could be copyright or legal issues like removing adult content. For the last use case sub-models and item types often provide better results. See the following chapters for more information: + +[5. Content Types](content_types.md) + +[Submodels](recommendation_models.md#submodels) + +To provide category filtering, the recommendation engine must know the categories the products belongs to. See the following chapters for more information: + +[4. Event Types](event_types.md) + +[9. Content Import](content_import.md) + +## General Filters + +For every recommendation scenario a set of filters can be defined. They are applied to all recommendations from every model linked to this scenario. In the edit dialogue of a scenario you can find the user interface to manage filters. + +![General filter settings](img/scenario_configuration_full.png) + +|Filter|Requirements and restrictions| +|---|---| +|Do not recommend items the user has already purchased|The recommendation engine stores the buy (e-commerce) and consume (publisher) events of every user for one year. When this filter is activated, the user won't get these products recommended again.| +|Max. repeated shows of identical recommendations per session|If this filter is activated, this content/product will be removed from all recommendation lists of the current user session after being recommended n times before.| +|Do not recommend the item currently viewed|Remove the context items from the recommendation list. Usually it makes sense to activate this filter except in the "Bundle" and "Ultimately bought" recommendation case ([6. Recommendation Models](recommendation_models.md)).| + +**Filters which are available only in the advanced solution** + +|Filter|Requirements and restrictions| +|---|---| +|No top-selling items|Removes products from the recommendation list which are recommended by the top selling model (even if the model itself is not linked to this scenario). It is another way to remove very popular products from the recommendation list if you are not interested in showing them again. It makes no sense to apply this filter to a top selling scenario as it will filter out every recommendation.| +|Item price should be higher than the specified value|This filter could be used to remove very cheap but popular items from the recommendation list. For example an optometrist wants to show the most popular designer glasses on the home page to avoid displaying insurance subsidized cheap models and glass cleaning cloths. This filter relies on product metadata and uses [prices exported to the recommendation engine](content_import.md).| +|Item price should be equal or higher than the price of the context product|Like the filter above it compares prices exported to the recommendation engine against the product which is currently shown.| +|Do not recommend if price is unknown|If a product's price is not available then it will not be recommended.| + +**Special and always enabled filters (advanced edition only)** + +|Filter|Requirements and restrictions| +|---|---| +|Editor blacklisted products.|Advanced edition gets several editor-based models ([6. Recommendation Models](recommendation_models.md)). One of them is an editor blacklist. The products from the blacklist will always be removed from every list of recommendations. You can use this feature to remove some standard products which users will buy in any case without recommendation (bread, butter, milk) or non-existing test products which are only used by a robot to check if the shop software is working properly.| +|Customer blacklisted products|In addition to the standard set the website can send blacklist events for selected products and users. It can be implemented as e.g. a button "I do not like this product". If a user added a product to their blacklist, it will not be recommended to them anymore.| +|Product validity interval|Additional product information [can be exported to the recommendation engine](content_import.md). If the product information is available and contains a validity time interval (for example the product is available only until 24 December 2014), it will be used to remove invalid products from the recommendation list.| + +## Boost-Filters + +In addition to general filters, which remove specified elements from recommendations, the boost filter allows shifting (boosting) selected recommended items to the top positions of the recommendation response. This may happen if a selected attribute of the customer has the same value as the selected attribute of the recommended item. For example, we can show the news from the user's home country with higher priority than the rest. + +Assuming every item in the picture below has the attribute "country" and the user has the attribute "country\_of\_origin", the boost filter can be configured in **Filter settings** like this: + +![Boost filter settings](img/boost_filters.png) + +...which leads to boost recommendations for certain users: + +![Boost filter example](img/boost_example.png) + +This type of filter needs both item import and user attribute import. + +See developer guide for more information on item and user attributes import: + +- [Insert XML Content](https://doc.ezplatform.com/en/master/guide/personalization/content_api.md#insert-xml-content) +- [User API](https://doc.ezplatform.com/en/master/guide/personalization/user_api.md) diff --git a/docs/personalization/img/attribute_config.png b/docs/personalization/img/attribute_config.png new file mode 100644 index 00000000..05a5f2b0 Binary files /dev/null and b/docs/personalization/img/attribute_config.png differ diff --git a/docs/personalization/img/attribute_example.png b/docs/personalization/img/attribute_example.png new file mode 100644 index 00000000..af881042 Binary files /dev/null and b/docs/personalization/img/attribute_example.png differ diff --git a/docs/personalization/img/boost_example.png b/docs/personalization/img/boost_example.png new file mode 100644 index 00000000..631f5e73 Binary files /dev/null and b/docs/personalization/img/boost_example.png differ diff --git a/docs/personalization/img/boost_filters.png b/docs/personalization/img/boost_filters.png new file mode 100644 index 00000000..70378fcb Binary files /dev/null and b/docs/personalization/img/boost_filters.png differ diff --git a/docs/personalization/img/categorypath_filter.png b/docs/personalization/img/categorypath_filter.png new file mode 100644 index 00000000..5e0fccd7 Binary files /dev/null and b/docs/personalization/img/categorypath_filter.png differ diff --git a/docs/personalization/img/categorypath_tree.png b/docs/personalization/img/categorypath_tree.png new file mode 100644 index 00000000..469e2a9e Binary files /dev/null and b/docs/personalization/img/categorypath_tree.png differ diff --git a/docs/personalization/img/dashboard_ab_tests.png b/docs/personalization/img/dashboard_ab_tests.png new file mode 100644 index 00000000..52aaabf0 Binary files /dev/null and b/docs/personalization/img/dashboard_ab_tests.png differ diff --git a/docs/personalization/img/dashboard_added_revenue.png b/docs/personalization/img/dashboard_added_revenue.png new file mode 100644 index 00000000..e88d7f82 Binary files /dev/null and b/docs/personalization/img/dashboard_added_revenue.png differ diff --git a/docs/personalization/img/dashboard_item_import.png b/docs/personalization/img/dashboard_item_import.png new file mode 100644 index 00000000..127efa78 Binary files /dev/null and b/docs/personalization/img/dashboard_item_import.png differ diff --git a/docs/personalization/img/dashboard_models.png b/docs/personalization/img/dashboard_models.png new file mode 100644 index 00000000..e0e9610f Binary files /dev/null and b/docs/personalization/img/dashboard_models.png differ diff --git a/docs/personalization/img/dashboard_plugins.png b/docs/personalization/img/dashboard_plugins.png new file mode 100644 index 00000000..139fabd2 Binary files /dev/null and b/docs/personalization/img/dashboard_plugins.png differ diff --git a/docs/personalization/img/dashboard_preview.png b/docs/personalization/img/dashboard_preview.png new file mode 100644 index 00000000..12557bc9 Binary files /dev/null and b/docs/personalization/img/dashboard_preview.png differ diff --git a/docs/personalization/img/dashboard_scenarios.png b/docs/personalization/img/dashboard_scenarios.png new file mode 100644 index 00000000..74bdc86c Binary files /dev/null and b/docs/personalization/img/dashboard_scenarios.png differ diff --git a/docs/personalization/img/dashboard_statistics.png b/docs/personalization/img/dashboard_statistics.png new file mode 100644 index 00000000..4830b73d Binary files /dev/null and b/docs/personalization/img/dashboard_statistics.png differ diff --git a/docs/personalization/img/events_overview.png b/docs/personalization/img/events_overview.png new file mode 100644 index 00000000..d15d7232 Binary files /dev/null and b/docs/personalization/img/events_overview.png differ diff --git a/docs/personalization/img/model_config_details.png b/docs/personalization/img/model_config_details.png new file mode 100644 index 00000000..416ece38 Binary files /dev/null and b/docs/personalization/img/model_config_details.png differ diff --git a/docs/personalization/img/model_config_editor.png b/docs/personalization/img/model_config_editor.png new file mode 100644 index 00000000..544cb8de Binary files /dev/null and b/docs/personalization/img/model_config_editor.png differ diff --git a/docs/personalization/img/model_config_editorial_list.png b/docs/personalization/img/model_config_editorial_list.png new file mode 100644 index 00000000..b479de8f Binary files /dev/null and b/docs/personalization/img/model_config_editorial_list.png differ diff --git a/docs/personalization/img/model_config_in_dashboard.png b/docs/personalization/img/model_config_in_dashboard.png new file mode 100644 index 00000000..29b68a69 Binary files /dev/null and b/docs/personalization/img/model_config_in_dashboard.png differ diff --git a/docs/personalization/img/scenario_configuration.png b/docs/personalization/img/scenario_configuration.png new file mode 100644 index 00000000..dc0cac23 Binary files /dev/null and b/docs/personalization/img/scenario_configuration.png differ diff --git a/docs/personalization/img/scenario_configuration_full.png b/docs/personalization/img/scenario_configuration_full.png new file mode 100644 index 00000000..ada1ea29 Binary files /dev/null and b/docs/personalization/img/scenario_configuration_full.png differ diff --git a/docs/personalization/img/scenario_matrix.png b/docs/personalization/img/scenario_matrix.png new file mode 100644 index 00000000..1eb76b4b Binary files /dev/null and b/docs/personalization/img/scenario_matrix.png differ diff --git a/docs/personalization/img/scenario_preview.png b/docs/personalization/img/scenario_preview.png new file mode 100644 index 00000000..b7e92a50 Binary files /dev/null and b/docs/personalization/img/scenario_preview.png differ diff --git a/docs/personalization/img/submodel_config.png b/docs/personalization/img/submodel_config.png new file mode 100644 index 00000000..76fcec1b Binary files /dev/null and b/docs/personalization/img/submodel_config.png differ diff --git a/docs/personalization/img/use_case_detail_page.png b/docs/personalization/img/use_case_detail_page.png new file mode 100644 index 00000000..37aff8b5 Binary files /dev/null and b/docs/personalization/img/use_case_detail_page.png differ diff --git a/docs/personalization/img/use_case_landing_page.png b/docs/personalization/img/use_case_landing_page.png new file mode 100644 index 00000000..b7e46b31 Binary files /dev/null and b/docs/personalization/img/use_case_landing_page.png differ diff --git a/docs/personalization/img/use_case_shopping_basket.png b/docs/personalization/img/use_case_shopping_basket.png new file mode 100644 index 00000000..4e7c7c2d Binary files /dev/null and b/docs/personalization/img/use_case_shopping_basket.png differ diff --git a/docs/personalization/personalization.md b/docs/personalization/personalization.md new file mode 100644 index 00000000..08e69146 --- /dev/null +++ b/docs/personalization/personalization.md @@ -0,0 +1,7 @@ +# 1. Personalization + +!!! note "E-Commerce vs. Publisher Wording" + + This guide's wording is more related to the E-Commerce Personalization Solution but can be used for a thorough understanding of a Publisher Personalization Solution as well. + + Keep in mind that a product or item can be referred to as content and the buy event for non-paid publisher content is replaced by the consume event. diff --git a/docs/personalization/recommendation_models.md b/docs/personalization/recommendation_models.md new file mode 100644 index 00000000..e12ea1dd --- /dev/null +++ b/docs/personalization/recommendation_models.md @@ -0,0 +1,151 @@ +# 6. Recommendation Models + +Chapter [2. Use Cases](use_cases) describes where recommendations can be used in real-world situations. They are based on algorithms and the calculated result of an algorithm is called a model. The models work in the background and are updated regularly to provide recommendations. There are several types of models available: + +### Models available for both basic and advanced edition + +#### Popularity + +Classic popularity recommendation. The model can be customized using time-dependent weights (recent events are more important) and category based filtering (bestsellers in selected category and/or subcategories). + +#### Also clicked/purchased + +This type of recommendation is often called "Collaborative Filtering based on user data" and is a proven approach to calculating recommendations. It recommends products which are usually clicked or purchased together. It is very simple to configure, needs no maintenance and it is a very powerful model. + +#### Ultimately bought + +This model combines click and buy events. In human readable form it could be something like "Users who looked for that kind of product finally bought this". It therefore provides a "matching factor" of searching and buying. This model suggests alternative products which customers bought after they clicked on the selected product. In contrast to the "also-bought" model it recommends products that are related but not purchased together. This model is the best choice to suggest alternative products for their search. For example, a user searches for a book which explains how to cut trees. If they finds a book and on the book page this exact same book is being recommended, it means that several users interested in cutting trees bought this book (and not others), which hints that this book is the very best choice. + +#### History based + +Pseudo recommendation model to show the user products from his own history. Like "you have just watched" box. + +### Additional models are available for advanced editions + +#### Frequently bought together / Bundle recommendations + +Products that were bought in this combination for at least n times can be treated as bundles and recommended as a "package". Based on the product which is currently shown, this model can recommend other products that fit exactly the one the user is currently looking at. An example could be: + +A user wants to buy a smartphone and browses on the detail page of smartphone X. Additionally to the "Also Clicked" recommendations, the Recommender Engine would recommend the bundle *Smartphone X + Smartphone X Cover + Headphones* as they were  bought together in exactly this combination for at least five times. + +It is not guaranteed that there's a bundle available for every product. Therefore a rendering logic should display a box of bundle recommendations only if they are available, otherwise the box can be left out. Remember that the currently displayed product is always included in the bundle. + +#### Content Based (by attributes) + +The content based algorithm calculates the similarity scores among products based on given attributes. This algorithm depends on expert knowledge because you should be able to define the most important attributes of the product catalog. An example could be the price, the producer or the location of a product. In the news domain, this may be the story location the article is talking about, the author or the category. The distinct attributes should be limited in their range (a nominal set) because it does not make sense to build similarities based on attributes that are different for each product (e.g. a timestamp or EAN-Code). There is also a need to assign weights to these attributes since they are used to compute the importance weight of each attribute for the similarity. + +#### Content Based (by semantic full text analysis) + +This model provides similarities based on free text analysis and indexing. This is a very powerful model publishers can use to get similar articles based on their content without the need of manual maintenance of related articles by e.g. editors. The full text analysis algorithm uses a search engine in the background. + +#### Similar Rated + +The similar rated algorithm provides recommendations based on user preferences. It predicts similar articles which the user will probably like and that will suit their interests. Recommendations for articles similar to their dislikes are suppressed. + +#### Best Rated + +The best rated model provides recommendations based on algorithms that include the ranking values and the amount of distinct ratings. It is best suited for landing or category pages. + +#### Random + +Semi-random products from the most recent ones. It allows injecting new products to the recommendation while the history based models are not yet able to recommend products based on the statistics. It is a really simplified and unsophisticated alternative if no other information is available to calculate and provide recommendations. + +This model is not built based on the history footprints but based on the imported product catalog. + +#### Editor based + +Products that are manually selected by a human. A customer can replace an automatically generated recommendation with a predefined list. It is best suited when the store administrator wants to add special offers or sell stock remains. It could also be called "static recommendations". + +#### Blacklist + +Products on this list will never be recommended in any scenario. Usually test products or products that are used for system monitoring are placed on this list. Be careful to use this model in any scenario config, it works globally! + +## Advanced Model Configuration + +Most of the models provide additional configuration parameters for customization. Here is an example: + +Open a model configuration in the Dashboard and enter the model configuration of a Collaborative-Filtering model + +![Model configuration in the Dashboard](img/model_config_in_dashboard.png) + +![Model configuration details](img/model_config_details.png) + +or an Editor-Based model + +![Model configuration - Editor-Based model](img/model_config_editor.png) + +![Model configuration - Editorial list](img/model_config_editorial_list.png) + +The parameters supported by the different types of models are described in the table below. Some models support submodels, see chapter [Submodels](#submodels) for more information. Additional differentiation criteria is the supported context. If a model requires context it can only be linked to scenarios that provide the necessary context. + +|Model type|Available parameters|Submodel support|Context| +|---|---|---|---| +|Popularity|Relevant event history defines the time period for which the statistics must be analyzed. Dependent on the product type it can be between several months and several hours.Fast event aging can be used to weight newer events higher than older events.|yes
submodels based on category are enabled by default|not needed| +|Also clicked/bought / Ultimately bought|Both also clicked and ultimately bought models allow to define the relevant event history.|yes, manual|required (either context items or user data)| +|Random|This model requires the maximum age for the items that should be recommended by this model.|no|not supported| +|History based|The type of the history (click-history or buy-history) must be specified|no|required (user data)| +|Editor based|The list of recommendations must be created manually by the editor.|no|not supported| +|Blacklist|The list of items that should be excluded from the recommendations must be created manually by the editor.|no|not supported| + +Do not confuse event history age with item age. History age is the age of the user's footprint (for example "they clicked on the product A two weeks ago"). Item age is the time over which the item is available in the shop - so to say "how new is the item". The history is filled automatically over event tracking (see [4. Event Types](event_types.md)). The item catalog must be filled separately over an item import. + +## Submodels + +Statistics-based recommendations often have the disadvantage of providing recommendations limited to the "most"-popular, "most"-suitable to you or "most"-similar products. Often it is needed to extend the set of available recommendations by defining a subset of most-"something" items based on some external criteria. For example: + +- most popular products for the predefined age (searching for a toy) +- also bought products with the same color (for clothes) +- also bought products with a predefined price (searching for a birthday present) + +Submodels provide the possibility to group all the products based on an attribute. Recommendations can then be requested especially for the selected group. + +#### Nominal Attributes + +If the possible values of some attribute are a limited set of values, we talk about a nominal attribute submodel, for example the number of possible colors. The set of possible values is usually limited and every product has a single color attached to it. + +Submodels must be manually configured. Therefore it works only if the number of possible values is relatively small and there is a large group of products for every value. Good examples would be "color" for clothing store, "genre" for a book store or "city district" for a newspaper. Bad examples would be ~~street name~~ (there are too many of them), ~~book author~~ (there are too many of them as well) or EAN-Code (they are unique and therefore hard to group). + +Coming back to the color example. We are configuring submodels for a clothing store and want to get recommendations for some color (it can be a predefined color or a color of the context item). Every manufacturer has its own color classification. Similar colors can be grouped together as shown in the picture below: + +![Attribute example](img/attribute_example.png) + +The configuration is done using the property dialog of the recommendation model. + +![Attribute configuration](img/attribute_config.png) + +After the submodel is configured and built (happens automatically during the nightly build process) there are several cases for recommendations. Based on the example above the following are possible: + +|Attribute example in the recommendation request|Result| +|---|---| +|color=lime|Value "lime" is found in the green-ish group (Group 1). There are products in this group. If a model has some of them, they will be recommended.| +|color=sand|Value "indigo" is found in the blue-ish group. There are no products in the group. Nothing will be recommended by this model. The fallback model (if configured) will be used.| +|color=white|Value "white" was not found in any of groups. The main model will be used. Items from all submodel groups can appear in the result (as if the submodels were not configured at all.).| +|no attribute specified|The main (full) model will be used, means the request is handled as if submodels were not configured at all. Products from the whole shop could appear in the recommendation list.| + +#### Numeric Attributes + +Similar to the nominal submodels, the configuration is about the definition of subgroups. +It is done by selecting limits for every group. + +![Submodel configuration](img/submodel_config.png) + +There are two values used for setting the limits — `from` and `to`. + +The logic behind it is as follows: + +- The `from` value indicates the beginning of the range of the subgroup and belongs to it. +- The `to` value indicates only the range end and does not belong to the subgroup. +- The **only exception** is the last of the defined subgroups. +In its case, the `to` value indicates the range end and also belongs to it. + +!!! note + + 1. Both numeric and nominal attribute can have multiple values. Such a product will be placed in multiple submodel groups. + 1. Submodel results are not available immediately after the submodel is configured. In contrary to category filters and general filters, submodels must be (re)built during the nightly building process. The results are usually available on the next day. + 1. It is possible to specify a single or multiple attributes with multiple values for requesting recommendations. In this case the recommendation will be fetched from all the submodels and merged based on the weight (aka relevance). If one of the submodels delivers recommendations with better relevance (which is very often the case) it is possible that the results of other models will be removed from the list. + +!!! tip + + Once configured, submodels are enabled for the model globally. All the scenarios which use this model will be aware of it. If it is not intended to activate the recommendation grouping in some cases, do not provide the attribute parameter in the request. The submodel is not used then. + + See [Recommendation API](https://doc.ezplatform.com/en/master/guide/personalization/recommendation_api.md) in the developer documentation for more information. diff --git a/docs/personalization/scenarios.md b/docs/personalization/scenarios.md new file mode 100644 index 00000000..e17a6765 --- /dev/null +++ b/docs/personalization/scenarios.md @@ -0,0 +1,23 @@ +# 8. Scenarios + +A scenario is a configuration for getting recommendations. It consists of: + +1. a content type to be returned as recommendation,  +1. a filter configuration, +1. a set of models to be used for generating recommendations. + +![Scenario configuration](img/scenario_configuration_full.png) + +We strongly encourage adding several models to a scenario in order to avoid empty recommendation boxes. In the configuration interface there is a matrix provided for the configuration. You can drag available models from the left side into the scenario matrix on the right side. + +![Scenario configuration matrix](img/scenario_matrix.png) + +The scenario configuration field has several rows. Models located in the same row will be used in parallel and the result will contain an equally distributed mixture of all used model results (horizontal configuration). Models located on the second and third row will be used only if models from the row above return no or not enough results (vertical configuration). + +Following the example in the images, the first recommendations that will be displayed to the user will come from "Also purchased". If there are no or not enough recommendations available, the "Also clicked" model will be requested. If there are still not enough products in the result set, the "Top purchased" products from the Fail-safe row (not visible in the example image) will be added according to the number of requested recommendations. On the right side of the first rows there is a button to configure Category Filter usage in the recommendation request. This is described in detail in [Category Filter](filters.md#category-filter). + +In contrast to the model configuration described in the chapter [6. Recommendation Models](recommendation_models.md), the configuration performed in this step is applied only to the selected scenario. + +The **Preview** tab can be used to simulate a recommendations request performed by the system. One only needs to add the required parameters and click 'Send' (in the upper right corner). + +![Scenario preview](img/scenario_preview.png) diff --git a/docs/personalization/use_cases.md b/docs/personalization/use_cases.md new file mode 100644 index 00000000..9844260b --- /dev/null +++ b/docs/personalization/use_cases.md @@ -0,0 +1,29 @@ +# 2. Use Cases + +There are many different use cases where recommendations can be used. The most common ones are located in the e-commerce and publishing industries. + +## E-commerce + +E-commerce recommendations can be very powerful to help customers find what they're looking for. If a user is not sure about what to buy, recommendations can be used to show similar, alternative or complementary products. Some typical use cases are: + +- On the landing page the current bestsellers ('Hot Sellers') are shown to every customer. +- A detail page displays the products that were bought by others ('What other customers bought') or have been frequently bought together (e.g. this TV and a HDMI cable). +- The shopping cart page shows recommendations ('Related to your shopping cart') matching the products in the cart. +- On a category page, bestsellers of the current category are shown. +- Additionally on the landing page and on the detail page a recommendation bar could be placed to show **personalized recommendation** (based on their latest profile information) for the current user. + +![Landing page](img/use_case_landing_page.png "Landing page") + +![Detail page](img/use_case_detail_page.png "Detail page") + +![Shopping basket](img/use_case_shopping_basket.png "Shopping basket") + +In the pictures above each recommendation box presents a scenario. Scenarios are configurations that define what kind of recommendations should be delivered. More can be read under [8. Scenarios](scenarios.md) + +## Publishing + +Recommendation and Personalization in the publishing business provide indirect value by keeping users on the website. Unlike in the e-commerce business, publishers often do not sell content, it is provided for free and cross-financed by advertisement. Increasing the CTR (click-through-rate) and adding value generated by advertisement is one of the drivers in the publishing business. Use cases for placing recommendations are straightforward: + +- On the landing page, the most read content is presented. +- On every category page, the most popular content in the current category is shown. +- On every content page, the related content is shown. diff --git a/docs/personalization/user_data_import.md b/docs/personalization/user_data_import.md new file mode 100644 index 00000000..8ccce55a --- /dev/null +++ b/docs/personalization/user_data_import.md @@ -0,0 +1,15 @@ +# 10. User Data Import + +By default the recommendation engine has very little information about the user visiting the website, especially first-time visitors. The only information provided in the event tracking and recommendation request is the customer ID of the website owner and an external user ID (usually an anonymous session ID). This external user ID is again anonymized in the recommendation engine by a hashing algorithm. + +Sometimes it is helpful to store additional attributes for every user, for example age or home city. It is possible to retrieve the stored information based on the external user ID, but due to the hashing step mentioned above, it is not possible to get the external user ID within the user's attribute set (unless the external ID is not explicitly stored as an attribute of course). + +How user attributes are imported and what they can be used for is described in the [User API](https://doc.ezplatform.com/en/master/guide/personalization/user_api.md). + +Usage of the user attribute in the recommendation process is quite straightforward and explained in detail in the [Recommendation API](https://doc.ezplatform.com/en/master/guide/personalization/recommendation_api.md). + +!!! tip + + An example of how user attributes can be used in the recommendation engine:[Boost-Filters](filters.md#boost-filters) + + Information on the import format can be found in the developer guide:[User API](https://doc.ezplatform.com/en/master/guide/personalization/user_api.md) diff --git a/docs/publishing/advanced_publishing_options.md b/docs/publishing/advanced_publishing_options.md index 6e8e1ceb..8924969d 100644 --- a/docs/publishing/advanced_publishing_options.md +++ b/docs/publishing/advanced_publishing_options.md @@ -1,6 +1,6 @@ # Advanced publishing options -!!! enterprise +!!! dxp There are three ways in which you can schedule content to be published in the future: @@ -12,6 +12,8 @@ The Schedule tab is available in the configuration of all Page blocks. You can use it to set the date and time when the block becomes visible and when it disappears from a Page. + If you configure the reveal and/or hide dates for a Page block, you can then see the scheduled blocks (except for the Content Scheduler) in the calendar. + This way you can see what content will be available in the future. ![Schedule tab](img/schedule_tab.png) @@ -57,7 +59,7 @@ ## Calendar widget The calendar widget enables you to view and perform actions on various events. - Out of the box, it displays Content items scheduled for future publication, but your page administrator can configure custom events. + Out of the box, it displays Content items and Page blocks scheduled for future publication, but your page administrator can configure custom events. Therefore, the calendar can contain other events, e.g. national holidays, important dates, etc. To access the calendar widget, in the **Content Panel**, open the **Calendar** tab. @@ -113,18 +115,18 @@ ## Rescheduling or cancelling publications In case of publishable Content items (e.g. articles), you can change or cancel their planned publication using the **Reschedule** or **Cancel publication** buttons. - These buttons are accessible in the Dashboard and the Calendar widget. + These buttons are available on the **My dashboard** screen, and in the Calendar widget. |Button|Description| |------|-----------| |![Reschedule button](img/selection_action_bar_reschedule.png)|Reschedule all selected events.| |![Discard button](img/selection_action_bar_discard.png)|Cancel the future publication of selected events.| - #### Rescheduling or cancelling with Dashboard + #### Rescheduling or cancelling with the dashboard - To reschedule or cancel events in the Dashboard, perform the following actions: + To reschedule or cancel events with the dashboard, perform the following actions: - 1. Open the Dashboard by clicking the eZ logo in the left-upper corner. + 1. Open the **My dashboard** screen by clicking the eZ logo in the left-upper corner. 1. In **My content** panel, view all your scheduled Content items by clicking **My scheduled content**. 1. From **My future publications**, select all Content items to have their publication time rescheduled or cancelled. 1. Using the buttons in the upper-right corner, perform one or both of the following actions: @@ -133,9 +135,9 @@ - To cancel publication, click the **Cancel publication** button. In the modal window, confirm the cancellation by selecting **Cancel publication**. - ![Reschedule or cancel in Dashboard](img/reschedule_cancel_dashboard.png "Rescheduling or cancelling in the Dashboard") + ![Reschedule or cancel with the dashboard](img/reschedule_cancel_dashboard.png "Rescheduling or cancelling with the dashboard") - #### Rescheduling or cancelling with Calendar toolbar + #### Rescheduling or cancelling with the Calendar toolbar In the [Calendar widget](#calendar-widget), select all events to have their publication time rescheduled or cancelled. Using the toolbar buttons, perform one of the following actions: diff --git a/docs/publishing/editorial_workflow.md b/docs/publishing/editorial_workflow.md index a7cf934a..cf74f16a 100644 --- a/docs/publishing/editorial_workflow.md +++ b/docs/publishing/editorial_workflow.md @@ -1,6 +1,6 @@ # Editorial workflow -!!! enterprise +!!! dxp Using editorial workflow you can pass content between different stages in a preconfigured flow. Typically, the stages correspond to different teams or departments that contribute to content @@ -16,7 +16,7 @@ Contact your administrator or developer team to configure workflows. See [developer documentation](https://doc.ezplatform.com/en/master/guide/workflow/) for information on how to do it. - You can view Content items which are in different stages under review in the Dashboard in the Review queue table. + You can view Content items which are in different stages under review on the **My dashboard** screen, in the Review queue table. The table will only show the Content items that you have permissions to edit. ![Review queue in the dashboard](img/dashboard_review_queue.png) @@ -25,7 +25,7 @@ It lists all the transitions that this content has gone through. - ![Review queue in the dashboard](img/workflow_events_timeline.png) + ![Events timeline](img/workflow_events_timeline.png) You can view all configured workflows in the Admin Panel by selecting **Workflow**. diff --git a/docs/publishing/img/compare_icon.png b/docs/publishing/img/compare_icon.png index c35f1e72..3ef13714 100644 Binary files a/docs/publishing/img/compare_icon.png and b/docs/publishing/img/compare_icon.png differ diff --git a/docs/publishing/img/content_item_versions.png b/docs/publishing/img/content_item_versions.png index 0d78228c..41ad52a5 100644 Binary files a/docs/publishing/img/content_item_versions.png and b/docs/publishing/img/content_item_versions.png differ diff --git a/docs/publishing/img/publishing_options.png b/docs/publishing/img/publishing_options.png index c3c92691..4904b164 100644 Binary files a/docs/publishing/img/publishing_options.png and b/docs/publishing/img/publishing_options.png differ diff --git a/docs/publishing/publishing.md b/docs/publishing/publishing.md index e647f5a4..98783462 100644 --- a/docs/publishing/publishing.md +++ b/docs/publishing/publishing.md @@ -27,6 +27,16 @@ You will also have the option to create a new draft based on the currently publi Note that you cannot edit an unpublished draft created by another user. +### Autosave + +While you edit a Content item or product, [[= product_name_oss =]] saves your work automatically to help you preserve the progress in an event of a failure. +To recover your work, open the most recent draft in the **Versions** tab of the Content item. +Alternatively, open the most recent draft of your work on the **My dashboard** page, the **Drafts** table. + +Autosave is enabled by default, and set to save a draft every 60 seconds. +You can toggle autosave or change the time between saving attempts in **User settings**, by changing +the values in the **Autosave draft** and **Autosave interval** fields. + ### Content versions Content in the repository can have more than one version. @@ -44,32 +54,32 @@ You can view all versions of a Content item in the **Versions** tab. ![All versions of a Content item](img/content_item_versions.png "All versions of a Content item") -!!! enterprise +!!! dxp #### Comparing versions - + You can compare two versions of the same Content item by clicking the compare icon in the **Versions** tab: - + ![](img/compare_icon.png) - + Select the two version you want to compare in the drop-down menus at the top of the screen. - + ![](img/compare_results_1_col.png "Version comparison in two-column view") - + You can choose to view the comparison in two columns, side by side, or in one column, with differences highlighted. - + ![](img/compare_results_2_col.png "Version comparison in one-column view") - + You can also compare media Field Types such as images. - + ![](img/compare_results_media.png "Version comparison image") - + !!! note - + Not all Field Types are available for comparison. You cannot preview the difference in the following Field Types: - + - Form - Landing Page - User account diff --git a/docs/shop_administration/chat_tool_olark.md b/docs/shop_administration/chat_tool_olark.md new file mode 100644 index 00000000..9b9d8b00 --- /dev/null +++ b/docs/shop_administration/chat_tool_olark.md @@ -0,0 +1,127 @@ +# Olark chat tool + +Olark is a third-party chat tool that you can enable as a plugin. + +![](img/olark_addon.png) + +![](img/olark_chat.png) + +![](img/olark_info.png) + +The shop can forward the name of a user (if logged in) to the service employee. +Besides a chat functionality the service employee can assist the customer e.g. in pointing them to the correct place in the shop. + +If no support employee is available, the conversion is sent by email. + +!!! note + + Some features are available with a special contract only. + See [Olark plans](https://www.olark.com/pricing) for more information. + +### Online/Offline + +The chat windows indicates whether a salesperson is available or not. + +If a salesperson is online, the chat indicates this and it is possible to display an icon or an image of the salesperson. + +![](img/olark_online_offline.png) + +### Change the text inside the chat + +You can change and translate all texts and labels used in the chat. + +### Using the chat for sales + +Olark offers a web interface where chats can be handled. + +In addition, local chat clients can be used as well, e.g.: + +- iChat +- XMMP Clients +- mobile apps + +### Restrict access for chat + +You can restrict the chat tool to: + +- specific products +- specific customers or customer group +- from a given basked amount +- given countries + +The chat can be displayed after the user has been on a page for a given time. + +### Information about the user + +Depending on your privacy rules, information about the user can be displayed in the chat, such as: + +- Geo information +- Visited pages +- Name and company if logged in +- Amount of the basket +- Customer number + +### Design of the chat tool + +You can modify the design of the plugin in Olark backend. + +### Groups of salespersons + +A chat can be assigned to a group of users as well. + +### Alerts and options for employees + +![](img/olark_alerts.png) + +You can set up alerts such as sounds or desktop notifications. Olark can be connected to internal tools such as Jabber. + +A user can set their status to online / away. + +### Co-browsing + +Olark supports [co-browsing](https://www.olark.com/help/cobrowsing) if a customer needs support. + +Co-browsing is supported by IE8+, Firefox, Safari, Chrome, and Opera, as well as Safari for iOS devices. + +### Chat commands + +Olark supports multiple chat functions. For a complete list see [Olark documentation.](https://www.olark.com/help/commands) + +Important commands: + +- `tag` - tags a chat to label conversations +- `transfer` - transfers a conversation to another operator +- `push` - sends a visitor to a different website URL +- `name` - gives a website user a name +- `case` - pushes the transcript for your chat into your CRM +- `send` - enables you to forward a chat transcript by email during a chat +- `feedback` - enables you to send a Chat Rating to the visitor + +## Configuration + +Create an account on [www.olark.com.](http://www.olark.com) You can choose a free version or another option as required. +We recommend the paid version since it offers support features such as co-browsing. + +Configure Olark in the **Customer** section of configuration settings: + +![](img/olark_customer.png) + +Change the following settings: + +- Enable the service +- Enter the Olark Account ID + +You can find the Olark Account ID in the "Installation" section. + +![](img/olark_installation.png) + +After storing the configuration you should see a chat tool at the bottom of your page. + +In the settings section on [www.olark.com](http://www.olark.com) you can also configure: + +- the location where the chat should appear +- translations +- color +- a photo of the support employee + +See [Olark documentation](https://www.olark.com/api) for more details. diff --git a/docs/shop_administration/cockpit.md b/docs/shop_administration/cockpit.md new file mode 100644 index 00000000..805f2228 --- /dev/null +++ b/docs/shop_administration/cockpit.md @@ -0,0 +1,56 @@ +# Cockpit + +The Cockpit shows the most important information for the shop owner referring to the installation. + +![](img/commerce_cockpit.png) + +## Overview + +Currently, available sections: + +- Technical subsection + - HDD usage + - Server load + - ERP Status +- Active shopping carts (in last 30 minutes) +- Number of customers +- Number of products (The number of products only respects the content model data provider. +The number of products in the eContent is displayed in **Control Center** / **Manage eContent**.) + +## Sales and Orders + +The Dales and Orders data refers to a specific shop. +If there is more than one shop in the installation, the shop owner can choose shop and currency. + +Currently available data: + +- Sales - shows orders value in time +- Orders - shows number of orders + +You can select a specific date range or one of predefined date ranges. + +## Products and sales + +Product and sales section shows data in tables such as: + +- Bestsellers (Top 20) +- Last orders (Last 365) +- Best clients (Top 20) + +Tabs **Last orders** and **Best clients** are only visible for users who have the Siso policy / Read customers and orders Policy. See [Permissions](permissions.md) for more information. + +## Search + +The search section offers the following statistics: + +1\. Top search terms + +Lists top 50 search terms including how often they are searched for and how many hits (average) they have. + +2\. Last search terms + +The latest 50 search terms ordered by date. + +3\. Most searched terms with less hits + +This table shows search terms which did not lead to a result and the number of times they were searched for. diff --git a/docs/shop_administration/components.md b/docs/shop_administration/components.md new file mode 100644 index 00000000..eda9ad7b --- /dev/null +++ b/docs/shop_administration/components.md @@ -0,0 +1,12 @@ +# Components + +**eCommerce** > **Components** contains text modules responsible for translations of shop text. + +!!! caution + + Do not edit the "silver-eshop" Content item manually. + It handles configuration settings and is updated by the changes from the **Configuration** section. + +![](img/components_menu.png) + +For more information about text modules, see [Translations](translations.md). diff --git a/docs/shop_administration/configuration_settings.md b/docs/shop_administration/configuration_settings.md new file mode 100644 index 00000000..760be775 --- /dev/null +++ b/docs/shop_administration/configuration_settings.md @@ -0,0 +1,161 @@ +# Configuration settings + +To change configuration settings for the shop, go to **eCommerce** > **Configuration settings**. + +![](img/configuration_settings.png) + +!!! caution + + Settings defined in the Back Office always override the configuration in YAML files. + +## Catalog + +The catalog section defines details for structure and layout of the catalog. + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Layout product category page|siso_core.default.category_view: product_list|product_list|Changes the layout for the product category page. `category` shows category boxes only, `product_list` shows products only, `both` shows both categories and products. HTTP cache has to be cleared to make changes visible.| +|Last viewed product limit|silver_eshop.default.last_viewed_products_in_session_limit: 10|10|The maximum number of products to be stored per user for last viewed products.| +|Product description character limit|silver_eshop.default.catalog_description_limit: 50|50|The number of characters for product description in the list views / search results. When the limit is reached, the description will be truncated.| + +## Price + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Last currency rate change||empty|When the conversion rate has last changed.| +|Automatic currency conversion||False|If no price is set up for this currency, the shop can calculate the price using a conversion rate from the configuration.| +|Currency conversion rate|||The conversion rate between currencies.| +|Default currency|siso_core.default.standard_price_factory.fallback_currency: EUR|EUR|Used as currency for the shop (e.g. per SiteAccess).| +|Base currency|siso_core.default.standard_price_factory.base_currency: EUR|EUR|Base currency of the shop in general (used for the fields "product unit price" and "fallback shipping price". The base currency is used for the automatic currency conversion).| +|Price providers for product listing page|siso_price.default.price_service_chain.product_list:
- siso_price.price_provider.shop
- siso_price.price_provider.remote|shop|Price calculation engines used for generating prices and stock information. `siso_price.price_provider.shop` indicates the price engine in the shop, `siso_price.price_provider.remote` indicates ERP. This configuration works as a chain, so if the first engine fails, the second one is used as a fallback (e.g. if ERP is not available). Price calculations in ERP systems may cause slower responses from the system, depending on the specific complexity.| +|Price providers for product detail page|siso_price.default.price_service_chain.product_detail:
- siso_price.price_provider.shop
- siso_price.price_provider.remote|shop|Shop or remote.| +|Price providers for product sliders|siso_price.default.price_service_chain.slider.product_detail:
- siso_price.price_provider.shop
- siso_price.price_provider.remote|shop|Shop or remote.| +|Price providers for basket|siso_price.default.price_service_chain.basket:
- siso_price.price_provider.shop
- siso_price.price_provider.remote|shop|Shop or remote.| +|Price providers for editing variants|siso_price.default.price_service_chain.basket_variant:
- siso_price.price_provider.shop
- siso_price.price_provider.remote|shop|Shop or remote.| +|Price providers for stored baskets lists|siso_price.default.price_service_chain.stored_basket:
- siso_price.price_provider.remote
- siso_price.price_provider.shop|shop|Shop or remote.| +|Price providers for whishlist|siso_price.default.price_service_chain.wish_list:
- siso_price.price_provider.shop
- siso_price.price_provider.remote|shop|Shop or remote.| +|Price providers for quickorder (click on update)|siso_price.default.price_service_chain.quick_order:
- siso_price.price_provider.shop
- siso_price.price_provider.remote|shop|Shop or remote.| +|Price providers for quickorder (product preview via Ajax)|siso_price.default.price_service_chain.quick_order_line_preview:
- siso_price.price_provider.shop
- siso_price.price_provider.remote|shop|Shop or remote.| +|Price providers for comparison lists|siso_price.default.price_service_chain.comparison:
- siso_price.price_provider.remote
- siso_price.price_provider.shop|shop|Shop or remote.| +|Price providers for search lists|siso_price.default.price_service_chain.search_list:
- siso_price.price_provider.remote
- siso_price.price_provider.shop|shop|Shop or remote.| +|Price provider for bestseller list|siso_price.default.price_service_chain.bestseller_list:
- siso_price.price_provider.shop
- siso_price.price_provider.remote|shop|Shop or remote.| + + +## Advanced Catalog Features + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Disable ordering for discontinued products|siso_basket.default.discontinued_products_listener_active: true|True|If enabled, discontinued and out-of-stock products cannot be ordered.| +|Check packaging units and adjust quantity of discontinued products|siso_basket.default.discontinued_products_listener_consider_packaging_unit: true|True|If enabled, the shop modifies the quantity of discontinued products ordered by a user automatically to the next packaging unit.| + +## Customer + +!!! note + + The Olark chat tool requires an account with this third party provider. + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Enable Olark Chat|siso_core.default.marketing.olark_chat.activated: false|True|Check www.olark.com for more information.| +|Please enter the Account ID from www.olark.com here|siso_core.default.marketing.olark_chat.id: '6295-386-10-7457'||Olark account ID| + +## Mail and Newsletter + +!!! note + + Newsletter2go requires the activation of a separate plugin and an account with Newsletter2go. + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Email address of a sales person|siso_eshop.default.orderconfirmation_sales_email_address:||This person gets a CC of an order confirmation email (for all orders generated in the shop)| + +### Newsletter + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Activate Newsletter2go|siso_newsletter.default.newsletter_active: false|False|You need to create an account on www.newsletter2go.com| +|Unsubscribe from all newsletters|siso_newsletter.default.unsubscribe_globally: true|True|Unsubscribe options. If true, shop users can unsubscribe from all newsletters in one step.| +|Newsletter only for logged in users|siso_newsletter.default.display_newsletter_box_for_logged_in_users: true|True|If enabled, only logged-in users see the newsletter box.| +|Newsletter2go username|siso_newsletter.default.newsletter2go_username: ''|-|See newsletter2go account| +|Newsletter2go password|siso_newsletter.default.newsletter2go_password: ''|-|See newsletter2go account| +|Newsletter2go authentication key|siso_newsletter.default.newsletter2go_auth_key: ''|-|This key is available in your newsletter2go account| + +## Basket + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Duration of storing anonymous baskets|ses_basket.default.validHours: 120|120|How many hours anonymous baskets are stored for.| +|Update product data after this time|ses_basket.default.refreshCatalogElementAfter: '1 hours'|1 hours|Th time product data is cached in the basket for. Use a "1 hour" syntax.| +|Display stock as a column|ses_basket.default.stock_in_column: true|True|True - display in column, False - display inline (in product name column).| +|Description character limit|ses_basket.default.description_limit: 50|50|Number of characters that are visible in the description field.| +|Enable additional comment line for basket|ses_basket.default.additional_text_for_basket_line: false|False|If enabled, the customer can add a comment to each line in the basket or quick order.| +|Max. chars for the additional comment line|ses_basket.default.additional_text_for_basket_line_input_limit: 30|30|ERP often has a restriction and may not support long comments. This can lead to errors during the ordering process.| + +## Stored basket + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Display stock as a column|ses_stored_basket.default.stock_in_column: true|True|True - display in column, False - display inline (inside product name column).| +|Description character limit|ses_stored_basket.default.description_limit: 50|50|Number of characters that are visible in the description field.| + +## Wishlist + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Description character limit|ses_wishlist.default.description_limit: 50|50|Number of characters that are visible in the description field| + +## ERP + +Defines the details of data exchange and processes between your shop and your ERP. +ERP integration requires a Web.Connector license or another webservice interface between ERP and the shop. + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Default Country for Template Debitor|siso_core.default.template_debitor_country: DE|DE|Which country is used as a default. Use the country code such as "DE" for Germany.| +|Login with Customer Number|siso_core.default.enable_customer_number_login: false|False|Whether the login process includes a field for providing customer number.| +|Use a template debitor number for this shop|siso_core.default.use_template_debitor_customer_number: true|True|A template debitor customer number is used if a customer does not have a customer number from the ERP. Template debitor customer numbers can be defined for each country.| +|Use a template contact number for this shop|siso_core.default.use_template_debitor_contact_number: true|True|A template contact number is used if a customer does not have a customer and contact number from the ERP. Template contact numbers can be defined for each country.| +|price_requests_without_customer_number/config|siso_core.default.price_requests_without_customer_number: true|True|Whether a price request is sent to the ERP without customer number. A template debitor is used to calculate prices.| +|Recalculate prices using the ERP after|ses_basket.default.recalculatePricesAfter: '3 hours'|True|Information from the ERP is cached to reduce the traffic towards the ERP. Use a "1 hour" syntax.| +|Variants handling in the ERP|silver_eshop.default.erp.variant_handling: SKU_ONLY|SKU_ONLY|Handling of variant products SKU_ONLY - if the ERP system uses different SKUs per variant. SKU_AND_VARIANT - if the ERP system uses a combination of SKU and variant code for variants.| +|URL of the Web-Connector|siso_erp.default.web_connector.service_location:|-|The URL points to the Web.Connector installed by the ERP system. Use an HTTPS connection and make sure that the shop can access this IP and port only.| +|User name (configured per Web-Connector)|silver_eshop.default.webconnector.username: admin|admin|User name for communication with the Web.Connector service.| +|Password (configured per Web-Connector)|silver_eshop.default.webconnector.password: passwo|passwo|Password for communication with the Web.Connector service.| +|SOAP Web-Service timeout in seconds|silver_eshop.default.webconnector.soapTimeout: 5|5|Timeout (web service) for communication with the Web.Connector in seconds.| +|Timeout towards the ERP-System in seconds|silver_eshop.default.webconnector.erpTimeout: 5|5|Timeout (ERP) for communication with the Web.Connector in seconds.| + +## Miscellaneous + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Number of bestsellers displayed on bestseller page|siso_core.default.bestseller_limit_on_bestseller_page: 6|6|The limit of bestsellers that are displayed.| +|Number of bestsellers displayed on catalog pages|siso_core.default.bestseller_limit_on_catalog_page: 6|6|The limit of bestsellers that are displayed.| +|Number of bestsellers displayed in a slider|siso_core.default.bestseller_limit_in_silver_module: 6|6|The limit of bestsellers that are displayed.| +|Threshold bestseller|siso_core.default.bestseller_threshold: 1|1|How often a product has to be bought to count as a bestseller.| + +## Checkout + +Configure your payment and shipping methods. Paypal requires an account. + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Payment method "PayPal"|siso_checkout.default.payment_method.paypal_express_checkout: true|True|Enables PayPal in checkout.| +|Payment method "invoice"|siso_checkout.default.payment_method.invoice: true|True|Enables invoice in checkout.| +|Shipping method "standard"|siso_checkout.default.shipping_method.standard: true|True|Enables shipping method standard in checkout.| +|Shipping method "express"|siso_checkout.default.shipping_method.express_delivery: true|True|Enables shipping method express in checkout.| + +## Fallback configuration for price engine + +Fallback configuration for price engine. It is used, if no shipping costs are set in [price and stock management](manage_prices_and_stock.md). + +|Name|Stored Configuration File|Default|Description| +|--- |--- |--- |--- | +|Fallback costs for shipping|siso_local_order_management.default.shipping_cost: ''|-|Shipping cost in shop currency if free shipping limit is not reached.| +|No shipping costs for orders from amount|siso_local_order_management.default.shipping_free: ''|-|Free shipping limit in shop currency.| +|Fallback VAT Code for shipping costs|siso_core.default.shipping_vat_code: '19'|19|Used for calculating the VAT part for shipping.| + +## Configuration for countries/site accesses + +For some settings the shop requires a country-specific configuration. + +![](img/configuration_settings_en.png) diff --git a/docs/shop_administration/img/backend_menu.png b/docs/shop_administration/img/backend_menu.png new file mode 100644 index 00000000..6d483edb Binary files /dev/null and b/docs/shop_administration/img/backend_menu.png differ diff --git a/docs/shop_administration/img/backend_menu_center.png b/docs/shop_administration/img/backend_menu_center.png new file mode 100644 index 00000000..eac1173b Binary files /dev/null and b/docs/shop_administration/img/backend_menu_center.png differ diff --git a/docs/shop_administration/img/browse_products.png b/docs/shop_administration/img/browse_products.png new file mode 100644 index 00000000..b1fa953f Binary files /dev/null and b/docs/shop_administration/img/browse_products.png differ diff --git a/docs/shop_administration/img/commerce_cockpit.png b/docs/shop_administration/img/commerce_cockpit.png new file mode 100644 index 00000000..e717bcdd Binary files /dev/null and b/docs/shop_administration/img/commerce_cockpit.png differ diff --git a/docs/shop_administration/img/components_menu.png b/docs/shop_administration/img/components_menu.png new file mode 100644 index 00000000..8a8df716 Binary files /dev/null and b/docs/shop_administration/img/components_menu.png differ diff --git a/docs/shop_administration/img/configuration_settings.png b/docs/shop_administration/img/configuration_settings.png new file mode 100644 index 00000000..f7c729b3 Binary files /dev/null and b/docs/shop_administration/img/configuration_settings.png differ diff --git a/docs/shop_administration/img/configuration_settings_en.png b/docs/shop_administration/img/configuration_settings_en.png new file mode 100644 index 00000000..9c8ee057 Binary files /dev/null and b/docs/shop_administration/img/configuration_settings_en.png differ diff --git a/docs/shop_administration/img/ecommerce_jobs.png b/docs/shop_administration/img/ecommerce_jobs.png new file mode 100644 index 00000000..97f19ee1 Binary files /dev/null and b/docs/shop_administration/img/ecommerce_jobs.png differ diff --git a/docs/shop_administration/img/econtent.png b/docs/shop_administration/img/econtent.png new file mode 100644 index 00000000..b5a9a52f Binary files /dev/null and b/docs/shop_administration/img/econtent.png differ diff --git a/docs/shop_administration/img/econtent_types.png b/docs/shop_administration/img/econtent_types.png new file mode 100644 index 00000000..0e16fc34 Binary files /dev/null and b/docs/shop_administration/img/econtent_types.png differ diff --git a/docs/shop_administration/img/email_archive.png b/docs/shop_administration/img/email_archive.png new file mode 100644 index 00000000..7f037750 Binary files /dev/null and b/docs/shop_administration/img/email_archive.png differ diff --git a/docs/shop_administration/img/flexible_categories.png b/docs/shop_administration/img/flexible_categories.png new file mode 100644 index 00000000..f8854742 Binary files /dev/null and b/docs/shop_administration/img/flexible_categories.png differ diff --git a/docs/shop_administration/img/manage_prices_menu.png b/docs/shop_administration/img/manage_prices_menu.png new file mode 100644 index 00000000..24fe76a7 Binary files /dev/null and b/docs/shop_administration/img/manage_prices_menu.png differ diff --git a/docs/shop_administration/img/olark_addon.png b/docs/shop_administration/img/olark_addon.png new file mode 100644 index 00000000..a808c086 Binary files /dev/null and b/docs/shop_administration/img/olark_addon.png differ diff --git a/docs/shop_administration/img/olark_alerts.png b/docs/shop_administration/img/olark_alerts.png new file mode 100644 index 00000000..6a544fbf Binary files /dev/null and b/docs/shop_administration/img/olark_alerts.png differ diff --git a/docs/shop_administration/img/olark_chat.png b/docs/shop_administration/img/olark_chat.png new file mode 100644 index 00000000..58075172 Binary files /dev/null and b/docs/shop_administration/img/olark_chat.png differ diff --git a/docs/shop_administration/img/olark_customer.png b/docs/shop_administration/img/olark_customer.png new file mode 100644 index 00000000..cb4957c7 Binary files /dev/null and b/docs/shop_administration/img/olark_customer.png differ diff --git a/docs/shop_administration/img/olark_info.png b/docs/shop_administration/img/olark_info.png new file mode 100644 index 00000000..7e094a0f Binary files /dev/null and b/docs/shop_administration/img/olark_info.png differ diff --git a/docs/shop_administration/img/olark_installation.png b/docs/shop_administration/img/olark_installation.png new file mode 100644 index 00000000..a4818986 Binary files /dev/null and b/docs/shop_administration/img/olark_installation.png differ diff --git a/docs/shop_administration/img/olark_online_offline.png b/docs/shop_administration/img/olark_online_offline.png new file mode 100644 index 00000000..30f91a31 Binary files /dev/null and b/docs/shop_administration/img/olark_online_offline.png differ diff --git a/docs/shop_administration/img/order_management1.png b/docs/shop_administration/img/order_management1.png new file mode 100644 index 00000000..14e39b22 Binary files /dev/null and b/docs/shop_administration/img/order_management1.png differ diff --git a/docs/shop_administration/img/order_management_filter.png b/docs/shop_administration/img/order_management_filter.png new file mode 100644 index 00000000..78dd39e4 Binary files /dev/null and b/docs/shop_administration/img/order_management_filter.png differ diff --git a/docs/shop_administration/img/order_management_filter_1.png b/docs/shop_administration/img/order_management_filter_1.png new file mode 100644 index 00000000..21f64676 Binary files /dev/null and b/docs/shop_administration/img/order_management_filter_1.png differ diff --git a/docs/shop_administration/img/price_management_prices.png b/docs/shop_administration/img/price_management_prices.png new file mode 100644 index 00000000..1d37cd0c Binary files /dev/null and b/docs/shop_administration/img/price_management_prices.png differ diff --git a/docs/shop_administration/img/product_assets.png b/docs/shop_administration/img/product_assets.png new file mode 100644 index 00000000..b32ad54d Binary files /dev/null and b/docs/shop_administration/img/product_assets.png differ diff --git a/docs/shop_administration/img/product_stock.png b/docs/shop_administration/img/product_stock.png new file mode 100644 index 00000000..b7e7bb75 Binary files /dev/null and b/docs/shop_administration/img/product_stock.png differ diff --git a/docs/shop_administration/img/product_text.png b/docs/shop_administration/img/product_text.png new file mode 100644 index 00000000..7c54f0cc Binary files /dev/null and b/docs/shop_administration/img/product_text.png differ diff --git a/docs/shop_administration/img/product_variants.png b/docs/shop_administration/img/product_variants.png new file mode 100644 index 00000000..fb9ded30 Binary files /dev/null and b/docs/shop_administration/img/product_variants.png differ diff --git a/docs/shop_administration/img/shipping_costs.png b/docs/shop_administration/img/shipping_costs.png new file mode 100644 index 00000000..628b9921 Binary files /dev/null and b/docs/shop_administration/img/shipping_costs.png differ diff --git a/docs/shop_administration/img/stock_management.png b/docs/shop_administration/img/stock_management.png new file mode 100644 index 00000000..9a7c19dc Binary files /dev/null and b/docs/shop_administration/img/stock_management.png differ diff --git a/docs/shop_administration/img/sub_categories.png b/docs/shop_administration/img/sub_categories.png new file mode 100644 index 00000000..9428212d Binary files /dev/null and b/docs/shop_administration/img/sub_categories.png differ diff --git a/docs/shop_administration/img/textmodules_1.png b/docs/shop_administration/img/textmodules_1.png new file mode 100644 index 00000000..593e5c93 Binary files /dev/null and b/docs/shop_administration/img/textmodules_1.png differ diff --git a/docs/shop_administration/img/textmodules_2.png b/docs/shop_administration/img/textmodules_2.png new file mode 100644 index 00000000..89f860ca Binary files /dev/null and b/docs/shop_administration/img/textmodules_2.png differ diff --git a/docs/shop_administration/img/textmodules_footer.png b/docs/shop_administration/img/textmodules_footer.png new file mode 100644 index 00000000..6e64fe9a Binary files /dev/null and b/docs/shop_administration/img/textmodules_footer.png differ diff --git a/docs/shop_administration/img/user_account_status.png b/docs/shop_administration/img/user_account_status.png new file mode 100644 index 00000000..4fadb64a Binary files /dev/null and b/docs/shop_administration/img/user_account_status.png differ diff --git a/docs/shop_administration/img/user_detaild_view.png b/docs/shop_administration/img/user_detaild_view.png new file mode 100644 index 00000000..365240c2 Binary files /dev/null and b/docs/shop_administration/img/user_detaild_view.png differ diff --git a/docs/shop_administration/img/users_menu.png b/docs/shop_administration/img/users_menu.png new file mode 100644 index 00000000..8bb20708 Binary files /dev/null and b/docs/shop_administration/img/users_menu.png differ diff --git a/docs/shop_administration/manage_orders.md b/docs/shop_administration/manage_orders.md new file mode 100644 index 00000000..249f9125 --- /dev/null +++ b/docs/shop_administration/manage_orders.md @@ -0,0 +1,67 @@ +# Manage orders + +## Order management + +[[= product_name_com =]] provides a list of all orders in **eCommerce** > **Order Management**. + +![](img/order_management1.png) + +You can check, filter and export all orders that were processed in the shop. +Additionally, you can see the invoice that was automatically generated by the shop for the order (if no ERP is connected). + +### Available filters + +![](img/order_management_filter.png) + +You can filter orders using the following criteria: + +- Date +- State: + - Confirmed + - Payed + - Order failed - the order could not be transferred to the ERP, the shop retries sending it + - New - baskets which are not yet sent + - Offered - baskets in the payment process + - Approval - orders using an approval workflow + - Rejected - orders refused by the approver +- Payment option - the list has to be configured in the section **Configuration settings** under **Checkout**. +- Payment transaction ID. + +### Order list + +![](img/order_management_filter_1.png) + +- Basket ID - ID of the basket stored in the database +- Date - date and time this basket was last modified +- Customer name +- Total - total amount from the basket including VAT and shipping costs +- State - state of the basket +- Invoice +- Click on the plus icon to see the following information: + - Transaction ID - if the order has been paid using an electronic payment, the transaction code is displayed + - Customer number + - Payment options + - Invoice Address + - Delivery Address + - Products - list of products (SKU) and the quantity + +When an ERP system is used, the orders are transferred to the ERP. +In that case the shop does not create invoices, so no invoice is available in order management, +but you can still check orders in this section. + +### Lost orders + +If the ERP system is not running at the moment, [[= product_name_com =]] can store the orders and retransmit them when the ERP is working. +The orders are stored in a database table and marked for retransmission. The shop records the number of retries. +By default the maximum number is 3 (`siso_checkout.default.max_failed_order`). + +The shop sends an email to the shop administrator describing details of the order. + +Order submission can fail for different reasons, for example because the ERP system is offline, credit limit has been reached, or invalid SKU was provided. + +You can view all lost orders by selecting "Order failed" as order state. + +#### Re-transfering lost orders + +Select the order you want to transfer and click **Transfer to ERP**. +The order is sent to the ERP and after a few seconds you see a confirmation message. diff --git a/docs/shop_administration/manage_prices_and_stock.md b/docs/shop_administration/manage_prices_and_stock.md new file mode 100644 index 00000000..64f37793 --- /dev/null +++ b/docs/shop_administration/manage_prices_and_stock.md @@ -0,0 +1,47 @@ +# Manage prices and stock + +![](img/manage_prices_menu.png) + +## Product prices + +![](img/price_management_prices.png) + +You can set up product prices if the shop price provider (`siso_price.price_provider.shop`) is configured for calculating prices. + +Price management enables you to set up prices manually. A price can be setup per SKU and SKU/variant. +Each price can contain an offer price and a base price. +If an offer price is set, it is displayed in the shop as: + +~~Old price: 10.00 €~~ New price: 9.80 € + +In addition, prices can vary per customer group. + +### Currencies + +Currency is configured per country in the [configuration settings](https://doc.ezplatform.com/en/master/guide/configuration/configuration.md#currencies-used-per-country). + +If a product has a price for a product and a currency, this price is displayed in the shop. +If no price for a currency is set in a shop, [[= product_name_com =]] offers two possibilities, configured per shop: + +- Calculate the price for the requested currency using the base price defined in the product +(using the base currency setup for the installation) and an exchange rate defined in the configuration +- Display an error in the frontend that no price is available + +## Stock management + +![](img/stock_management.png) + +This menu enables you to set up stock if the shop price provider (`siso_price.price_provider.shop`) is configured for calculating prices. + +## Importing and exporting prices and stock + +You can update stock and prices using a CSV file. +Prices and stock can be downloaded and uploaded if the shop price provider (`siso_price.price_provider.shop`) is configured for calculating prices. + +## Shipping costs + +![](img/shipping_costs.png) + +In **Shipping cost management** you can set up shipping cost rules. Shipping rules can be managed per delivery country, state, zip and shipping method. + +You can also configure different shipping costs depending on the amount of the basket (including free shipping rules). diff --git a/docs/shop_administration/manage_products_and_categories_with_the_ez_dataprovider.md b/docs/shop_administration/manage_products_and_categories_with_the_ez_dataprovider.md new file mode 100644 index 00000000..53752d9a --- /dev/null +++ b/docs/shop_administration/manage_products_and_categories_with_the_ez_dataprovider.md @@ -0,0 +1,56 @@ +# Manage products and categories + +## Managing categories + +When you use the content model data provider, the product catalog is fully integrated into the content tree. The products are managed as Content items. + +![](img/browse_products.png) + +Products and categories can be assigned to the product catalog. + +![](img/sub_categories.png) + +## Flexible categories + +A category contains a standard set of fields. A category is a Content Type and can be extended with additional fields. + +![](img/flexible_categories.png) + +## Previewing products + +While editing a product the preview displays how the product looks on desktops or mobile devices, including product variants. + +![](img/product_text.png) + +## Product variants + +[[= product_name_com =]] offers one or two level variants. A variant can be added directly in the product view. + +There are three preconfigured variant types: Color, Size, and Color and Size. + +The list of variant types can be extended in the configuration. + +![](img/product_variants.png) + +## Product assets + +[[= product_name_com =]] supports assets per product (not per variant). +By default a product can have one main image and up to three additional images, +one PDF, and one link to a video (e.g. YouTube). + +![](img/product_assets.png) + +## Product stock + +The stock can be managed by SKU and SKU/variant. This can be done manually or per upload. + +In addition, you can add a text about stock availability (e.g. informing that a product is out of stock but will be back on a given date). +After an order is placed, the stock is reduced by the number of products bought by the customer. + +You can manage stock in two places: + +1\. In the product in the **eCommerce** tab: + +![](img/product_stock.png) + +2\. In the **eCommerce** section under [**Price and stock management**](manage_prices_and_stock.md). diff --git a/docs/shop_administration/manage_users.md b/docs/shop_administration/manage_users.md new file mode 100644 index 00000000..5ec43bea --- /dev/null +++ b/docs/shop_administration/manage_users.md @@ -0,0 +1,17 @@ +# Manage users + +Users are displayed in the **Users** tab in th Back Office. + +![](img/users_menu.png) + +The **eCommerce** tab in User content view contains an overview of the user's orders and active baskets. + +![](img/user_detaild_view.png) + +Budget fields in the User Content item are related to Customer center. + +VAT control per user is overwritten by information from ERP. + +The current Account status is shown in the view tab of a user. + +![](img/user_account_status.png) diff --git a/docs/shop_administration/permissions.md b/docs/shop_administration/permissions.md new file mode 100644 index 00000000..b8d2e453 --- /dev/null +++ b/docs/shop_administration/permissions.md @@ -0,0 +1,41 @@ +# Permissions + +By default [[= product_name_com =]] offers the following predefined Roles: + +| Role | Functions | +| -------| ------------| +| Ecommerce anonymous | Allows a user to see the content and catalog. They can see prices and can place products in basket. | +| Ecommerce checkout | Allows the user to go through the checkout and place an order.| +| Ecommerce registered users | Allows the user to manage the accounts of the registered users. | + +## List of available [[= product_name_com =]] modules and functions + +|Name|Description| +|--- |--- | +|Siso policy / All functions|User has access to all functions| +|Siso policy / Checkout|User can access the checkout process| +|Siso policy / Quickorder|User can access the quick order functionality| +|Siso policy / Read basket|User can access their basket view| +|Siso policy / Write basket|User can add products to basket| +|Siso policy / Configuration list|User can access configuration in the Back Office| +|Siso policy / Edit invoice|User can edit invoice address in their profile| +|Siso policy / Edit delivery|User can edit delivery address in their profile| +|Siso policy / Dashboard view|User can access the dashboard| +|Siso policy/ Forms profile edit|User can access profile editing| +|Siso policy / Manage orders|User can manage orders| +|Siso policy / Manage rating|Unused| +|Siso policy / Manage prices|User can manage prices| +|Siso policy / Manage stock|User can manage stock| +|Siso policy / Manage config|User can manage configuration settings| +|Siso policy / Order list|User can access their list of orders| +|Siso policy / See product price|User can see prices in the catalog, slider, product detail and comparison| +|Siso policy / Translations|User can change translations in the Back Office| +|Siso policy / Rating review|Unused| +|Siso policy / Red customers and orders|User can see the **Last orders** and **Best clients** tabs in the cockpit| +|siso_customercener/approve|Company user can approve/reject orders in the Customer center| +|siso_customercenter/buy|Company user can buy products in the Customer center| +|siso_customercenter/view|Company user can access te Customer center| +|Siso policy / Lostorder manage|User can access the lost orders list| +|Siso policy / Lostorder process|User can process a lost order (transfer it or remove it)| +|Siso policy / Lostorder list|User can access their list of lost orders| +|Siso policy / Delegate|User can use the delegate functionality| diff --git a/docs/shop_administration/shop_administration.md b/docs/shop_administration/shop_administration.md new file mode 100644 index 00000000..e52bf0e3 --- /dev/null +++ b/docs/shop_administration/shop_administration.md @@ -0,0 +1,60 @@ +# Shop administration + +[[= product_name_com =]] provides the following eCommerce functions in the top menu of the backend. + +Depending on the chosen data provider and whether an ERP is connected, some tabs may contain no data. + +![](img/backend_menu.png) + +|Tab|Description| +|--- |--- | +|[Cockpit](cockpit.md)|Basic statistics| +|[Order Management](manage_orders.md)|Basic order management| +|[Components](components.md)|A folder where [translations](translations.md) are stored. Can provide additional content which is used by the shop for project-specific information which is not displayed directly (as a full page) in the shop.| +|[Configuration Settings](configuration_settings.md)|Basic shop configuration| +|[Price and stock management](manage_prices_and_stock.md)|Product price and stock management| + +## Control Center + +![](img/backend_menu_center.png) + +### ERP request log + +This section is available only if an ERP system is connected. + +All communication (request and response messages), that is sent between shop and ERP system is recorded and displayed here. + +### ERP Performance + +If an ERP system is connected, the ERP performance viewer shows the efficiency of the connection between the shop and the ERP system. +It displays the number of the different requests per date and time. + +The monitoring tool regularly checks the connection to the ERP with a test request. + +If the connection fails, the administrator receives an email. +If the connection is successful again, the alarm is ended by another email. + +### eMail archive + +In the **eMail archive** tab the shop owner/admin can find all emails which were automatically sent from the shop, +with date of sending, recipient, subject and status. They can see the emails and resend them. + +![](img/email_archive.png) + +### eContent + +If eContent is used as data provider, in the **eContent tasks** tab the administrator can see how many products and product groups there are in the shop. +They can create a new index, import a backup into the database and create a backup from the database. + +![](img/econtent.png) + +In the **eContent types** tab the administrator can see the eContent types with their associated attributes (`product_group` and `product`) and the mapping information. + +![](img/econtent_types.png) + +### eCommerce jobs + +The shop uses jobs to perform recurring tasks such as imports, backups etc. +The job system lists the last jobs and shows the status and result of the job. + +![](img/ecommerce_jobs.png) diff --git a/docs/shop_administration/translations.md b/docs/shop_administration/translations.md new file mode 100644 index 00000000..c3dbf64b --- /dev/null +++ b/docs/shop_administration/translations.md @@ -0,0 +1,40 @@ +# Translations + +## Text modules + +Text module is a special Content item in [[= product_name_com =]]. +It enables the shop owner or editor to translate some of the text information in the shop using the Online Editor. + +Text modules are used for some short explanatory texts in the shop. +Every text module has a unique identifier. + +This identifier must match exactly and cannot be changed even with text changes. +If a text module has not yet been translated, the identifier is displayed in the frontend. + +### Example + +To create a text for the site footer, go to the **Components** section, +to **Textmodules** > **Footer** and choose "Footer block address". + +Edit this Content item and select the correct language, introduce your changes and publish the content. + +![](img/textmodules_1.png) + +![](img/textmodules_2.png) + +You can see the result when you reload the page. + +![](img/textmodules_footer.png) + +### Caching + +Text modules are cached. You can [refresh the text modules](https://doc.ezplatform.com/en/master/guide/cache/content_cache_refresh/content_cache_refresh.md) when they are edited. +Workflows and cron job have to be configured for that. + +However, if the full page is cached in HTTP cache, the new translation for the text module appears after the HTTP cache expires or is removed. + +## Working with OneSky + +[OneSky](https://www.oneskyapp.com/) is an external platform for managing translations. You can use this platform to offer a user interface for translations management. + +See [OneSky in the guide](https://doc.ezplatform.com/en/master/guide/translations/onesky.md) to learn how to set up OneSky for your shop. diff --git a/docs/site_organization/organizing_the_content.md b/docs/site_organization/organizing_the_content.md index 318bac62..0e8ede73 100644 --- a/docs/site_organization/organizing_the_content.md +++ b/docs/site_organization/organizing_the_content.md @@ -102,9 +102,9 @@ You can hide a Content item by clicking **Hide** in the menu. ![Hide content icon](img/hide_content_icon.png) -!!! enterprise +!!! dxp - When you click **Hide** in Enterprise, you can choose to **Hide later** + When you click **Hide** in [[= product_name_ee =]], you can choose to **Hide later** and select and date and time when the Content item will be hidden: ![Schedule hiding panel](img/schedule_hiding.png) @@ -119,7 +119,7 @@ in all of its Locations. In your site, you can manage external URL addresses and URL wildcards. You do this in the Back Office, **Admin** tab, the **URL Management** node. -For more information about URL management, see the [eZ Platform Developer Documentation.](https://doc.ezplatform.com/en/latest/guide/url_management). +For more information about URL management, see the [Ibexa Developer Documentation.](https://doc.ezplatform.com/en/latest/guide/url_management). ### Link manager @@ -147,6 +147,7 @@ The Link manager list also shows whether the link is alive or dead in the **Stat Each Content item can have one or more URL aliases. They are additional URLs that can be used to access this Content item. You can add URL aliases in the URL tab under **Custom URL aliases for ** by clicking the plus button. +The URL alias must be unique for the whole installation, regardless of the language. ![Creating a new URL alias](img/create_new_url_alias.png) @@ -209,3 +210,17 @@ You can bookmark any Content item by clicking the star icon next to the Content Bookmarks are stored per user. You can view a list of all bookmarks by clicking Bookmarks in the left menu. ![Bookmark screen](img/bookmarks.png) + +## Segments + +With segments you can target content at specific groups of your users. +You can use them to display different content to different Page visitors by using the [Targeting block](working_with_page.md#targeting-block). + +You can create and configure Segments and Segment Groups in the **Admin** section of the Back Office. + +![](../img/admin_panel_segment_groups.png) + +!!! note + + Assigning Users to Segments happens automatically according to rules set up by the administrator. + Contact your site administrator for more information about your setup. diff --git a/docs/site_organization/organizing_the_site.md b/docs/site_organization/organizing_the_site.md index 46a26c24..5f3688a7 100644 --- a/docs/site_organization/organizing_the_site.md +++ b/docs/site_organization/organizing_the_site.md @@ -70,7 +70,7 @@ to have relations only to Content items of a specific, or any Content Type. ## Users -Users in eZ Platform are treated the same way as other Content items. +Users in [[= product_name_oss =]] are treated the same way as other Content items. They are organized in groups, which helps you manage them and their permissions. You can view all User Groups and Users in the **Admin Panel** by selecting **Users**. @@ -92,7 +92,7 @@ for example: `www.my-site.com/register`. By default, new Users created in this w ## Permissions -Overview of the permission system in eZ Platform is best presented using an example. +Overview of the permission system in [[= product_name_oss =]] is best presented using an example. ### Example of a permissions system diff --git a/docs/site_organization/site_factory.md b/docs/site_organization/site_factory.md index 552db8e8..0b27e05e 100644 --- a/docs/site_organization/site_factory.md +++ b/docs/site_organization/site_factory.md @@ -1,6 +1,6 @@ # Site Factory -!!! enterprise +!!! dxp The Site Factory enables you to easily create and manage multiple sites in different languages from one place. All the sites can be kept in the Repository of your installation. @@ -25,7 +25,14 @@ ![Site skeleton toggle](img/site_factory_skeleton_toggle.png) Next, you can decide if the site will go live after creation or will be offline with the Status switcher. - In this section you will also define the access URL address(es) and main language, as well as fallback languages of the site. + In this section you also define the SiteAccess URL addresses with their main languages, fallback languages, and optional paths for the site. + + !!! note "Path limitation" + + The path can be only one directory deep. + Do not use paths that have more than one element, for example, `/en/articles`. + + For more information, see [SiteAccess](https://doc.ibexa.co/en/latest/guide/siteaccess/). ![Create a new site step two](img/site_factory_new_site_step_2.png) diff --git a/docs/site_organization/working_with_page.md b/docs/site_organization/working_with_page.md index eeaaf5b7..82b68601 100644 --- a/docs/site_organization/working_with_page.md +++ b/docs/site_organization/working_with_page.md @@ -1,6 +1,6 @@ # Working with Page -!!! enterprise +!!! dxp **Page** is a special Content Type that contains zones onto which you can drop different dynamic blocks. You can edit it to personalize the layout and contents of your website. @@ -24,6 +24,11 @@ Before publishing or saving the Page, edit its title and description. Switch to the Field view using the [Page Builder toolbar](#page-builder-toolbar). + !!! note "Autosave" + + To help you preserve your work, [[= product_name_oss =]] saves drafts of Content items automatically. + For more information, see [Autosave](../publishing/publishing.md#autosave). + ## Editing Page You edit Pages using the Page Builder. @@ -67,15 +72,16 @@ Do not worry about placing blocks in the proper place from the start. You can reorder them at any time by dragging and dropping them in the desired location. - eZ Enterprise comes with a set of ready-to-use Page blocks, + [[= product_name_ee =]] comes with a set of ready-to-use Page blocks, but [developers can add their own](https://doc.ezplatform.com/en/master/guide/extending_page/#creating-page-blocks). ![Elements menu](img/elements_menu.png "Elements menu") - The blocks provided with a clean installation of eZ Enterprise are: + The blocks provided with a clean installation of [[= product_name_ee =]] are: |Block|Description| |-----|-----------| + |Targeting|Embeds a Content item depending on the [Segment](organizing_the_content.md#segments) the user belongs to. For details, see [Targeting block](#targeting-block).| |Form|Embeds a Form Content item that you select from the Content Structure. For details, see [Form block](#form-block).| |Code|Enables you to place text, links, images, etc. on your Page using custom HTML. For details, see [Code block](#code-block).| |Content List|Displays Content items of a chosen Content Type (or Types) that are contained in a selected folder. For details, see [Content List block](#content-list-block).| @@ -102,7 +108,7 @@ The settings available in the **Basic** tab are tailored to the block's content. - The remaining tabs contain parameters common to all blocks provided with eZ Enterprise. + The remaining tabs contain parameters common to all blocks provided with [[= product_name_ee =]]. Use them to modify the layout and visibility of a block. For details, see [Advanced publishing options](/publishing/advanced_publishing_options.md). @@ -112,6 +118,18 @@ Settings and function of custom-made blocks of content depend on their design. For details on adjusting and using them, contact your website administrator. + ### Targeting block + + In the **Basic** tab, perform the following actions: + + - In the **Name** box, provide the name of the block. + - In the **Select default content** section, click **Select content**, navigate through the content + and select the default Content item that will be displayed when no priority rules are valid. + - In the **Setup segment and content matching priority rules** section, select a Segment Group and a Segment, + then click **Select content** and navigate to the Content item that you want to display for the selected group. + + The rules are checked in order, so if a user belongs to more than one Segment, the first rule applies. + ### Form block Note that completing the settings of the Form block requires at least one Form Content item created. diff --git a/material/base.html b/material/base.html index 712cb4cc..fb4911a3 100644 --- a/material/base.html +++ b/material/base.html @@ -1,9 +1,9 @@ {% import "partials/language.html" as lang with context %} {% set config = { - 'site_name': 'eZ Platform User Documentation', + 'site_name': 'Ibexa User Documentation', 'repo_url': 'https://github.com/ezsystems/user-documentation', - 'copyright': 'Copyright 1999-2020 Ibexa and others', + 'copyright': 'Copyright 1999-2020 Ibexa AS and others', 'plugins': config.plugins, 'theme': { 'name': null, @@ -15,7 +15,7 @@ 'accent': 'deep orange' }, 'font': false, - 'logo': 'images/ez-by-ibexa-logo.svg', + 'logo': 'images/ibexa-dxp-logo.svg', 'feature': { 'tabs': false }, @@ -172,15 +172,6 @@
{% block content %} - {% if page.edit_url %} - {% if '/latest/' in page.edit_url %} - - - {% else %} - - - {% endif %} - {% endif %} {% if not "\x3ch1" in page.content %}

{{ page.title | default(config.site_name, true)}}

{% endif %} @@ -246,8 +237,5 @@

{{ lang.t("meta.source") }}

{% include "partials/integrations/analytics.html" %} {% endif %} {% endblock %} - {% block versions %} - {% include "versions.html" %} - {% endblock %} diff --git a/material/partials/header.html b/material/partials/header.html index 2e65c929..b835c8c8 100644 --- a/material/partials/header.html +++ b/material/partials/header.html @@ -8,7 +8,7 @@ {% elif config.theme.logo.startswith("http") %} {% else %} - + {% endif %} @@ -34,6 +34,11 @@

+ {% block versions %} + {% include "versions.html" %} + {% endblock %} +
{% block search_box %} {% if "search" in config["plugins"] %} diff --git a/material/partials/source.html b/material/partials/source.html index 48d4eb1a..34dbc26e 100644 --- a/material/partials/source.html +++ b/material/partials/source.html @@ -10,7 +10,12 @@ {% set repo_type = "" %} {% endif %} {% block repo %} - + {% if '/latest/' in page.edit_url %} + {% set repo_url = page.edit_url|replace('/latest/', '/' ~ config.extra.version_warning.latest.0 ~ '/') %} + {% else %} + {% set repo_url = page.edit_url %} + {% endif %} + {% if repo_type %}
diff --git a/material/partials/toc.html b/material/partials/toc.html index 85f6281e..45545c65 100644 --- a/material/partials/toc.html +++ b/material/partials/toc.html @@ -1,17 +1,20 @@ {% import "partials/language.html" as lang with context %}