<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">

<channel data-v-component-posts="feed" data-v-limit="50" data-v-type="post" data-v-direction="desc" data-v-order_by="updated_at">	<title>News Vvveb</title>
	<link>https://vvveb.com/feed/posts</link>
	<description>The latest news about Vvveb</description>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://vvveb.com</generator>

	<image>
		<url>/favicon.ico</url>
		<title>Vvveb News</title>
		<link>https://www.vvveb.com/feed/posts</link>
		<width>32</width>
		<height>32</height>
	</image> 

		<item data-v-post="post" data-v-id="374">
			<title data-v-post-name="name">Admin Role</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/admin-admin-role</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Admin roles define what each user can access and manage inside the Vvveb dashboard. A role groups permissions together, making it easy to control access for multiple users at once. 
Permissions are based on module paths, which correspond to the sections]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Admin roles define what each user can access and manage inside the Vvveb dashboard. A role groups permissions together, making it easy to control access for multiple users at once.</p>
<p>Permissions are based on <strong>module paths</strong>, which correspond to the sections and actions inside the admin panel. Each role contains two rule lists:</p>
<ul>
<li><strong>Allow list</strong> - explicitly grants access</li>
<li><strong>Deny list</strong> - restricts or overrides access</li>
</ul>
<p>Vvveb checks the <strong>allow list first</strong>, then applies deny rules to limit or block specific actions.</p>
<p><a href="/media/docs/admin-role.png"><img src="/media/docs/admin-role.png" alt="Admin user" /></a></p>
<hr />
<h2><strong>Understanding Module Paths</strong></h2>
<p>Every admin page or action has a module path.<br />
For example:</p>
<ul>
<li>Posts list: <code>content/posts</code></li>
<li>Post editor: <code>content/posts/edit</code></li>
<li>Product list: <code>product/list</code></li>
<li>Plugin settings: <code>plugins/contact-form</code></li>
</ul>
<p>You can see the module path directly in the URL when navigating the admin panel.</p>
<hr />
<h2><strong>Allowing or Denying Access</strong></h2>
<p>To control access:</p>
<ul>
<li>Add a module path to the <strong>allow list</strong> to grant permission</li>
<li>Add a module path to the <strong>deny list</strong> to block permission</li>
</ul>
<p>This gives you fine‑grained control over what each role can do.</p>
<hr />
<h2><strong>Using Wildcards</strong></h2>
<p>Wildcards (<code>*</code>) let you apply rules to entire groups of modules or actions.</p>
<h3><strong>Examples</strong></h3>
<h4><strong>Allow access to all content modules</strong></h4>
<pre><code>content/*
</code></pre>
<p>This covers posts, pages, categories, menus, and more.</p>
<h4><strong>Deny delete actions for all content modules</strong></h4>
<pre><code>content/*/delete
</code></pre>
<p>Users can still view and edit content, but cannot delete anything.</p>
<h4><strong>Deny delete actions globally</strong></h4>
<pre><code>*/delete
</code></pre>
<p>Blocks delete actions across the entire admin panel.</p>
<h4><strong>Allow access to all plugin settings</strong></h4>
<pre><code>plugins/*
</code></pre>
<h4><strong>Allow or deny access to a specific plugin</strong></h4>
<pre><code>plugins/contact-form
</code></pre>
<hr />
<h2><strong>How Allow and Deny Rules Interact</strong></h2>
<p>Vvveb processes rules in this order:</p>
<ol>
<li><strong>Allow list</strong> - grants access</li>
<li><strong>Deny list</strong> - restricts or overrides access</li>
</ol>
<p>This means you can allow broad access, then selectively block sensitive areas.</p>
<h3><strong>Example</strong></h3>
<p>Allow full access to products:</p>
<pre><code>product/*
</code></pre>
<p>Then deny delete and category management:</p>
<pre><code>product/*/delete
product/categories
</code></pre>
<p>This gives users access to products and orders, but prevents them from deleting items or modifying categories.</p>
<hr />
<h2><strong>Practical Use Cases</strong></h2>
<h3><strong>Content‑only roles</strong></h3>
<p>Allow:</p>
<pre><code>content/*
editor/*
media/*
</code></pre>
<p>Deny:</p>
<pre><code>content/*/delete
</code></pre>
<h3><strong>Ecommerce manager</strong></h3>
<p>Allow:</p>
<pre><code>product/*
order/*
</code></pre>
<p>Deny:</p>
<pre><code>settings/*
tools/*
</code></pre>
<h3><strong>Restricted demo account</strong></h3>
<p>Allow:</p>
<pre><code>content/*
product/*
</code></pre>
<p>Deny:</p>
<pre><code>*/save
*/delete
settings/*
tools/*
</code></pre>
<hr />
<h2><strong>Summary</strong></h2>
<p>Admin roles give you powerful control over who can access what inside Vvveb.<br />
Using allow/deny rules and wildcards, you can build roles tailored to:</p>
<ul>
<li>Editors</li>
<li>Authors</li>
<li>Ecommerce managers</li>
<li>Developers</li>
<li>Demo users</li>
<li>API integrations</li>
</ul>
<p>This ensures your site stays secure while giving each team member exactly the access they need.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="375">
			<title data-v-post-name="name">Auth tokens</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/admin-auth-tokens</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Auth tokens let admin users access protected endpoints without a login session - used by external integrations, monitoring scripts or CI jobs that call the admin REST/API. 
 
Creating a token  
Go to Admin → Auth tokens Click Add, select the user the]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Auth tokens let admin users access protected endpoints <strong>without a login session</strong>  -  used by external integrations, monitoring scripts or CI jobs that call the admin REST/API.</p>
<hr />
<h2>Creating a token</h2>
<ol>
<li>Go to <strong>Admin → Auth tokens</strong> Click <strong>Add</strong>, select the user the token acts as</li>
<li>Save  -  the generated token string is shown once; copy it immediately</li>
</ol>
<hr />
<h2>Using a token</h2>
<p>Send it with requests, e.g. as <code>Authorization: Bearer &lt;token&gt;</code> (or per integration instructions). Requests run with the permissions of the linked <a href="admin-user">admin user</a>.</p>
<hr />
<h2>Security</h2>
<ul>
<li>Treat tokens like passwords  -  revoke any token you can't account for</li>
<li>Delete tokens that are no longer used from the list</li>
<li>All token usage appears in logs like normal admin activity</li>
</ul>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="376">
			<title data-v-post-name="name">Activitypub</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-activitypub</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[With ActivityPub plugin you can post your blog posts directly to the Fediverse 
 
With the ActivityPub plugin installed, your Vvveb website functions as a federated profile, along with profiles for each admin user. 
If your website is example.com, then]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>With ActivityPub plugin you can post your blog posts directly to the Fediverse</p>
<hr>
<p>With the ActivityPub plugin installed, your Vvveb website functions as a federated profile, along with profiles for each admin user.</p>  
<p>If your website is example.com, then the profile can be found at @example.com@example.com, and authors like Joe would have their individual profiles at @joe@example.com</p> 
<p>Once you follow Jane’s @jane@example.com profile, any blog post she crafts on example.com will show in your Home feed.</p>  
<hr>
<ol>
	<li>Install the ActivityPub plugin.</li>
	<li>Go to Mastodon or another federated platform, and search for your profile and follow it.</li>
	<li>Your profile will be in the form of either @your_username@example.com eg @admin@demo.vvveb.com.</li>
	<li>On your site, publish a new post.</li>
	<li>From Mastodon, check to see if the new post appears in your feed.</li>
</ol>
<p>Plugin repository <a href="https://github.com/Vvveb/minify">https://github.com/Vvveb/activitypub</a>.</p>
<p>Recommended microblogging microblogging theme <a href="https://themes.vvveb.com/products/manny">https://themes.vvveb.com/products/manny</a>.</p>
<hr>
<p>The plugin works with the following tested federated platforms, but there may be more that it works with as well:</p>
<ul>
	<li><a href="https://joinmastodon.org/" rel="nofollow ugc">Mastodon</a></li>
	<li><a href="https://pleroma.social/" rel="nofollow ugc">Pleroma</a></li>
	<li><a href="https://akkoma.social/" rel="nofollow ugc">Akkoma</a></li>
	<li><a href="https://friendi.ca/" rel="nofollow ugc">friendica</a></li>
	<li><a href="https://hubzilla.org/" rel="nofollow ugc">Hubzilla</a></li>
	<li><a href="https://pixelfed.org/" rel="nofollow ugc">Pixelfed</a></li>
	<li><a href="https://socialhome.network/" rel="nofollow ugc">Socialhome</a></li>
	<li><a href="https://join.misskey.page/" rel="nofollow ugc">Misskey</a></li>
</ul>
<p>It may take a few minutes for the new post to show up in your federated feed.</p> 
<p>Once ActivityPub is installed, only new posts  will be available in the fediverse.</p> 
<p>Users will never see previously published posts in their feed.</p>  
<p>With ActivityPub, if someone follows your site, they will only receive new blog posts you publish from then on.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="377">
			<title data-v-post-name="name">Editor Js</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-editor-js</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Replace default tinymce editor from post and product edit page with Editor.js 
Plugin repository https://github.com/Vvveb/editor-js.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Replace default tinymce editor from post and product edit page with Editor.js</p>
<p>Plugin repository <a href="https://github.com/Vvveb/editor-js">https://github.com/Vvveb/editor-js</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="378">
			<title data-v-post-name="name">Sun Editor</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-sun-editor</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Change post and product text editor editor with sun editor. 
Plugin repository https://github.com/Vvveb/sun-editor.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Change post and product text editor editor with sun editor.</p>
<p>Plugin repository <a href="https://github.com/Vvveb/stripe">https://github.com/Vvveb/sun-editor</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="379">
			<title data-v-post-name="name">Minify</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-minify</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Concatenate and minifiy css and javascript files to minimize page loading time. 
Plugin repository https://github.com/Vvveb/minify.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Concatenate and minifiy css and javascript files to minimize page loading time.</p>
<p>Plugin repository <a href="https://github.com/Vvveb/minify">https://github.com/Vvveb/minify</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="380">
			<title data-v-post-name="name">Catalog Mode</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-catalog-mode</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Hide add to cart and checkout and cart pages. 
Plugin repository https://github.com/Vvveb/catalog-mode.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Hide add to cart and checkout and cart pages.</p>
<p>Plugin repository <a href="https://github.com/Vvveb/stripe">https://github.com/Vvveb/catalog-mode</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="381">
			<title data-v-post-name="name">Hide Language Selector</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-hide-language-selector</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Hides top header language selector from frontend. 
Plugin repository https://github.com/Vvveb/hide-language-selector.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Hides top header language selector from frontend.</p>
<p>Plugin repository <a href="https://github.com/Vvveb/stripe">https://github.com/Vvveb/hide-language-selector</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="382">
			<title data-v-post-name="name">Hide Ecommerce</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-hide-ecommerce</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Hide Ecommerce features if you are not using them.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Hide Ecommerce features if you are not using them.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="383">
			<title data-v-post-name="name">Dicebear</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-dicebear</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Show dicebear avatars on comments for users that don't have avatars set. 
Plugin repository https://github.com/Vvveb/dicebear.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Show dicebear avatars on comments for users that don't have avatars set.</p>
<p>Plugin repository <a href="https://github.com/Vvveb/dicebear">https://github.com/Vvveb/dicebear</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="384">
			<title data-v-post-name="name">Test Plugin</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-test-plugin</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Test plugin to show how to write one. 
Example plugin that adds a menu entry in the admin dashboard and a new page on frontend with a list of products.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Test plugin to show how to write one.</p>
<p>Example plugin that adds a menu entry in the admin dashboard and a new page on frontend with a list of products.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="385">
			<title data-v-post-name="name">Graphql</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-graphql</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[View and interact with GraphQL API 
Plugin repository https://github.com/Vvveb/graphql.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>View and interact with GraphQL API</p>
<p>Plugin repository <a href="https://github.com/Vvveb/graphql">https://github.com/Vvveb/graphql</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="386">
			<title data-v-post-name="name">Tinymce Plugins</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-tinymce-plugins</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Tinymce plugins to extend tinymce text editor functionality, included plugins: bootstrap grid 
Plugin repository https://github.com/Vvveb/tinymce-plugins]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Tinymce plugins to extend tinymce text editor functionality, included plugins: bootstrap grid</p>
<p>Plugin repository <a href="https://github.com/Vvveb/editor-js">https://github.com/Vvveb/tinymce-plugins</a></p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="387">
			<title data-v-post-name="name">Table of Contents for Posts</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-toc-posts</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Automatically builds a navigable table of contents from a post's headings (H2–H6), displayed at the top of long articles. 
Used in production on docs.vvveb.com. 
Behavior  
Scans post content for headings and generates anchor links 
Clicking an entry]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Automatically builds a navigable table of contents from a post's headings (<code>H2</code>–<code>H6</code>), displayed at the top of long articles.</p>
<p>Used in production on <a href="https://docs.vvveb.com">docs.vvveb.com</a>.</p>
<h2>Behavior</h2>
<ul>
<li>Scans post content for headings and generates anchor links</li>
<li>Clicking an entry scrolls to the section; the current section is highlighted while scrolling</li>
<li>Long posts become easier to scan, which also helps search engines show jump links</li>
</ul>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="388">
			<title data-v-post-name="name">Database Management</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-database-management</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Navigate and edit database tables directly from admin. 
Uses adminer for database management.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Navigate and edit database tables directly from admin.</p>
<p>Uses adminer for database management.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="389">
			<title data-v-post-name="name">Insert Scripts</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-insert-scripts</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Adds header and footer script insertion areas so you can include analytics snippets, verification meta tags, chat widgets or any custom &lt;script&gt;/&lt;style&gt; without editing the theme. 
Usage  
Activate the plugin 
Open its settings page (Settings]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Adds header and footer script insertion areas so you can include analytics snippets, verification meta tags, chat widgets or any custom <code>&lt;script&gt;</code>/<code>&lt;style&gt;</code> without editing the theme.</p>
<h2>Usage</h2>
<ol>
<li>Activate the plugin</li>
<li>Open its settings page (Settings link on the Plugins list)</li>
<li>Paste code in <strong>Header scripts</strong> and/or <strong>Footer scripts</strong> Save  -  snippets are injected site-wide on every page</li>
</ol>
<p>Common use cases: Google Analytics / Tag Manager, Facebook Pixel, cookie consent widgets, schema markup.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="390">
			<title data-v-post-name="name">File Manager</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-file-manager</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Manage all files from inside Vvveb folder. Supported operations edit, rename, upload, download, zip, unzip etc 
Plugin repository https://github.com/Vvveb/file-manager]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Manage all files from inside Vvveb folder. Supported operations edit, rename, upload, download, zip, unzip etc</p>
<p>Plugin repository <a href="https://github.com/Vvveb/remove-google-fonts">https://github.com/Vvveb/file-manager</a></p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="391">
			<title data-v-post-name="name">SEO</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-seo</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[A modular, Rank Math-style SEO suite for Vvveb. It manages page titles, meta tags (description, robots, Open Graph, Twitter cards), structured data with a visual schema builder, XML sitemaps, a redirection manager with a 404 monitor, a site-wide audit]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>A modular, Rank Math-style SEO suite for Vvveb. It manages page titles, meta tags (description, robots, Open Graph, Twitter cards), structured data with a visual schema builder, XML sitemaps, a redirection manager with a 404 monitor, a site-wide audit and AI-era extras such as llms.txt and instant indexing.</p>
<p><a href="/media/docs/../seo-1.png"><img src="/media/docs/../seo-1.png" alt="SEO" /></a></p>
<h2>Modules</h2>
<p>The plugin is <strong>modular</strong>  -  enable only the feature areas you need from Settings → SEO → Modules:</p>
<p><strong>Core (v1)</strong></p>
<ul>
<li><strong>On-page SEO &amp; Content Score</strong>  -  focus keywords, SERP preview, real-time score in the editor</li>
<li><strong>Schema Builder</strong>  -  per-page structured data without writing JSON-LD</li>
<li><strong>XML Sitemaps</strong>  -  auto-generated <code>/sitemap.xml</code> plus section sitemaps</li>
<li><strong>Redirections &amp; 404 Monitor</strong>  -  redirect manager with automatic slug-change suggestions</li>
<li><strong>SEO Audit</strong>  -  site-wide technical checks with a prioritized fix list</li>
<li><strong>Setup Wizard</strong>  -  guided configuration flow</li>
</ul>
<p><strong>Local, ecommerce &amp; AI (v2)</strong></p>
<ul>
<li><strong>Local SEO</strong>, <strong>Ecommerce SEO</strong>, <strong>Search Console &amp; Rank Tracker</strong>, <strong>llms.txt</strong>, <strong>AI Content Assist</strong>, <strong>Instant Indexing</strong>, <strong>AI Search Tracking</strong></li>
</ul>
<h2>Documentation</h2>
<ul>
<li><a href="seo-settings">Plugin settings</a></li>
</ul>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="392">
			<title data-v-post-name="name">Debug</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-debug</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Activate debugging and logging, useful for development 
Shows a debug bar on the bottom of the page with sql queries, filters etc]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Activate debugging and logging, useful for development</p>
<p>Shows a debug bar on the bottom of the page with sql queries, filters etc</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="393">
			<title data-v-post-name="name">Brevo Email</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-brevo-email</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Send emails using Brevo API 
Plugin repository https://github.com/Vvveb/brevo-email.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Send emails using Brevo API</p>
<p>Plugin repository <a href="https://github.com/Vvveb/remove-google-fonts">https://github.com/Vvveb/brevo-email</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="394">
			<title data-v-post-name="name">Cookie Notice</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-cookie-notice</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Show cookie notice for visitors 
Popup can be customized from page builder]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Show cookie notice for visitors</p>
<p>Popup can be customized from page builder</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="395">
			<title data-v-post-name="name">AI Assistant</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-ai-assistant</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[An AI assistant for the admin content editor and site editor, with streaming responses, reasoning display, file attachments, tool calls that can read and edit the page, and an optional server-side proxy that keeps API keys out of the browser. 
Settings]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>An AI assistant for the admin content editor and site editor, with streaming responses, reasoning display, file attachments, tool calls that can read and edit the page, and an optional server-side proxy that keeps API keys out of the browser.</p>
<h3>Settings</h3>
<p>Open <strong>Plugins &gt; AI Assistant &gt; Settings</strong> and save once after enabling. The three fields that matter most are provider, key and model  -  the rest have working defaults. Bulk-translation overrides (provider, model, key, glossary) live on the separate <em>Translate</em> tab; writer voice, disclosure and stock covers live on the <em>Writer</em> tab.</p>
<h4>Provider</h4>
<p>Type to search all providers from the <a href="https://models.dev">models.dev</a> catalog (around two hundred, e.g. OpenAI, Anthropic, Google, DeepSeek, Groq, Mistral, xAI, OpenRouter, OpenCode Zen, NVIDIA NIM). The dropdown option shows the display name and model count.</p>
<p>Unknown slugs stay typable on purpose: a brand-new models.dev provider works for chat immediately, and rebuilding the catalog below adds it to the list with full metadata.</p>
<h4>API key</h4>
<p>One key for the <strong>active provider</strong>  -  the placeholder hint follows the selection (<code>sk-ant-…</code>, <code>AIza…</code>, …). Switching providers keeps each provider's key server-side; only the active one is ever used. Installations that saved per-provider keys before keep working: the old key is carried over the first time you save.</p>
<h4>Model</h4>
<p>Type to search the selected provider's models. Picking a known model auto-fills <strong>context size</strong> and <strong>max tokens</strong> from the catalog and stores a metadata snapshot used at runtime. The info line under the field shows context window, max output, per-1M pricing, reasoning support (including which API dialect a routed model uses, e.g. <em>via responses API</em>), attachment kinds and tool support. Free text stays allowed for ids missing from the catalog  -  the manual context fields apply then.</p>
<p><strong>Refresh</strong> fetches the live model list through the proxy (or directly from the provider in direct mode). <strong>Catalog</strong> rebuilds the whole local catalog from models.dev on the server (<code>php cli.php admin module=plugins/ai-assistant/settings action=buildModels</code> does the same from the command line) and reloads the current list.</p>
<h4>Endpoint override (Url)</h4>
<p>Optional custom endpoint for the <strong>active provider</strong>, e.g. a self-hosted gateway speaking its API. Empty means the catalog endpoint. Changing provider empties the field automatically with a notice, so a stale override can never silently misroute the new provider.</p>
<h4>General tab  -  connection, model, shared behavior</h4>
<ul>
<li><strong>Api mode</strong>  -  <code>proxy</code> relays requests through the site backend so keys never reach the browser; <code>direct</code> calls the provider from the browser (the key travels client-side, and the provider must allow the browser origin  -  e.g. <code>OLLAMA_ORIGINS</code> for Ollama). For a local server: direct reaches the LLM on your own computer, proxy reaches the LLM on the web server.</li>
<li><strong>Proxy URL</strong>  -  the address the browser calls for relayed requests. Leave the default unless the admin path is customized; only used in proxy mode.</li>
<li><strong>Session header</strong>  -  upstream header carrying the chat session id on proxied requests (default <code>x-vvveb-session</code>), so provider-side logs correlate with a conversation. It never lands in the provider body; empty disables it.</li>
<li><strong>System prompt</strong>  -  appended to every chat request to set assistant behaviour. Keep it short; bulk jobs use their own task prompts plus this line.</li>
<li><strong>Temperature</strong>  -  sampling randomness for chat (0 = deterministic). Omitted automatically for reasoning models that reject it; bulk translate/write set their own values (0 and 0.7).</li>
<li><strong>Context size / Max tokens</strong>  -  auto-filled from the catalog when you pick a known model. Context size drives the usage bar and auto-compact; max tokens caps each answer and is clamped to the model's own output limit, so an oversized value fails safe instead of 400ing upstream.</li>
<li><strong>Image model / provider / key / size</strong>  -  the editor's <em>Generate image from text</em> button and writer cover art. Provider and key empty inherit the main ones above (e.g. chat locally, images via OpenAI); local servers have no images API, so covers need a compatible provider here. Size examples: <code>1024x1024</code>, <code>1792x1024</code>.</li>
</ul>
<h4>Translate tab  -  bulk translation overrides</h4>
<p>All four fields are optional and share one rule: <strong>empty inherits the main setting</strong> (provider → model → key, in that order; task keys resolve server-side so secrets never travel). The classic setup is a cheap fast model here while chat stays on the strong one. Precedence for keys everywhere in the plugin is task key, then active key, then legacy per-provider keys from older versions.</p>
<ul>
<li><strong>Translate provider / model / key</strong>  -  used by Bulk Translate, the write → translate pipeline, and translation cron. A model with a catalog entry also brings its output cap and pricing into estimates.</li>
<li><strong>Translate glossary</strong>  -  one <code>Original = Replacement</code> per line (e.g. <code>checkout = checkout</code>), always used exactly: bulk translation, pipeline translations, and article writing all inject it. Brand and product names belong here.</li>
<li><strong>Translate reasoning</strong>  -  <code>Off</code> by default. Sends <code>reasoning_effort: none/minimal</code> only when the model's catalog entry declares it and only on bearer chat dialects, retrying plain if a gateway rejects it. Field translation needs no chain of thought, and you stop paying output rates for discarded thinking.</li>
</ul>
<h4>Writer tab  -  article voice, disclosure, stock covers</h4>
<ul>
<li><strong>Tone presets</strong>  -  one <code>Name | instruction</code> per line (e.g. <code>Playful | Write with light humor and vivid examples</code>). The names appear in the writer's Tone dropdown; the text is appended server-side, so clients can only pick, never inject.</li>
<li><strong>AI disclosure text</strong>  -  appended as a footer when <em>Disclose AI</em> is ticked on a run; empty uses the default reviewed-by-editors sentence. Opt-in per run, never silent.</li>
<li><strong>Stock provider</strong>  -  source order for <em>Stock link</em> covers: <code>Auto</code> tries each configured API key in order with the keyless Unsplash search last; explicit Unsplash/Pexels API or scrape-only are also selectable.</li>
<li><strong>Unsplash / Pexels keys</strong>  -  free tiers (Unsplash developers: 50 requests/hour) enable the official search APIs; empty skips straight to the next source. Every candidate is host-allowlisted, IP-checked, downloaded and image-verified before it touches a post.</li>
<li><strong>Write reasoning</strong>  -  <code>On</code> by default (model behavior unchanged). Turn off once outlines carry your planning  -  same suppression mechanics as Translate reasoning above.</li>
</ul>
<h3>Using the assistant</h3>
<ul>
<li><strong>Thinking level</strong> (Off/Low/Medium/High) follows the selected model: provider-specific effort values where the catalog defines them, generic levels otherwise, disabled with an explanation when the model cannot reason. Reasoning blocks and tool calls render as collapsible cards with a Running/Done/Failed status pill: thinking streams open and collapses when finished, tool calls stay collapsed throughout (a manual expand pins a card open), errors stay open, and everything hides behind the thinking/tools toggles.</li>
<li><strong>Attachments</strong>  -  the file picker only offers formats the model takes; anything else is refused with a message naming what is supported. Text files (.txt, .md, .csv, …) are inlined as text so they work on every model including text-only ones; long files are truncated with a marker. Image-capable models also receive page screenshots as vision.</li>
<li><strong>Costs</strong>  -  every assistant message shows its estimated cost from catalog pricing; the usage footer totals the session and shows cache-hit savings. Encrypted reasoning never renders  -  it is preserved invisibly so multi-turn tool calls keep working.</li>
<li><strong>Failures</strong>  -  dropped connections and overloaded providers retry automatically with backoff (1s → 2s → 4s, longer for rate limits) and a live countdown; <strong>Stop</strong> cancels the wait. Deterministic errors (bad key, unknown model, full context) surface immediately with guidance instead.</li>
<li><strong>Sessions</strong> survive reloads and sync server-side; <strong>Compact</strong> shrinks a long conversation into a summary when context runs out. When browser storage nears its quota, sessions upload automatically and older local copies trim to metadata (reloaded on open)  -  a warning replaces the old silent failure.</li>
<li>The assistant UI follows the admin language through the CMS-wide <code>Vvveb.i18n</code> runtime (<code>public/js/libs/gettext.js</code>, gettext-compatible plurals): sidebar, manager and editor strings translate from the same catalogs as the backend (translators add the msgids from <code>plugins/ai-assistant/system/i18n-data.php</code> to <code>locale/&lt;lang&gt;/LC_MESSAGES/vvveb.po</code>; English always works untranslated).</li>
<li><strong>Article writer</strong> (Plugins → AI Article Writer) turns a topic list (one per line, up to 200) into draft posts: pick language, site, categories (multi), tags, length (short/medium/long) and status (draft default  -  bulk AI content never auto-publishes), preview the call/token estimate, then run the resumable stepper with per-topic results. Uses the active chat model (writing wants the strongest model) with temperature 0.7, JSON mode + repair retry, and core post creation (headline, HTML body, excerpt, meta description/keywords, cover alt, slug, site link). Re-running the same topics skips already-written ones (topic-hash ledger, reported with the original post id). <em>Outlines</em> runs a cheap planning pass first  -  tick approved topics and Start writes only those. Completion notices report tokens used; the last run summary persists on the page. Cover image switch: <em>No cover</em>, <em>AI-generated</em> (paints one cover per article via the image task settings), or <em>Stock link</em>. Stock mode resolves sources through a provider registry (<code>system/stock.php</code>  -  implement <code>StockProvider</code> and add one line to register the next one): the <em>Stock provider</em> setting picks Auto (every configured API key in order, keyless scrape last), Unsplash API, Pexels API, or scrape-only. API results carry photographer credit into the run log; a random hit from the first 10 is verified and stored, failures fall through to a model-suggested URL and then to generation, each step logged. Every candidate is validated (allowlisted CDN host, public IP, real image ≥200×200) before it touches a post; anything suspicious is rejected down the chain. Covers save under <code>media/ai-assistant/</code>; a failed cover still saves the post, imageless, with a warning. Stock photos carry the source URL in the log  -  check the license before publishing.</li>
<li><strong>Drip publishing.</strong> Set <em>Publish from</em> + <em>Every N days</em> and articles are created <em>scheduled</em> with staggered dates on the ledger instead of the chosen status. <em>Release due</em> (also checked automatically at each run start) flips due posts to published  -  never overriding a status you changed by hand. Cron it with <code>php cli.php admin module=plugins/ai-assistant/generate action=release</code> for hands-free drip.</li>
<li><strong>Unattended jobs (cron).</strong> Three idempotent CLI actions, safe on a schedule: <code>…/generate action=release</code> (publish due drip), <code>…/generate action=refreshcron language=1 limit=5</code> (rewrite the oldest posts), <code>…/translate action=translatecron source=1 targets=2,3 limit=10</code> (translate the newest missing items). CLI skips CSRF (no session exists there); every step lands in the runs ledger with a <code>cron-YYYYMMDD</code> job id.</li>
<li><strong>Write → translate pipeline.</strong> <em>Also translate to</em> fans every finished article out to more languages in the same run (same provider call path as bulk translate, translations linked on the ledger so re-runs skip them).</li>
<li><strong>Grounded writing.</strong> <em>Source URLs</em> are fetched once per run and injected as background material (budget-capped) so articles can cite real facts instead of hallucinating them.</li>
<li><strong>Refresh stale posts.</strong> Switch to <em>Refresh</em> mode, <em>Find stale posts</em> lists candidates by age with checkboxes, Start rewrites the checked ones in place (slug untouched, honors tone + budget).</li>
<li><strong>Internal linking.</strong> After a write, <em>Add links</em> appends a related-reading block (keyword search over published posts, idempotent marker, skipped when nothing related).</li>
<li><strong>Social pack.</strong> Tick <em>Social pack</em> for an X thread, LinkedIn post and newsletter teaser per article, with copy buttons right in the result row.</li>
<li><strong>AI performance report.</strong> The writer page reports AI-written vs human posts and views over the ledger (proving whether any of this earns its keep).</li>
<li><strong>Upstream timeouts.</strong> A step failing with <em>Upstream request failed … timed out … 0 bytes received</em> means the provider never started answering within 180s (queue, reasoning prefill, cold model, huge prompt)  -  not a stalled download, so raising <code>max_tokens</code> won't help. The item fails individually and resumes on re-run; check provider status, trim grounding sources, switch reasoning off, or try a faster model before reaching for longer timeouts.</li>
<li><strong>Token budgets.</strong> A per-run token cap on both bulk pages halts the stepper (stays resumable) with a notice; the server double-checks the client-reported spend.</li>
<li><strong>Writer extras.</strong> Tone presets (Settings, <em>Name | instruction</em> lines), per-topic model tags merged with run-wide tags, alternative headlines in each result, multi-site fan-out, CSV topic upload, multi-category, auto-categorize (the model files each article from your category list, validated server-side), QA sieve (thin/tell flags in the log), series mode (part numbering + series plan in every prompt), and a translate glossary (<em>Original = Replacement</em> lines in Settings) for consistent bulk translation.</li>
<li><strong>Reasoning toggles.</strong> Chain-of-thought is pure overhead on strict bulk tasks (you pay output rates for tokens nobody reads). <em>Translate reasoning</em> defaults off and <em>Write reasoning</em> stays on; either sends <code>reasoning_effort: none/minimal</code> only when the model's catalog entry declares it, only on bearer chat dialects, and silently retries without the flag if a gateway rejects it.</li>
<li><strong>Product writer.</strong> The writer's <em>Write</em> switch covers products: descriptions with meta, disabled-by-default (publish = enable explicitly), covers, pipeline translation and social on the same runner. Scheduled drip and categories are post-only; product duplicates ledger separately.</li>
<li><strong>Refresh, SEO, links.</strong> <em>Refresh</em> mode rewrites stale posts in place (slug untouched); <em>SEO backfill</em> fills only missing excerpt/meta. <em>Add links</em> appends related-reading blocks found by keyword search. Every overwrite records a content revision first, so the editor's revision history is your undo.</li>
<li><strong>Review & bulk publish.</strong> <em>Needs review</em> lists recently written posts and products from the ledger with editor links; tick and <em>Publish listed</em> flips drafts/scheduled (or disabled products) live, skipping anything already published. Every bulk overwrite records a content revision first, so the editor's revision history is your undo.</li>
<li><strong>Product writer & parity.</strong> The <em>Write</em> switch covers products end-to-end: descriptions, disabled-by-default, covers (+gallery from extra stock hits), pipeline translation, social, refresh, SEO backfill and internal links all branch on post/product, with separate duplicate ledgers and a product performance report.</li>
<li><strong>Cost & transparency.</strong> Preview shows a dollar forecast at the active model's catalog rates; completion notices report tokens used; every bulk step lands in the <em>Recent bulk runs</em> ledger; an opt-in <em>Disclose</em> checkbox appends the configured AI note (Settings → AI disclosure text).</li>
<li><strong>Runs ledger & report.</strong> Every bulk step records calls + tokens grouped by job id (<em>Recent bulk runs</em> table); the performance card compares AI vs human posts/views with click-through drill-down to the actual posts; <em>Upcoming drip</em> lists scheduled releases (posts and products). Script tags carry mtime cache-busting so fixes actually arrive in the browser.</li>
<li><strong>Social viewer.</strong> Saved packs rehydrate per post: the result-row <em>Social</em> button expands the full channel texts with copy buttons, backed by the <code>ai_social</code> table instead of the volatile run response.</li>
<li><strong>Prompt playground.</strong> Settings page lab for trying system/user prompts against the active model (templates included for every job shape: chat, writer, translate, outline, SEO, social), with token usage per run. Nothing is saved.</li>
<li><strong>Product SEO preview.</strong> The stale/SEO finder and all runners honor the post/product switch, so backfill and refresh cover catalogs too. Note: scraping is against Unsplash's ToS (they prefer the API); if they block it, stock mode degrades gracefully to suggestion → generation.</li>
<li><strong>Bulk translate</strong> (Plugins → AI Translate) translates posts and products across languages in resumable steps: filter by type, status, site, category (with children), date and title, preview the missing-translation matrix with a call estimate, then run with progress, per-item skip-and-report errors, stop/resume, and bulk JSON export. Only empty translations are touched by default. Oversized documents translate piece by piece (block-boundary chunking) instead of skipping via the old context guard. Uses the translate provider/model/key settings, so a cheap model keeps it affordable; strict tasks request JSON mode with automatic fallback.</li>
<li><strong>Sessions manager</strong> (Plugins → AI Sessions) lists every chat with title search (or <em>Everywhere</em> mode, which also scans message text), sorting and paging; sessions open at <code>#uuid</code> links for sharing. Each row opens a read-only transcript each row opens a read-only transcript with the same collapsible thinking/tool cards plus a message/token/cost summary priced at the session's own model when known, and offers rename, <strong>fork</strong> (independent copy under a fresh id), <strong>pin</strong> (per-browser favorites sort first), delete (bulk included), single or bulk JSON export (with an <em>attachments</em> checkbox for a small text-only file) and <strong>Continue in sidebar</strong>, which hands the session to the site-editor sidebar. Sessions living only in the browser (never synced  -  e.g. from installs predating the server store, which self-creates on first use) are flagged with a one-click <strong>Sync to server</strong> banner instead of silently missing.</li>
<li><strong>Sidebar sessions</strong> can be filtered from the dropdown itself and pinned favorites always list first.</li>
</ul>
<h3>Troubleshooting</h3>
<ul>
<li><strong>401 / invalid key</strong>  -  re-enter the key for the active provider and save.</li>
<li><strong>404 / no such model</strong>  -  the id was retired or mistyped; Refresh the list or pick from the dropdown.</li>
<li><strong>429 / rate limit</strong>  -  the assistant waits and retries on its own; lower pace or raise quota for persistent limits.</li>
<li><strong>Context full</strong>  -  use Compact, start a new session, or lower max tokens.</li>
<li><strong>Attachment refused</strong>  -  the message names the supported kinds; switch to a multimodal model for images, PDFs or audio.</li>
<li><strong>Empty model list</strong>  -  rebuild with the Catalog button (or the CLI command above).</li>
<li><strong>500 from the upstream gateway</strong>  -  almost always a dialect mismatch: a chat-shaped body (<code>messages</code>/<code>max_tokens</code>) sent to a <code>/responses</code> endpoint, or the reverse. It happens with unrouted model ids plus a stale endpoint override. The proxy now rejects these with a plain-language 400 before relaying; fix by re-selecting the model in settings (stores its route) and saving, or by pointing the override at the matching endpoint.</li>
</ul>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="396">
			<title data-v-post-name="name">Stripe</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-stripe</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Accept credit card payments using stripe. 
Plugin repository https://github.com/Vvveb/stripe.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Accept credit card payments using stripe.</p>
<p>Plugin repository <a href="https://github.com/Vvveb/stripe">https://github.com/Vvveb/stripe</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="397">
			<title data-v-post-name="name">Contact form</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-contact-form</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Contact form plugin allows your users to submit messages to your site through forms, you can add forms on your contact us page, for reservations or for subscriptions. 
Builtin honeypot anti spam filter. 
Contact form component allows visual customization]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Contact form plugin allows your users to submit messages to your site through forms, you can add forms on your contact us page, for reservations or for subscriptions.</p>
<p>Builtin honeypot anti spam filter.</p>
<p>Contact form component allows visual customization of forms from the page builder, add any fields visually.</p>
<p>This plugin is included and activated by default</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="398">
			<title data-v-post-name="name">Gravatar</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-gravatar</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Show gravatar images for user avatar on comments.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Show gravatar images for user avatar on comments.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="399">
			<title data-v-post-name="name">Openapi</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-openapi</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[View and interact with REST API 
Plugin repository https://github.com/Vvveb/openapi.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>View and interact with REST API</p>
<p>Plugin repository <a href="https://github.com/Vvveb/openapi">https://github.com/Vvveb/openapi</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="400">
			<title data-v-post-name="name">Two Factor Auth</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-two-factor-auth</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Add 2FA two factor authentication with TOTP to admin and customer login. 
Plugin repository https://github.com/Vvveb/two-factor-auth.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Add 2FA two factor authentication with TOTP to admin and customer login.</p>
<p>Plugin repository <a href="https://github.com/Vvveb/two-factor-auth">https://github.com/Vvveb/two-factor-auth</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="401">
			<title data-v-post-name="name">Transliterate</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-transliterate</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Transliterate post and products slugs and urls from cyrilic, greek etc to latin 
Plugin repository https://github.com/Vvveb/transliterate.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Transliterate post and products slugs and urls from cyrilic, greek etc to latin</p>
<p>Plugin repository <a href="https://github.com/Vvveb/transliterate">https://github.com/Vvveb/transliterate</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="402">
			<title data-v-post-name="name">CDN</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-cdn</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Rewrites image URLs to load media from a CDN for faster page loading. 
Configuration  
Activate the plugin and open its settings page 
Enter your CDN base URL (e.g. https://cdn.example.com) 
Save - theme and product images are served from the CDN domain]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Rewrites image URLs to load media from a CDN for faster page loading.</p>
<h2>Configuration</h2>
<ol>
<li>Activate the plugin and open its settings page</li>
<li>Enter your <strong>CDN base URL</strong> (e.g. <code>https://cdn.example.com</code>)</li>
<li>Save  -  theme and product images are served from the CDN domain</li>
</ol>
<p>Point the CDN hostname at your site origin (pull mode) or upload <code>media/</code> separately (push). Keep paths identical to the local ones so URLs map 1:1.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="403">
			<title data-v-post-name="name">Markdown Editor</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-markdown-editor</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Change default post and product editor from html to markdown.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Change default post and product editor from html to markdown.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="404">
			<title data-v-post-name="name">Import Csv</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-import-csv</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Import content from a wordpress xml export file.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Import content from a wordpress xml export file.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="405">
			<title data-v-post-name="name">Newsletter</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-newsletter</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Create contact forms that sends email or saves data in the database. 
Builtin honeypot anti spam filter. 
Contact form component allows visual customization of forms from the page builder, add any fields visually. 
This plugin is included and activated]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Create contact forms that sends email or saves data in the database.</p>
<p>Builtin honeypot anti spam filter.</p>
<p>Contact form component allows visual customization of forms from the page builder, add any fields visually.</p>
<p>This plugin is included and activated by default</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="406">
			<title data-v-post-name="name">Markdown Import</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-markdown-import</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Import and update markdown files as posts. 
Categories are created automatically based on directory structure. 
This plugin is used to import markdown documentation from https://github.com/Vvveb/docs into http://docs.vvveb.com/.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Import and update markdown files as posts.</p>
<p>Categories are created automatically based on directory structure.</p>
<p>This plugin is used to import markdown documentation from https://github.com/Vvveb/docs into http://docs.vvveb.com/.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="407">
			<title data-v-post-name="name">Remove Google Fonts</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-remove-google-fonts</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Remove google fonts from page builder fonts list and google fonts links in theme pages 
Plugin repository https://github.com/Vvveb/remove-google-fonts.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Remove google fonts from page builder fonts list and google fonts links in theme pages</p>
<p>Plugin repository <a href="https://github.com/Vvveb/remove-google-fonts">https://github.com/Vvveb/remove-google-fonts</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="408">
			<title data-v-post-name="name">Import Wordpress</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/plugin-import-wordpress</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Import content from a wordpress xml export file.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[<p>Import content from a wordpress xml export file.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="409">
			<title data-v-post-name="name">Getting started</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/getting-started</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[New to Vvveb? This quick tour explains how the admin panel is organized so you know where everything lives. 
 
The layout 
The admin uses a left sidebar grouped by area:    Area What it holds     Dashboard Activity summary and quick actions   Content]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>New to Vvveb? This quick tour explains how the admin panel is organized so you know where everything lives.</p>
<hr />
<h2>The layout</h2>
<p>The admin uses a left sidebar grouped by area:</p>
<table class="table table-bordered">
<thead class="table-light">
<tr>
<th>Area</th>
<th>What it holds</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Dashboard</strong></td>
<td>Activity summary and quick actions</td>
</tr>
<tr>
<td><strong>Content</strong></td>
<td>Posts, pages, categories, tags, menus, comments</td>
</tr>
<tr>
<td><strong>Media</strong></td>
<td>Image and file library</td>
</tr>
<tr>
<td><strong>Products</strong> (shop)</td>
<td>Catalog: products, categories, attributes, options</td>
</tr>
<tr>
<td><strong>Sales</strong> (shop)</td>
<td>Orders, returns, subscriptions, coupons, vouchers</td>
</tr>
<tr>
<td><strong>Analytics</strong> (shop)</td>
<td>Orders, revenue, traffic reports</td>
</tr>
<tr>
<td><strong>Users / Admin</strong></td>
<td>Customers, admins, roles and groups</td>
</tr>
<tr>
<td><strong>Localization</strong></td>
<td>Languages, currencies, countries, regions, taxes</td>
</tr>
<tr>
<td><strong>Plugins &amp; Themes</strong></td>
<td>Extend and restyle the site</td>
</tr>
<tr>
<td><strong>Settings</strong></td>
<td>Site configuration, statuses, types</td>
</tr>
<tr>
<td><strong>Tools</strong></td>
<td>Backup, import/export, cache, logs, updates</td>
</tr>
</tbody>
</table>
<hr />
<h2>First steps</h2>
<ol>
<li><a href="/docs/user/settings/site-general">Configure your site</a>  -  title, description, logo</li>
<li>Write your first <a href="/docs/user/content/posts/post">post</a></li>
<li>Set up <a href="/docs/user/settings/localization/languages">languages</a> if needed</li>
<li>For stores: add <a href="/docs/user/products/product">products</a>, then a payment plugin</li>
<li>Run the SEO plugin's <a href="/docs/user/plugins/seo/seo-settings">setup wizard</a></li>
</ol>
<hr />
<h2>Where to go next</h2>
<ul>
<li>Build pages visually with the <a href="/docs/user/editor/page-builder-introduction">page builder</a></li>
<li>Extend functionality with <a href="/docs/user/plugins/plugins-management">plugins</a></li>
<li>Keep your site safe with <a href="/docs/user/tools/backup">backups</a></li>
</ul>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="410">
			<title data-v-post-name="name">Dashboard</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/dashboard</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:57 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[The Dashboard is the first screen you see after logging in. It summarizes your site's activity so you can jump straight to what needs attention. 
 
What's on the dashboard  
Recent activity cards - new orders, comments, reviews and questions with quick]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>The <strong>Dashboard</strong> is the first screen you see after logging in. It summarizes your site's activity so you can jump straight to what needs attention.</p>
<hr />
<h2>What's on the dashboard</h2>
<ul>
<li><strong>Recent activity cards</strong>  -  new orders, comments, reviews and questions with quick links to moderate or process them</li>
<li><strong>Update status</strong>  -  notification when a new Vvveb version is available, with an update shortcut</li>
<li><strong>Quick actions</strong>  -  view the live website, clear cache, open settings, edit your profile</li>
</ul>
<hr />
<h2>After installation</h2>
<p>If you just installed Vvveb, start here:</p>
<ol>
<li>Review <a href="/docs/user/settings/site">Site settings</a>  -  title, description, logo</li>
<li>Set up <a href="/docs/user/settings/localization/languages">localization</a> if your site is multilingual</li>
<li>Publish your first <a href="/docs/user/content/posts/post">post</a></li>
<li>If you run a store, configure <a href="/docs/user/products/products">products</a> and payment/shipping plugins</li>
</ol>
<hr />
<h2>Navigation tips</h2>
<ul>
<li>The left sidebar groups everything by area: content, products, sales, settings, tools</li>
<li>Use the admin <strong>search</strong> (magnifier icon) to find any admin page by name</li>
<li>The user menu (top right) holds your profile and logout</li>
</ul>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="359">
			<title data-v-post-name="name">Shipping</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/settings-shipping</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[The Shipping module defines how delivery costs are calculated and which shipping methods are offered at checkout. 
 
How shipping works  
Plugins provide methods - flat rate, weight-based, carrier rates etc. Install them from Plugins; each has its own]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>The <strong>Shipping</strong> module defines how delivery costs are calculated and which shipping methods are offered at checkout.</p>
<hr />
<h2>How shipping works</h2>
<ol>
<li><strong>Plugins provide methods</strong>  -  flat rate, weight-based, carrier rates etc. Install them from Plugins; each has its own configuration</li>
<li><strong>Region rules</strong>  -  combine methods with <a href="localization/region-groups">region groups</a> so only valid destinations see a method</li>
<li><strong>Cart data drives cost</strong>  -  weight (<a href="weight-classes">weight classes</a>), destination (<a href="localization/countries">countries</a>) and cart totals feed the calculation</li>
</ol>
<hr />
<h2>Configuration</h2>
<p>Open <strong>Settings → Ecommerce → Shipping</strong> to set store-level options (origin address defaults, handling) and enable/disable installed methods.</p>
<p>Related: <a href="shipping-statuses">Shipping statuses</a> track the fulfillment state of an order (not shipped / shipped / delivered).</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="360">
			<title data-v-post-name="name">Subscription plan (edit)</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/settings-subscription-plan</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Edits a single plan from subscription plans: name, billing period/interval, price, trial length and cycle limit. 
Changing price/interval affects new subscriptions only; active subscriptions keep the terms they started with unless your payment provider]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Edits a single plan from <a href="subscription-plans">subscription plans</a>: name, billing period/interval, price, trial length and cycle limit.</p>
<p>Changing price/interval affects new subscriptions only; active subscriptions keep the terms they started with unless your payment provider supports mid-term updates.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="361">
			<title data-v-post-name="name">Tax types</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/settings-tax-types</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Tax types group tax rates by what they apply to - the two built-in types being Taxable goods and Downloadable goods, useful because digital goods are often taxed differently per country. 
 
 
Managing tax types 
From Settings → Ecommerce → Tax types]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Tax types group <a href="tax-rates">tax rates</a> by what they apply to  -  the two built-in types being <strong>Taxable goods</strong> and <strong>Downloadable goods</strong>, useful because digital goods are often taxed differently per country.</p>
<p><a href="/media/docs/settings-tax-types.png"><img src="/media/docs/settings-tax-types.png" alt="Tax types" /></a></p>
<hr />
<h2>Managing tax types</h2>
<p>From <strong>Settings → Ecommerce → Tax types</strong> you can add custom types (e.g. <em>Reduced rate goods</em>) and assign each type a sort order for display.</p>
<p>Rates are then configured per region in <a href="tax-rates">tax rates</a>; a product is taxed according to the tax class it belongs to (see <a href="tax-classes">tax classes</a>).</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="362">
			<title data-v-post-name="name">Subscription plans</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/settings-subscription-plans</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Subscription plans define recurring billing schedules that products can offer - monthly access, yearly memberships, boxed deliveries. 
 
 
Creating a plan  
Go to Settings → Ecommerce → Subscription plans Click Add Configure:  
Name - shown on the]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Subscription plans define <strong>recurring billing schedules</strong> that products can offer  -  monthly access, yearly memberships, boxed deliveries.</p>
<p><a href="/media/docs/settings-subscription-plans.png"><img src="/media/docs/settings-subscription-plans.png" alt="Subscription plans" /></a></p>
<hr />
<h2>Creating a plan</h2>
<ol>
<li>Go to <strong>Settings → Ecommerce → Subscription plans</strong> Click <strong>Add</strong> Configure:
<ul>
<li><strong>Name</strong>  -  shown on the product page</li>
<li><strong>Billing period &amp; interval</strong>  -  e.g. every 1 month, every 12 months</li>
<li><strong>Price</strong>  -  recurring amount (can differ from the product price)</li>
<li><strong>Trial / cycle limits</strong>  -  optional trial length or maximum cycles</li>
</ul>
</li>
<li>Save</li>
</ol>
<hr />
<h2>Using plans</h2>
<p>Attach one or more plans to a product; when a customer buys it, checkout starts a <a href="/docs/user/order/subscriptions">subscription</a> instead of a one-time order line. Payment plugins that support recurring billing handle the charges; subscription state changes are tracked in <a href="subscription-statuses">subscription statuses</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="363">
			<title data-v-post-name="name">Product types</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/settings-product-types</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Like post types but for the catalog: product types let you separate kinds of products with different behavior or templates - physical products, digital downloads, services, subscriptions. 
 
 
Default type 
The built-in product type covers standard store]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Like <a href="post-types">post types</a> but for the catalog: product types let you separate kinds of products with different behavior or templates  -  physical products, digital downloads, services, subscriptions.</p>
<p><a href="/media/docs/settings-product-types.png"><img src="/media/docs/settings-product-types.png" alt="Product types" /></a></p>
<hr />
<h2>Default type</h2>
<p>The built-in <code>product</code> type covers standard store items. Plugins can add more  -  e.g. a subscriptions plugin registers types tied to <a href="subscription-plans">subscription plans</a>, a digital-products plugin ties types to <a href="/docs/user/products/digital-assets">digital assets</a>.</p>
<hr />
<h2>Why types matter</h2>
<ul>
<li><strong>Templates</strong>  -  themes can render each type differently (<code>product/&lt;type&gt;.html</code>)</li>
<li><strong>Checkout flow</strong>  -  digital types skip shipping; subscription types create recurring <a href="subscription-plans">plans</a></li>
<li><strong>SEO &amp; sitemaps</strong>  -  schema and title templates per type via the SEO plugin</li>
</ul>
<p>Manage the list under <strong>Settings → Ecommerce → Product types</strong>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="364">
			<title data-v-post-name="name">Checkout &amp; payments</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/settings-checkout</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[The Checkout module centralizes how customers complete their purchase: allowed checkout modes, guest checkout, order-related statuses used at completion and which payment plugins are active. 
Payment methods themselves (Stripe, PayPal, Mollie, bank]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>The <strong>Checkout</strong> module centralizes how customers complete their purchase: allowed checkout modes, guest checkout, order-related statuses used at completion and which payment plugins are active.</p>
<p>Payment methods themselves (Stripe, PayPal, Mollie, bank transfer…) are provided by plugins  -  install and configure them from the <a href="/docs/user/plugins/plugins-management">plugins pages</a>; this page ties them to the checkout flow.</p>
<hr />
<h2>Typical configuration</h2>
<ul>
<li><strong>Guest checkout</strong>  -  allow ordering without an account</li>
<li><strong>Order statuses on success/failure</strong>  -  which <a href="order-statuses">order status</a> is assigned when payment completes or fails</li>
<li><strong>Terms / minimum order</strong>  -  enforce conditions before checkout</li>
</ul>
<hr />
<h2>Payment plugins</h2>
<p>After installing a payment plugin (each has its own settings page under Plugins), it becomes available at checkout. Disable a plugin to remove its method from checkout without uninstalling.</p>
<p>Related pages: <a href="shipping">Shipping</a>, <a href="order-statuses">Order statuses</a>, <a href="discounts">Discounts</a>.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="365">
			<title data-v-post-name="name">Subscription statuses</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/settings-subscription-statuses</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Subscription statuses track the lifecycle of a recurring purchase over time. 
 
 
Common states  
Active - billing normally 
Pending - started, first payment not confirmed 
Canceled - terminated by customer or admin 
Expired - reached its cycle limit]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Subscription statuses track the lifecycle of a recurring purchase over time.</p>
<p><a href="/media/docs/settings-subscription-statuses.png"><img src="/media/docs/settings-subscription-statuses.png" alt="Subscription statuses" /></a></p>
<hr />
<h2>Common states</h2>
<ul>
<li><strong>Active</strong>  -  billing normally</li>
<li><strong>Pending</strong>  -  started, first payment not confirmed</li>
<li><strong>Canceled</strong>  -  terminated by customer or admin</li>
<li><strong>Expired</strong>  -  reached its cycle limit or end date</li>
<li><strong>Suspended</strong>  -  temporarily paused (e.g. failed payment retry window)</li>
</ul>
<p>Manage the list under <strong>Settings → Ecommerce → Subscription statuses</strong>; payment plugins translate provider events (webhooks) into these states automatically.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="366">
			<title data-v-post-name="name">Payment statuses</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/settings-payment-statuses</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Payment statuses track the state of a payment attempt independently from the order status. An order can be Processing while its payment is Failed, or the order can be Complete with payment Refunded. 
 
 
Default payment statuses  
Pending - payment]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Payment statuses track the state of a <strong>payment attempt</strong> independently from the <a href="order-statuses">order status</a>. An order can be <em>Processing</em> while its payment is <em>Failed</em>, or the order can be <em>Complete</em> with payment <em>Refunded</em>.</p>
<p><a href="/media/docs/settings-payment-statuses.png"><img src="/media/docs/settings-payment-statuses.png" alt="Payment statuses" /></a></p>
<hr />
<h2>Default payment statuses</h2>
<ul>
<li><strong>Pending</strong>  -  payment initiated, not confirmed yet</li>
<li><strong>Completed / Paid</strong>  -  funds received</li>
<li><strong>Failed</strong>  -  provider declined or error occurred</li>
<li><strong>Refunded</strong>  -  money returned to the customer</li>
<li><strong>Partially refunded</strong>  -  part of the amount returned</li>
<li><strong>Canceled</strong>  -  abandoned before completion</li>
</ul>
<hr />
<h2>Managing statuses</h2>
<p>From <strong>Settings → Ecommerce → Payment statuses</strong> you can rename, add, edit or remove entries to match your providers' vocabulary. Payment plugins map their own states onto these entries.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="367">
			<title data-v-post-name="name">Post type (edit)</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/settings-post-type</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Edits a single entry of the post types list. 
Typical fields:  
Type key - machine name used in URLs and templates 
Plural name - shown in menus and listings 
Icon - sidebar icon 
Comments enabled - whether the type supports comments  
Custom types]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Edits a single entry of the <a href="post-types">post types</a> list.</p>
<p>Typical fields:</p>
<ul>
<li><strong>Type key</strong>  -  machine name used in URLs and templates</li>
<li><strong>Plural name</strong>  -  shown in menus and listings</li>
<li><strong>Icon</strong>  -  sidebar icon</li>
<li><strong>Comments enabled</strong>  -  whether the type supports comments</li>
</ul>
<p>Custom types contributed by plugins show their source here; changing keys of built-in types (<code>post</code>, <code>page</code>) is not recommended since themes reference them.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="368">
			<title data-v-post-name="name">Relationship field</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/relationship-field</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[The Relationship field creates an input for selecting entries from another field group, used for creating relations between content items. 
 
Settings  
Default Value  
The default value shown when creating a new post.  
Required  
Prevents the field]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>The Relationship field creates an input for selecting entries from another field group, used for creating relations between content items.</p>
<p><a href="/media/docs/relationship-field.png"><img src="/media/docs/relationship-field.png" alt="Relationship field" /></a></p>
<h2>Settings</h2>
<ul>
<li>Default Value</li>
</ul>
<p>The default value shown when creating a new post.</p>
<ul>
<li>Required</li>
</ul>
<p>Prevents the field from accepting empty values.</p>
<ul>
<li>Instructions</li>
</ul>
<p>Shows instructions for entering data for the input.</p>
<ul>
<li>Placeholder Text</li>
</ul>
<p>Appears within input when no value exists.</p>
<ul>
<li>Prepend</li>
</ul>
<p>Adds the text before the input.</p>
<ul>
<li>Append</li>
</ul>
<p>Adds the text after the input.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="369">
			<title data-v-post-name="name">Field groups</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/fields-field-groups</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[A field group bundles custom fields together and attaches them to a content type - posts, products or a custom post type. Groups keep the editor organized: instead of one flat list of dozens of fields, each group appears as its own panel in the editor.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>A <strong>field group</strong> bundles <a href="/docs/user/fields/fields">custom fields</a> together and attaches them to a content type  -  posts, products or a custom post type. Groups keep the editor organized: instead of one flat list of dozens of fields, each group appears as its own panel in the editor.</p>
<hr />
<h2>Creating a field group</h2>
<ol>
<li>Go to <strong>Custom Fields → Field groups</strong> Click <strong>Add</strong> and give the group a name (e.g. &quot;Book details&quot;)</li>
<li>Add the fields that belong to the group  -  any type from Text to Gallery or Relationship</li>
<li>Choose which content type(s) the group applies to</li>
<li>Save</li>
</ol>
<hr />
<h2>How groups appear in the editor</h2>
<p>When editing a post/product that matches the group's content type, the group shows up as a separate section with all its fields. Editors only see groups relevant to what they are writing.</p>
<hr />
<h2>Displaying values in themes</h2>
<p>Field values are stored per post and can be rendered in themes through template variables or components, keyed by the field slug. See the individual <a href="/docs/user/fields/fields">field type docs</a> for output details.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="370">
			<title data-v-post-name="name">Custom fields</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/fields</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Custom Fields allow you to attach additional structured data to posts, products, and other content types. They are fully configurable, easy to reuse, and designed to support everything from simple text inputs to complex media galleries, maps, and]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Custom Fields allow you to attach additional structured data to posts, products, and other content types. They are fully configurable, easy to reuse, and designed to support everything from simple text inputs to complex media galleries, maps, and relational fields.</p>
<p>Each field type defines how data is entered in the admin panel and how it can be displayed in your theme. All fields share a consistent set of settings, making them predictable and easy to configure.</p>
<hr />
<h2>How Custom Fields Work</h2>
<p>A Custom Field consists of:</p>
<ul>
<li><strong>A field type</strong> (e.g., Text, Image, Gallery, Date, Product)</li>
<li><strong>A label</strong> (what editors see)</li>
<li><strong>A slug</strong> (used to retrieve the value in templates)</li>
<li><strong>Optional settings</strong> (default value, required, instructions, etc.)</li>
</ul>
<p>When a field is added to a post type, it appears in the editor and stores its value in the database. You can then display it in your theme using components or template variables.</p>
<hr />
<h2>Shared Field Settings</h2>
<p>All field types include the following settings:</p>
<ul>
<li><strong>Default Value</strong> - The value shown when creating a new post or product.</li>
<li><strong>Required</strong> - Prevents saving if the field is empty.</li>
<li><strong>Instructions</strong> - Helper text shown to editors.</li>
<li><strong>Placeholder Text</strong> - Text displayed when the field has no value.</li>
<li><strong>Prepend</strong> - Text displayed before the input.</li>
<li><strong>Append</strong> - Text displayed after the input.</li>
</ul>
<p>These settings ensure consistency across all field types and make the editing experience intuitive.</p>
<hr />
<h2>Field Types</h2>
<p>Each field type is designed for a specific kind of data. The following list summarizes the purpose of each field type.</p>
<h3>Accordion Field</h3>
<p>Creates an accordion-style input for storing expandable/collapsible list items.<br />
Useful for FAQs, feature lists, or structured content sections.</p>
<h3>Checkbox Field</h3>
<p>Stores a true/false value using a checkbox input.<br />
Ideal for toggles such as “Featured”, “Published”, or “Show in menu”.</p>
<h3>Color Field</h3>
<p>Provides a color picker for selecting HEX/RGB values.<br />
Useful for theme settings, UI customization, or product color attributes.</p>
<h3>Date Field</h3>
<p>Stores a date value using a calendar picker.<br />
Commonly used for events, schedules, or publication dates.</p>
<h3>Date Time Field</h3>
<p>Stores both date and time.<br />
Useful for appointments, event start times, or timed promotions.</p>
<h3>Email Field</h3>
<p>Validates and stores email addresses.<br />
Useful for contact information or form submissions.</p>
<h3>File Field</h3>
<p>Allows uploading files that can be downloaded on the website.<br />
Useful for PDFs, documents, or downloadable resources.</p>
<h3>Gallery Field</h3>
<p>Stores multiple images as a gallery.<br />
Ideal for product galleries, portfolios, or image collections.</p>
<h3>Google Map Field</h3>
<p>Stores map coordinates or addresses using a Google Maps input.<br />
Useful for locations, stores, or event venues.</p>
<h3>Image Field</h3>
<p>Stores a single image.<br />
Used for featured images, banners, or thumbnails.</p>
<h3>Link Field</h3>
<p>Stores a URL or internal link.<br />
Useful for buttons, CTAs, or external references.</p>
<h3>Message Field</h3>
<p>Displays a static message in the editor (info, warning, instructions).<br />
Does not store data.</p>
<h3>Month Field</h3>
<p>Stores a month value (YYYY‑MM).<br />
Useful for archives, billing cycles, or monthly scheduling.</p>
<h3>Number Field</h3>
<p>Stores numeric values.<br />
Useful for quantities, prices, ratings, or measurements.</p>
<h3>Oembed Field</h3>
<p>Accepts media URLs and automatically embeds them (YouTube, Twitter, etc.).<br />
Ideal for rich media content.</p>
<h3>Password Field</h3>
<p>Stores password values (masked input).<br />
Useful for protected content or integrations.</p>
<h3>Post Field</h3>
<p>Autocomplete selector for choosing a post.<br />
Useful for related posts, featured posts, or linking content.</p>
<h3>Product Field</h3>
<p>Autocomplete selector for choosing a product.<br />
Useful for cross‑selling, related products, or product references.</p>
<h3>Radio Field</h3>
<p>Displays a list of radio buttons for selecting one value.<br />
Useful for predefined options such as sizes, types, or modes.</p>
<h3>Range Field</h3>
<p>Creates a slider for selecting a numeric value within a range.<br />
Useful for ratings, filters, or adjustable settings.</p>
<h3>Select Field</h3>
<p>The Select field displays a dropdown list of predefined options, allowing the user to choose a single value. It is ideal for categories, types, modes, or any controlled vocabulary.</p>
<h3>Tab Field</h3>
<p>The Tab field stores tabbed content, enabling editors to organize information into multiple labeled sections. This is useful for product specifications, multi-section content blocks, or structured layouts.</p>
<h3>Taxonomy Field</h3>
<p>The Taxonomy field links a post to a taxonomy item, such as a category, tag, or custom taxonomy. It is essential for organizing content and enabling taxonomy-based filtering.</p>
<h3>Telephone Field</h3>
<p>The Telephone field stores phone numbers using a tel input. It is suitable for contact information, business listings, or user profiles.</p>
<h3>Text Field</h3>
<p>The Text field provides a simple single-line input for short strings. It supports an optional character limit and is one of the most commonly used field types.</p>
<h3>Textarea Field</h3>
<p>The Textarea field stores multi-line text, making it ideal for descriptions, notes, summaries, or any longer content that does not require rich formatting.</p>
<h3>Time Field</h3>
<p>The Time field stores time values using a time picker. It is useful for schedules, opening hours, or event times.</p>
<h3>Toggle Field</h3>
<p>The Toggle field stores true/false values using a switch-style UI. It is a more visual alternative to the Checkbox field and works well for enabling or disabling features.</p>
<h3>URL Field</h3>
<p>The URL field stores website addresses and validates them as URLs. It is useful for external links, social profiles, or reference resources.</p>
<h3>User Field</h3>
<p>The User field allows selecting a user from the system, storing a relationship between the post and a user account. It is useful for authorship, ownership, or assigning responsibility.</p>
<h3>Week Field</h3>
<p>The Week field stores week values (year + week number). It is useful for scheduling, weekly reports, or time-based categorization.</p>
<h3>WYSIWYG Field</h3>
<p>The WYSIWYG field provides a full rich-text editor, identical to the editor used for posts and products. It supports formatted text, images, embeds, and multimedia.<br />
This field is ideal for long-form content, flexible layouts, and any scenario where editors need full control over formatting.</p>
<p>A combined reference table helps compare all Vvveb CMS custom field types at a glance and clarifies when each one is most appropriate. The table below summarizes every available field type, including its purpose and ideal use cases.</p>
<hr />
<h2>Custom Fields Reference Table</h2>
<table class="table table-bordered">
<thead class="table-light">
<tr>
<th>Field Type</th>
<th>What It Stores</th>
<th>Ideal Use Cases</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Accordion</strong></td>
<td>Expandable/collapsible list items</td>
<td>FAQs, feature lists, structured content blocks</td>
<td>Stores multiple grouped items</td>
</tr>
<tr>
<td><strong>Checkbox</strong></td>
<td>True/false value</td>
<td>Toggles (Featured, Published, Enable option)</td>
<td>Simple boolean switch</td>
</tr>
<tr>
<td><strong>Color</strong></td>
<td>Color value (HEX/RGB)</td>
<td>Theme settings, UI customization, product color attributes</td>
<td>Uses color picker</td>
</tr>
<tr>
<td><strong>Date</strong></td>
<td>Date (YYYY‑MM‑DD)</td>
<td>Events, schedules, publication dates</td>
<td>Calendar input</td>
</tr>
<tr>
<td><strong>Date Time</strong></td>
<td>Date + time</td>
<td>Appointments, event start times, timed promotions</td>
<td>Combined picker</td>
</tr>
<tr>
<td><strong>Email</strong></td>
<td>Email address</td>
<td>Contact info, forms, user profiles</td>
<td>Validates email format</td>
</tr>
<tr>
<td><strong>File</strong></td>
<td>Uploaded file</td>
<td>PDFs, documents, downloadable resources</td>
<td>Stores file path</td>
</tr>
<tr>
<td><strong>Gallery</strong></td>
<td>Multiple images</td>
<td>Product galleries, portfolios, image collections</td>
<td>Multi-image input</td>
</tr>
<tr>
<td><strong>Google Map</strong></td>
<td>Address or coordinates</td>
<td>Store locations, event venues, business listings</td>
<td>Map-based selector</td>
</tr>
<tr>
<td><strong>Image</strong></td>
<td>Single image</td>
<td>Featured images, banners, thumbnails</td>
<td>Most common media field</td>
</tr>
<tr>
<td><strong>Link</strong></td>
<td>URL or internal link</td>
<td>Buttons, CTAs, external references</td>
<td>Simple link input</td>
</tr>
<tr>
<td><strong>Message</strong></td>
<td>Static message (no data)</td>
<td>Editor instructions, warnings, info blocks</td>
<td>Does not store values</td>
</tr>
<tr>
<td><strong>Month</strong></td>
<td>Month (YYYY‑MM)</td>
<td>Billing cycles, archives, monthly schedules</td>
<td>Month picker</td>
</tr>
<tr>
<td><strong>Number</strong></td>
<td>Numeric value</td>
<td>Quantities, prices, ratings, measurements</td>
<td>Supports min/max</td>
</tr>
<tr>
<td><strong>Oembed</strong></td>
<td>Media embed URL</td>
<td>YouTube, Vimeo, Twitter embeds</td>
<td>Auto-expands on display</td>
</tr>
<tr>
<td><strong>Password</strong></td>
<td>Masked text</td>
<td>Protected content, integrations</td>
<td>Stores sensitive strings</td>
</tr>
<tr>
<td><strong>Post</strong></td>
<td>Post reference</td>
<td>Related posts, featured posts</td>
<td>Autocomplete selector</td>
</tr>
<tr>
<td><strong>Product</strong></td>
<td>Product reference</td>
<td>Cross‑selling, related products</td>
<td>Autocomplete selector</td>
</tr>
<tr>
<td><strong>Radio</strong></td>
<td>One value from a list</td>
<td>Sizes, types, modes, predefined options</td>
<td>Single-choice list</td>
</tr>
<tr>
<td><strong>Range</strong></td>
<td>Numeric slider</td>
<td>Ratings, adjustable settings, filters</td>
<td>Min/max range</td>
</tr>
<tr>
<td><strong>Select</strong></td>
<td>Dropdown list</td>
<td>Categories, types, controlled vocabularies</td>
<td>Single-choice dropdown</td>
</tr>
<tr>
<td><strong>Tab</strong></td>
<td>Tabbed content</td>
<td>Product specs, multi-section content</td>
<td>Stores multiple tab panels</td>
</tr>
<tr>
<td><strong>Taxonomy</strong></td>
<td>Taxonomy relation</td>
<td>Categories, tags, custom taxonomies</td>
<td>Connects content to taxonomy</td>
</tr>
<tr>
<td><strong>Telephone</strong></td>
<td>Phone number</td>
<td>Contact info, business listings</td>
<td>Tel input</td>
</tr>
<tr>
<td><strong>Text</strong></td>
<td>Single-line text</td>
<td>Titles, labels, short strings</td>
<td>Supports character limit</td>
</tr>
<tr>
<td><strong>Textarea</strong></td>
<td>Multi-line text</td>
<td>Descriptions, notes, summaries</td>
<td>Plain text only</td>
</tr>
<tr>
<td><strong>Time</strong></td>
<td>Time value</td>
<td>Opening hours, schedules, event times</td>
<td>Time picker</td>
</tr>
<tr>
<td><strong>Toggle</strong></td>
<td>True/false switch</td>
<td>Enable/disable features</td>
<td>Visual alternative to checkbox</td>
</tr>
<tr>
<td><strong>URL</strong></td>
<td>Website address</td>
<td>External links, social profiles</td>
<td>Validates URL format</td>
</tr>
<tr>
<td><strong>User</strong></td>
<td>User reference</td>
<td>Author, owner, assigned user</td>
<td>Autocomplete selector</td>
</tr>
<tr>
<td><strong>Week</strong></td>
<td>Week of the year</td>
<td>Weekly schedules, reports</td>
<td>Week picker</td>
</tr>
<tr>
<td><strong>WYSIWYG</strong></td>
<td>Rich formatted content</td>
<td>Long-form content, multimedia sections</td>
<td>Full editor with styling</td>
</tr>
</tbody>
</table>
<h2>Using Custom Fields in Themes</h2>
<p>Custom field values can be displayed in templates using components or Vtpl selectors. For example:</p>
<pre><code class="language-html">&lt;span data-v-post-custom_field_slug&gt;&lt;/span&gt;
</code></pre>
<p>Or inside a component:</p>
<pre><code class="language-html">&lt;div data-v-product-custom_field_slug&gt;&lt;/div&gt;
</code></pre>
<p>This makes it easy to integrate custom data into any theme layout.</p>
<hr />
<p>Custom Fields are one of the most powerful ways to tailor Vvveb CMS to different content models. They allow you to build flexible, structured, and editor‑friendly content types without writing custom code.</p>
]]></content:encoded>		
		</item><item data-v-post="post" data-v-id="371">
			<title data-v-post-name="name">User group (edit)</title>
			<link data-v-post-full-url="name">http://docs.vvveb.com/user-user-group</link>
			<dc:creator data-v-post-display_name="name"><![CDATA[Admin]]></dc:creator>
			<pubDate data-v-post-pubDate="date">Mon, 28 Sep 2026 15:04:56 +0000</pubDate>
			<category data-v-post-category-name="category" data-filter-cdata=""><![CDATA[Category]]></category>
			<description data-v-post-excerpt="excerpt" data-filter-cdata=""><![CDATA[Edits a single customer group from user groups: the group name and its members. Assign or remove users from the group via each user's edit page. 
Deleting a group moves its members back to the default group; the default group itself cannot be deleted.]]></description>
			<content:encoded data-v-post-content="content" data-filter-cdata=""><![CDATA[
<p>Edits a single customer group from <a href="user-groups">user groups</a>: the group name and its members. Assign or remove users from the group via each <a href="user">user's</a> edit page.</p>
<p>Deleting a group moves its members back to the default group; the default group itself cannot be deleted.</p>
]]></content:encoded>		
		</item>		
		
		
		
	</channel>
</rss>
