Skip to main content
In SEO mode, an SEO specialist opens the shop with a separate password and maintains additional content directly on the product detail view: an SEO product name for the speaking URL, a main category index, and up to twenty free fields for page title, description and whatever else is needed. The input fields are not in the product detail view itself but in a separate template. You enter it in the shop configuration shop.config in the SEOProductFields section under the Template parameter and pull it into the page with ~WS-Module(product_seo)~. The tags on this page apply exclusively in this template. Guide: SEO content for products · Reference: SEOProductFields section · Reference: WS-Module()
The call to WS-Module(product_seo) belongs inside an ST-SeoMode range. Without it, ordinary visitors also see the input form.
Reference: ST-SeoMode
The maintained content is not output in the shop by these tags but by the PR-SeoFreeField1…20 tags in the product detail view. This page only describes the maintenance interface.
Reference: PR-SeoFreeField1…20

Can content be maintained in this subshop at all

Connected subshops receive their SEO data, like their product data, automatically from the main subshop. Maintenance therefore only takes place there. E-PSEO_Connected_Subshop is the first decision in the template.
The range applies positively when maintenance is not possible here. The input form therefore belongs in the negative branch. If you mix this up, you build a form whose submission the shop always rejects with the ErrorConnectedSubshop message.
As a single tag, E-PSEO_Connected_Subshop outputs the ID of the subshop in which maintenance must take place. Mention it in the notice, otherwise the SEO specialist has to guess where to switch to.

The form

Both forms of the SEO mode, the one for saving and the one for resetting, need the same three hidden fields: the context, the product index and the action name.
Without the product index in the pi field, the module aborts and outputs nothing at all. This is the most common cause of a form that leaves an empty page after submission.
E-PSEO_Action_Save and E-PSEO_Action_Reset only provide the technical name. They therefore go into the name attribute, not the value. You can set the same name again on the submit button, but this is not necessary in addition to the hidden field.

The field names

Each input field has up to three tags following the same pattern. <Feld> stands for Name, MainCatIndex or Field1 to Field20.
The hidden field from _Hidden belongs with every SEO field and with the main category index. The module only applies a value if either something is in it or the associated hidden field was sent along. Without the hidden field, a field that has once been filled can never be emptied again; the old content simply remains when saving.
The SEO product name does not need a hidden field and therefore has no _Hidden tag. It is always applied and can be emptied at any time.
Always take the field names from the _Input and _Hidden tags. A self-chosen name does not reach the module, and the input is lost when saving.

The lengths

The SEO product name must be unique across the shop because it becomes the product’s URL. If someone assigns a name that already belongs to another product, the module rejects the save with the ErrorNameAlreadyExists message.
If even a single field is rejected when saving, the module saves nothing at all. The input remains in the form, and the affected fields show their error message. So the SEO specialist loses nothing but must fix all issues before anything is saved.

Errors and feedback

E-PSEO_Success and E-PSEO_Name_Changed are pure ranges without text output. You write the text into the template yourself.
All message texts are located in the shop configuration shop.config in the SEOProductFields-Text section, not in the template. If an entry is missing there, the message stays empty, and the SEO specialist sees an error without a reason. The required entries are ErrorNameTooLong, ErrorFieldTooLong, ErrorNameAlreadyExists, ErrorConnectedSubshop and ErrorMainCatIndexTooLong.
Reference: SEOProductFields-Text section
E-PSEO_Name_Changed is the place for the notice that the product’s speaking URL has not been switched yet. It is only created during the next generation run in the TopRank Manager, not when saving.

Reloading via AJAX

E-PSEO_Ajax applies if the module was loaded via an AJAX call. Use it to delimit the area that should be replaced after saving.
The opening and closing markers must have the same name, and this name must match the ID of the surrounding element. A typo here means the shop replaces nothing after saving, without reporting an error.
Without AJAX, the entire product page is reloaded after saving. The advantage is that a change to the page title can be checked in the browser immediately. With the AJAX variant, only the enclosed area is refreshed.
Reference: WS-Ajax-”ID” · Guide: AJAX functions

WEBSALE tags in the SEO fields

After a written order and technical activation, the SEO fields themselves may contain WEBSALE tags. They are then resolved when output in the shop.
So that the SEO specialist sees the tag itself in the input field and not its result, wrap the content in WS-NoParsing. Without this range, they only see the resolved result after saving and can neither check nor correct the tag.
Reference: WS-NoParsing

Tag overview

All tags on this page are permitted in the template for the product SEO input fields, which is entered in the shop configuration shop.config in the SEOProductFields section under the Template parameter.
E-PSEO_ProdIndex outputs the product index to which the displayed fields belong. In the form, you can use it to replace ~PR-ProdIndex~, which has the advantage that the value comes from the module itself and not from the surrounding shop template.
  • Guide: SEO content for products
  • Guide: SEO URLs
  • Reference: SEOProductFields section
  • Reference: SEOProductFields-Text section
  • Reference: PR-SeoFreeField1…20