You can manage your shop configuration thanks to the API, in this example we will set the PS_MULTISHOP_FEATURE_ACTIVE
to true (which enables multishop mode).
First check if the configuration already exists by using filters and display parameters /api/configurations/?display=[id,name,value]&filter[name]=[PS_MULTISHOP_FEATURE_ACTIVE]
If the configuration doesn’t exist yet, you will receive an empty list:
<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<configurations>
</configurations>
</prestashop>
So you need to POST on the configuration
API /api/configurations/
to create this new value
<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<configuration>
<value>1</value>
<name>PS_MULTISHOP_FEATURE_ACTIVE</name>
</configuration>
</prestashop>
If it is already defined you will receive a list with the searched configuration:
<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<configurations>
<configuration>
<id><![CDATA[411]]></id>
<value><![CDATA[1]]></value>
<name><![CDATA[PS_MULTISHOP_FEATURE_ACTIVE]]></name>
</configuration>
</configurations>
</prestashop>
So you need to update it via a PUT using the configuration ID: /api/configurations/411
<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<configuration>
<id>411</id>
<value>1</value>
<name>PS_MULTISHOP_FEATURE_ACTIVE</name>
</configuration>
</prestashop>
POST|PUT
if you want to avoid duplicates.<?php
require_once('./vendor/autoload.php');
try {
$webServiceUrl = 'http://example.com/';
$webServiceKey = 'ZR92FNY5UFRERNI3O9Z5QDHWKTP3YIIT';
$webService = new PrestaShopWebservice($webServiceUrl, $webServiceKey, false);
$configurationName = 'PS_MULTISHOP_FEATURE_ACTIVE';
$configurationValue = 1;
// Start by checking if the configuration is present and get its ID
$xml = $webService->get([
'resource' => 'configurations',
'filter[name]' => '['. $configurationName . ']',
]);
$configurationId = null;
if ($xml->configurations->configuration->count() > 0) {
$configurationId = (int) $xml->configurations->configuration[0]->attributes()['id'];
}
// Get the base XML, either a blank one or the existing one
if (null === $configurationId) {
$configurationXml = $webService->get(['url' => $webServiceUrl . 'api/configurations?schema=blank']);
} else {
$configurationXml = $webService->get([
'resource' => 'configurations',
'id' => $configurationId,
]);
}
// Update values
$configurationXml->configuration[0]->name = $configurationName;
$configurationXml->configuration[0]->value = $configurationValue;
} catch (PrestaShopWebserviceException $e) {
echo 'Error:' . $e->getMessage() . PHP_EOL;
}
// Either create new configuration or update it
if (null === $configurationId) {
try {
$webService->add([
'resource' => 'configurations',
'postXml' => $configurationXml->asXML(),
]);
echo 'Successfully created configuration ' . $configurationName . ' = ' . $configurationValue . PHP_EOL;
} catch (PrestaShopWebserviceException $e) {
echo 'Error while adding the configuration:' . $e->getMessage() . PHP_EOL;
}
} else {
try {
$webService->edit([
'resource' => 'configurations',
'id' => $configurationId,
'putXml' => $configurationXml->asXML(),
]);
echo 'Successfully updated configuration ' . $configurationName . ' = ' . $configurationValue . PHP_EOL;
} catch (PrestaShopWebserviceException $e) {
echo 'Error while updating the configuration:' . $e->getMessage() . PHP_EOL;
}
}