The Plugin "Custom Products (v2)" provides you the opportunity to design articles completely customizable. This is important for all articles, whereby variants aren't sufficient. These articles can be configured individually, e.g. articles with names printed on them. The "v2" in the title of this plugin signifies that the plugin "Custom products" is available in a new version. In this documentation we would like to explain how to install and configure it as you wish.
This extension can be found in our Shopware Store, the easiest way to find a specific plugin is the search-bar. Complete the order process and login to the backend of your store. Navigate to Configuration > Plugin manager > My purchases. You need to login and click the refresh button. Your new extension is now listed and can be installed. After installing the extension go to the menu entry installed and refresh. Activate the extension. Finally delete the cache under Settings > Cache/Performance > Clear Shop Cache and refresh the backend.
If you already used the first version of "Custom Products", your're able to migrate your groups and options to the new version. Concerning this, you can find the button "Migration" (1)
After clicking this button, the following window will be opened. All those groups are listed there, which you can carry into the new version of the plugin (1). After you choose the desired groups to migrate, you can begin it with a click on "Start migration now" (2). In the process, you can set if you'd like to hide the migration button after these steps (3).
In the ensuing overview you can control the progress and result of the migration. There, a progress bar signalizes the progress of the migration (1). In the area "Migration progress" you can see if your group were migrated successfully (2). If something happens during migration, that requires your attention, it can be examined in a concurrent log by clicking the corresponding icon (3).
If the migration was successfully, you can find your created template in the overview of the new "Custom Products" module. Concerning the settings of the orders, which was completed with the old version before: You can read the details of this orders in the internal comment of them.
Please remember at all costs to check the migration on a test system beforehand and to create a backup of your data at any rate, before starting this migration. This way, you're able to react quickly in a possible case of an error.
The first and second version of the plugin "Custom Products" can cause side effects if they're both installed at the same time. Because of this reason, please notice that the first version should be deinstalled and the chache should be cleared to ensure the functionality.
If you import or export article data, the options will not assign automatically!
As a first step, it might be useful to familiarise with the configuration of the plugin. Similar to the old version, some settings are required to integrate the plugin optimally. These settings are located in the plugin manager, as you open the plugin to edit or under Configuration > Basic settings > Additional Settings > Custom Products (v2).
At this place, you can edit the following settings:
In the plugin "Custom Products", the particular configurations of the articles (or the exact configuration of the articles by your customers) will be saved in your shop for a particular time. These configurations can be called up via nan alphanumeric value that's added to the link of the corresponding article. This way, the customer is able to call his configuration up and to forward it to others.
These configurations are stored in your database and can be removed after the particular timespan by the cronjob "CustomProducts Hash GarbageCollector". To define this timespan, you can use the corresponding setting.
You have to configure the cronjob first, so that it runs correctly. Thereto, the activation of the plugin "Cron" is necessary. Detailed information about the configuration and usage of Cronjobs can be found here.
When you open the plugin, the following window will be opened:
In this overview you can find all templates, that were created before (4). This overview will be empty of course, if you open the plugin the first time. Via the button "Add item" (1) you're able to create new templates, while using "Delete all selected" (2) will remove all selected templates. Using the search bar (3), you can find your favourite template easily. In addition, you may delete single template, open them to edit or copy them by using the corresponding icons (5).
The windows to create a template is divided in three areas: "Configuration"(1), "Products" (2) and "Options" (3).
Configuration
At this point, you define the basic settings of your template. These settings can be defined here:
In this new version, it's possible to add the articles in the Custom Products templates directly. This is implemented in the tab "Products". The following view will be provided to you:
Via the search filed (1) the desired articles can be found over their names or article numbers. Via one mouse click, you add these articles to your template.
To add an option to your template
In the third tab "Options", you can assign the options to your template and to your articles, accordingly. This way, you provide the possibility to individualize the articles. This tab is constructed as following:
Similar to the overview over the templates, all available option will be displayed at this point. When clicking "Add item" (1) you have the possibility to add new options to the tepmalte as well as to delete selected options via the button "Delete all selected (2)". In addition, you open your option to edit them or delete a particular option via the familiar buttons. By the way, you can edit the name of your option only by clicking it and alter the order of your options by drag and drop.
If you like to add new options, the following window will be opened, with five options of configuration:
At this point, you're able to set the following, first information:
Once you choose an option type, additional possibilities to configure the option will be provided. These possibilities can differ between these options. Using the example of a checkbox, the window for configuring the option looks like this:
Different option types
Text: Using this type, you create a simple text field, in which the customer places small texts.
Text area: In option of this types, simple but more larger texts can be entered.
Number field: In this field, only numbers can be entered. For options like this, a minimum and maximum value as well as an interval can be configured.
Checkbox: With this option you can provide multiple, prefabricated possibilities to choose, which will be displayed with a checkbox in your frontend. In this case, the customer can choose one or more values.
Combobox: In this option, you can provide a menu to expand, in which the customer can choose his answer by clicking one of the entries.
Multiselect: In this display format, you can show one or more possible values to the customer, which will be presented in a multiselect. The entries in it can be selected by clicking, multiple selection is possible by using the CRTL-key while selecting.
Radio select : Via this option you can let the customer choose between various values, while allowing just one selection.
Select colour: You can configure a colour selection via this option.
Select image: At this point you can provide various image to the customer, so he can choose one or more from them. These images have to be uploaded via the media manager.
File upload: Using this type, you're able to allow your customers to upload various files. Correlating, you can decide in the backend over the size and amount of files that can be uploaded. In general, the following file types are permitted: png, jpg, jpeg, tiff, svg, gif, txt, ai, eps, pdf.
Image upload: Via this optiontype, only images can be uploaded. Similar to the file-upload, you can define the amount and size of the uploaded files.
Date field: Here you can make it possible for the customers to name a date. By the way, it's possible to configure a day interval.
Time field: Via this option type, you can provide a time input in your article. Here, it's also possible to set a timespan.
HTML editor: Using this type, you 're able to add a HTML-editor to your article, which makes a formatted text input possible.
Defining values
Some of these option types require prefectured input possibilities, between which the customer can choose later in the article. Because of this fact you get the possibility to add values in these affected options. This occurs in the following window:
Using "Apply", the value will be inherited into the option. If you want to discard the value, you can leave the window over "Cancel".
Step-by-Step Mode
You can activate the so-called "Step-by-Step mode" in your template. This brings a completely new display format along. In this mode, the configuration can be done step by step, similar to a possibility of a shopping advisor. It looks like this in the frontend:
The customer is able to click though the configuration gradually or rotate freely between these options. If the customer is satisfied with his configuration, he can attach it to the article by clicking "Assume configuration" and add the article to the checkout as usual.
The user is obligated to confirm their input
To protect yourself against incorrect data by the customer, the plugin provides an opportunity to let the customer confirm his inputs before he proceeds to the checkout. Therefore you can activate the setting "The user is obligated to confirm their input". In this case, the customer must confirm the correctness of his inputs. Otherwise, he is not able to continue his order.
You can create or edit a template out of the article module as well. Therefore you find an area for Custom Products in the tab "Basic info".
If the article has already a template connected to it, this template is mentioned next to "Custom Product template" (1). Using the button "Configure now "(2), you can edit the template. If the article doesn't have a template yet, you can create one using the same button. A click on it leads you to the Custom Products module.
In this paragraph, we want to show you how this whole configuration looks like in the frontend. To show an example, we created an article and furnished it with options. Thus, a configured article can look like this in the frontend, if step-by-step mode isn't set active:
If you click on "Add to shopping cart", the article can be bought without configuration, as long as you didn't define any required fields. If some required fields are defines, the customer gets a hint on which inputs are missing. If surcharges are set for some options, they will be shown in the article as soon as the the customer configures the corresponding options. This overview over the prices is divided up in unit - or once prices.
After the article is configured as the customer wishes, he can add it to his shopping cart. This looks as following:
The separate configuration will be displayed as own positions in the shopping cart so that the customer gets the best overview over the configuration of his articles. In addition, he can open his configuration again using "Open configuration". The further checkout processes as usual.
In the order positions of a finished order, you can read the configuration of the customer's article. Therefore you can open an overview over the selected options by clicking the Custom Products icon (1).:
This overview looks like the module from the following screenshot and contains all data of the customer so that the individualized article can be examined completely. Possible available files or images can be opened directly as well.
In the document of the order, all options will be displayed as own positions, like it's the case in the shopping cart.
Via using the corresponding variables, it's possible to add the information for Custom Products to the email template sORDER. You can examine the available variables under "Variable Information".
The following example shows a position list of an html email, in which the CustomProducts information are displayed.
<table width="80%" border="0" style="font-family:Arial, Helvetica, sans-serif; font-size:10px;">
<tr>
<td bgcolor="#F7F7F2" style="border-bottom:1px solid #cccccc;"><strong>Artikel</strong></td>
<td bgcolor="#F7F7F2" style="border-bottom:1px solid #cccccc;"><strong>Pos.</strong></td>
<td bgcolor="#F7F7F2" style="border-bottom:1px solid #cccccc;"><strong>Art-Nr.</strong></td>
<td bgcolor="#F7F7F2" style="border-bottom:1px solid #cccccc;"><strong>Menge</strong></td>
<td bgcolor="#F7F7F2" style="border-bottom:1px solid #cccccc;"><strong>Preis</strong></td>
<td bgcolor="#F7F7F2" style="border-bottom:1px solid #cccccc;"><strong>Summe</strong></td>
</tr>
{foreach item=details key=position from=$sOrderDetails}
{if !$details.swag_custom_product_original_mode}
<tr>
<td rowspan="2" style="border-bottom:1px solid #cccccc;">
{if $details.image.src.0 && $details.modus == 0}
<img style="height: 57px;" height="57" src="{$details.image.src.0}" alt="{$details.articlename}" />
{/if}</td>
<td>{$position+1|fill:4} </td>
<td>{$details.ordernumber|fill:20}</td>
<td>{$details.quantity|fill:6}</td>
<td>{$details.price|padding:8}{$sCurrency}</td>
<td>{$details.amount|padding:8} {$sCurrency}</td>
</tr>
<tr>
<td colspan="5" style="border-bottom:1px solid #cccccc;">{$details.articlename|wordwrap:80|indent:4}
{if $details.custom_product_adds}
{foreach item=custom_value key=position from=$details.custom_product_adds}
<br><br><i><b>{$custom_value.name}: (+{{$custom_value.netPrice+$custom_value.tax}|number_format:2:",":"."} {$sCurrency}):</b><br/>{if $custom_value.type == textfield || $custom_value.type == textarea || $custom_value.type == numberfield || $custom_value.type == date || $custom_value.type == time || $custom_value.type == wysiwyg} {$custom_value.selectedValue.0}{/if}
{if $custom_value.type == imageupload}{foreach item=image key=position from=$custom_value.values}<img width="50" height="50" src="{$image.path}"/><br/>{/foreach}{/if}
{if $custom_value.type == multiselect || $custom_value.type == checkbox || $custom_value.type == fileupload || $custom_value.type == colorselect || $custom_value.type == radio || $custom_value.type == select}{foreach item=select key=position from=$custom_value.values} {$select.name} (+{{$select.netPrice+$select.tax}|number_format:2:",":"."} {$sCurrency})<br/>{/foreach}{/if}
{if $custom_value.type == imageselect}{foreach item=image key=position from=$custom_value.values}<img width="50";height="50px" src="{$image.value}"/>{$image.name} (+{{$image.netPrice+$image.tax}|number_format:2:",":"."} {$sCurrency})<br/>{/foreach}{/if}
{/foreach}
{/if}
</td>
</tr>
{/if}
{/foreach}
</table>