{"id":157061,"date":"2019-01-05T15:04:03","date_gmt":"2019-01-05T15:04:03","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=157061"},"modified":"2019-12-10T10:31:42","modified_gmt":"2019-12-10T10:31:42","slug":"multistore-prestashop","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/multistore-prestashop\/","title":{"rendered":"How to develop MultiStore compatible module in Prestashop?"},"content":{"rendered":"<p>In this blog, we are going to learn how Prestashop manages Multistore and how we can develop PrestaShop module with multistore compatibility.<\/p>\n<div class=\"panel panel-primary\">\n<div class=\"panel-heading\">\n<div>\n<h3 class=\"panel-title\">Let&#8217;s first understand the Prestashop multistore concept<\/h3>\n<\/div>\n<\/div>\n<div class=\"panel-body\">\n<p>The multi-store feature is an opportunity to set up and manage the unlimited number of sub-shops within single back-office. By default,\u00a0a default shop gets create in a default group when we install the PrestaShop. Prestashop manages Shop group to categories and shares the data between the shops in that particular group.<\/p>\n<h2>Shop Group<\/h2>\n<p>Shop Group is a group of one or more than one shop. Multiple shops can share the customers, orders and available quantities to sell within the same group.<br \/>\n<strong>Share the customers &#8211;<\/strong> All shops in this group will share the customers&#8217; data. That means if a customer registers in any one of these shops then that customer account will automatically be available in the other shops of this group.<br \/>\n<strong>Share available quantities to sell &#8211;<\/strong> Share available quantities between shops of this group. When changing this option, all available products quantities will be reset to 0.<br \/>\n<strong>Share the orders &#8211;\u00a0<\/strong>When you enable the above two options, only then this is\u00a0possible. In this, the customer&#8217;s cart will be shared by all the shops in this group. This means if any order starts in one shop then it will be able to be complete in another shop from the same group.<\/p>\n<h2>Shop<\/h2>\n<p>During a new shop creation, a shop can import the data form any listed shops except the customers and orders data.<\/p>\n<\/div>\n<\/div>\n<div class=\"panel panel-primary\">\n<div class=\"panel-heading\">\n<div>\n<h3 class=\"panel-title\">Now let&#8217;s understand how the configuration works with multishop.<\/h3>\n<\/div>\n<\/div>\n<div class=\"panel-body\">\n<p><strong>Configuration variable always works with multishop because when we call updateValue() and get() function automatically get the current context shop and shop group and save the data accordingly.<\/strong><br \/>\nConfiguration value works in the following hierarchy.<\/p>\n<blockquote>\n<p style=\"padding-left: 30px\">Shop Configuration -&gt; Shop Group Configuration -&gt; All Configuration<\/p>\n<\/blockquote>\n<p>This means if shop wise configuration does not exist then only it will check the shop group configuration of that shop and will apply this value for that shop also. If the shop group configuration also not exist then only it will check for common configuration and that value will apply.<\/p>\n<ul>\n<li>Suppose that we have selected the<strong> All shop<\/strong> in shop menu and saving the configuration of\u00a0 &#8220;Number of decimals&#8221;<br \/>\nThe value in the configuration table will be like.<\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th>id_shop_group<\/th>\n<th>id_shop<\/th>\n<th>name<\/th>\n<th>value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>NULL<\/td>\n<td>NULL<\/td>\n<td>PS_PRICE_DISPLAY_PRECISION<\/td>\n<td>2<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"padding-left: 30px\">Here both id shop and shop group are null it means that if any shop or any shop group configuration is not saved then this will be applied to that shop groups and shops.<\/p>\n<ul>\n<li>Suppose that we have selected the <strong>Default group(shop group id 1)<\/strong> in shop menu and saving the configuration of &#8220;Number of decimals&#8221;<br \/>\nThe value in the configuration table will be like<\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th>id_shop_group<\/th>\n<th>id_shop<\/th>\n<th>name<\/th>\n<th>value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>NULL<\/td>\n<td>PS_PRICE_DISPLAY_PRECISION<\/td>\n<td>2<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"padding-left: 30px\">Here both id shop is null it means that if any shop of this group configuration is not saved then this will be applied to that shop.<\/p>\n<ul>\n<li>Suppose that we have selected the <strong>Demo shop(in shop group 1 and shop id is 1)<\/strong> in shop menu and saving the configuration of &#8220;Number of decimals&#8221;<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\">The value in the configuration table will be like<\/p>\n<table>\n<thead>\n<tr>\n<th>id_shop_group<\/th>\n<th>id_shop<\/th>\n<th>name<\/th>\n<th>value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>1<\/td>\n<td>PS_PRICE_DISPLAY_PRECISION<\/td>\n<td>2<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"padding-left: 30px\">Here both id shop and id shop group is mentioned it means that if this value is only for this particular shop.<\/p>\n<p>To save and get the configuration we use get() and UpdateValue() function which is <strong>automatically managed multistore configuration<\/strong>.<br \/>\nUpdate function &#8211;<a href=\"https:\/\/github.com\/PrestaShop\/PrestaShop\/blob\/1.7.4.x\/classes\/Configuration.php#L422\">https:\/\/github.com\/PrestaShop\/PrestaShop\/blob\/1.7.4.x\/classes\/Configuration.php#L422<\/a><\/p>\n<p>Get Function &#8211;<br \/>\n<a href=\"https:\/\/github.com\/PrestaShop\/PrestaShop\/blob\/1.7.4.x\/classes\/Configuration.php#L198\">https:\/\/github.com\/PrestaShop\/PrestaShop\/blob\/1.7.4.x\/classes\/Configuration.php#L198<\/a><\/p>\n<p>If you want to apply a new value to the same Configuration variable for all existing stores then you can use theupdateGlobalValue() method.<\/p>\n<p style=\"padding-left: 120px\">Configuration::updateGlobalValue(&#8216;myVariable&#8217;, &#8216;myValue&#8217;)<\/p>\n<p>You can then retrieve that value for the current store by using the get() method.<\/p>\n<p style=\"padding-left: 120px\">Configuration::get(&#8216;myVariable&#8217;) method.<\/p>\n<\/div>\n<\/div>\n<div class=\"panel panel-primary\">\n<div class=\"panel-heading\">\n<div>\n<h3 class=\"panel-title\">What to do to make module multistore compatible?<\/h3>\n<\/div>\n<\/div>\n<div class=\"panel-body\">\n<div><\/div>\n<p><strong>Module Configuration<\/strong><br \/>\nAs we have read above the configuration of a module is already compatible with multistore if the data is stored in the configuration table.<br \/>\nIf we want to manage the configuration in the separate table then it should be managed like the configuration table.<\/p>\n<p><strong>Classes in module<\/strong><\/p>\n<p>The classes which have a shop table needs to add some code update to work multishop as below.<\/p>\n<ul>\n<li>The primary key of the table should be id_tablename in both tables(normal, shop table).<\/li>\n<li>Need to update constructor in the class with the below code so that the shop table will be associated with that class object as lang table.\n<pre class=\"brush:php\">public function __construct($id = null, $idLang = null, $idShop = null)\n    {\n        parent::__construct($id, null, $idShop);\n        Shop::addTableAssociation('table_name', array('type' =&gt; 'shop'));\n        \/\/ if there is also a lang table with shop id then add the below line of code for multilang shop dependency \n        Shop::addTableAssociation('table_name_lang', array('type' =&gt; 'fk_shop'));\n    }<\/pre>\n<\/li>\n<\/ul>\n<p><strong>Admin controller in module<\/strong><\/p>\n<p>The admin controller which have a shop table needs to add some code to list the data properly through render list.<\/p>\n<p>In constructor add the below code.<\/p>\n<div>\n<div>&#8220;<\/div>\n<div>$this-&gt;lang = true;<\/div>\n<div>\n<div>\n<div>Shop::addTableAssociation(&#8216;wk_vacation_message&#8217;,\u00a0array(&#8216;type&#8217;\u00a0=&gt;\u00a0&#8216;shop&#8217;));<\/div>\n<\/div>\n<\/div>\n<div>\n<div>\n<div>$this-&gt;_where\u00a0.=\u00a0Shop::addSqlRestrictionOnLang(&#8216;b&#8217;);<\/div>\n<div><\/div>\n<\/div>\n<\/div>\n<div>&#8220;<\/div>\n<div><\/div>\n<div><\/div>\n<div><strong style=\"font-size: inherit\">Module installation<\/strong><\/div>\n<\/div>\n<ul>\n<li>Check that the Multistore feature is enabled, and if so, set the current context to all shops on this installation of Module.\n<pre class=\"brush:php \">public function install()\n{\n    if (Shop::isFeatureActive()) {\n        Shop::setContext(Shop::CONTEXT_ALL);\n    }\n\n    if (!parent::install() ||\n        !$this-&gt;registerHook('leftColumn') ||\n        !$this-&gt;registerHook('header') ||\n        !Configuration::updateValue('MYMODULE_NAME', 'my friend')\n    ) {\n        return false;\n    }\n\n    return true;\n}\n\n<\/pre>\n<\/li>\n<\/ul>\n<p><strong>Module Database tables<\/strong><\/p>\n<ul>\n<li>If there is a lang table in our module then it should have the id_shop column to manage the multistore functionality.<\/li>\n<li>To manage the multistore functionality there should also be a shop table for the object or entity. For instance, suppose we are creating a testimonial module and we have created the table ps_testimonial to save the testimonial data, now to manage with multistore we have to create a shop table ps_testimonial_shop.<\/li>\n<\/ul>\n<p>Now with the above table structure, we can use the shop class methods to manage the shop dependencies.<\/p>\n<ul>\n<li>Shop::addSqlRestrictionOnLang($alias = null, $id_shop = null) &#8211; This function is used to add a restriction on id_shop for multishop lang table. Here $alias is a lang table alias\/correlation\u00a0name and id_shop is a shop id.<\/li>\n<li>Shop::addSqlAssociation($table, $alias, $inner_join = true, $on = null, $force_not_default = false) &#8211; This function is used to add an SQL JOIN in query between a table and its associated table in multishop. Here $table is a table name, $alias is a table alias\/correlation\u00a0name, $inner_join is to ensure to use inner join or not and $on is to define an extra join condition.<\/li>\n<li>For instance, suppose we are getting the product information then we can use these two functions in this way.\n<pre class=\"brush:php\"> $sql = 'SELECT p.*, product_shop.*, pl.* , m.`name` AS manufacturer_name, s.`name` AS supplier_name\n                FROM `' . _DB_PREFIX_ . 'product` p\n                ' . Shop::addSqlAssociation('product', 'p') . '\n                LEFT JOIN `' . _DB_PREFIX_ . 'product_lang` pl ON (p.`id_product` = pl.`id_product` ' . Shop::addSqlRestrictionOnLang('pl') . ')\n                LEFT JOIN `' . _DB_PREFIX_ . 'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`)\n                LEFT JOIN `' . _DB_PREFIX_ . 'supplier` s ON (s.`id_supplier` = p.`id_supplier`)' .\n                ($id_category ? 'LEFT JOIN `' . _DB_PREFIX_ . 'category_product` c ON (c.`id_product` = p.`id_product`)' : '') . '\n                WHERE pl.`id_lang` = ' . (int) $id_lang .\n                    ($id_category ? ' AND c.`id_category` = ' . (int) $id_category : '') .\n                    ($front ? ' AND product_shop.`visibility` IN (\"both\", \"catalog\")' : '') .\n                    ($only_active ? ' AND product_shop.`active` = 1' : '') . '\n                ORDER BY ' . (isset($order_by_prefix) ? pSQL($order_by_prefix) . '.' : '') . '`' . pSQL($order_by) . '` ' . pSQL($order_way) .\n                ($limit &gt; 0 ? ' LIMIT ' . (int) $start . ',' . (int) $limit : '');\n        $rq = Db::getInstance(_PS_USE_SQL_SLAVE_)-&gt;executeS($sql);<\/pre>\n<p>In the above query we have used addSqlAssociation function to join the ps_product_shop table and\u00a0Shop::addSqlRestrictionOnLang(&#8216;pl&#8217;) to manage shop restriction with ps_product_lang table.<\/li>\n<\/ul>\n<\/div>\n<div><\/div>\n<div><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this blog, we are going to learn how Prestashop manages Multistore and how we can develop PrestaShop module with multistore compatibility. Let&#8217;s first understand the Prestashop multistore concept The multi-store feature is an opportunity to set up and manage the unlimited number of sub-shops within single back-office. By default,\u00a0a default shop gets create in <a href=\"https:\/\/webkul.com\/blog\/multistore-prestashop\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":233,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[209],"tags":[7989,2059,2998,244,430,431,2065,7988,405],"class_list":["post-157061","post","type-post","status-publish","format-standard","hentry","category-prestashop","tag-developer","tag-module","tag-modules","tag-multi","tag-multishop","tag-multistore","tag-prestashop","tag-shop","tag-store"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to develop MultiStore compatible module in Prestashop?<\/title>\n<meta name=\"description\" content=\"In this blog, we are going to learn how Prestashop manages Multistore and how we can develop prestashop module with multistore compatibility.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/multistore-prestashop\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to develop MultiStore compatible module in Prestashop?\" \/>\n<meta property=\"og:description\" content=\"In this blog, we are going to learn how Prestashop manages Multistore and how we can develop prestashop module with multistore compatibility.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/multistore-prestashop\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-01-05T15:04:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-10T10:31:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-og.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Peeyush Agrawal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Peeyush Agrawal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/multistore-prestashop\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/multistore-prestashop\/\"},\"author\":{\"name\":\"Peeyush Agrawal\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/2e0fd1d407790cf03e8ebf7964b37ab6\"},\"headline\":\"How to develop MultiStore compatible module in Prestashop?\",\"datePublished\":\"2019-01-05T15:04:03+00:00\",\"dateModified\":\"2019-12-10T10:31:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/multistore-prestashop\/\"},\"wordCount\":1115,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"keywords\":[\"developer\",\"module\",\"modules\",\"multi\",\"multishop\",\"multistore\",\"prestashop\",\"shop\",\"store\"],\"articleSection\":[\"prestashop\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/multistore-prestashop\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/multistore-prestashop\/\",\"url\":\"https:\/\/webkul.com\/blog\/multistore-prestashop\/\",\"name\":\"How to develop MultiStore compatible module in Prestashop?\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"datePublished\":\"2019-01-05T15:04:03+00:00\",\"dateModified\":\"2019-12-10T10:31:42+00:00\",\"description\":\"In this blog, we are going to learn how Prestashop manages Multistore and how we can develop prestashop module with multistore compatibility.\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/multistore-prestashop\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/multistore-prestashop\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/multistore-prestashop\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to develop MultiStore compatible module in Prestashop?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/2e0fd1d407790cf03e8ebf7964b37ab6\",\"name\":\"Peeyush Agrawal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2284c09f3afbb0d2b4cabb32607ade2aaa90bed51cb5fcb7f99236b89bb08807?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2284c09f3afbb0d2b4cabb32607ade2aaa90bed51cb5fcb7f99236b89bb08807?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Peeyush Agrawal\"},\"url\":\"https:\/\/webkul.com\/blog\/author\/peeyush-agrawal981\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to develop MultiStore compatible module in Prestashop?","description":"In this blog, we are going to learn how Prestashop manages Multistore and how we can develop prestashop module with multistore compatibility.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/multistore-prestashop\/","og_locale":"en_US","og_type":"article","og_title":"How to develop MultiStore compatible module in Prestashop?","og_description":"In this blog, we are going to learn how Prestashop manages Multistore and how we can develop prestashop module with multistore compatibility.","og_url":"https:\/\/webkul.com\/blog\/multistore-prestashop\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2019-01-05T15:04:03+00:00","article_modified_time":"2019-12-10T10:31:42+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-og.png","type":"image\/png"}],"author":"Peeyush Agrawal","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Peeyush Agrawal","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/multistore-prestashop\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/multistore-prestashop\/"},"author":{"name":"Peeyush Agrawal","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/2e0fd1d407790cf03e8ebf7964b37ab6"},"headline":"How to develop MultiStore compatible module in Prestashop?","datePublished":"2019-01-05T15:04:03+00:00","dateModified":"2019-12-10T10:31:42+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/multistore-prestashop\/"},"wordCount":1115,"commentCount":0,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"keywords":["developer","module","modules","multi","multishop","multistore","prestashop","shop","store"],"articleSection":["prestashop"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/multistore-prestashop\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/multistore-prestashop\/","url":"https:\/\/webkul.com\/blog\/multistore-prestashop\/","name":"How to develop MultiStore compatible module in Prestashop?","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"datePublished":"2019-01-05T15:04:03+00:00","dateModified":"2019-12-10T10:31:42+00:00","description":"In this blog, we are going to learn how Prestashop manages Multistore and how we can develop prestashop module with multistore compatibility.","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/multistore-prestashop\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/multistore-prestashop\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/multistore-prestashop\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to develop MultiStore compatible module in Prestashop?"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/2e0fd1d407790cf03e8ebf7964b37ab6","name":"Peeyush Agrawal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2284c09f3afbb0d2b4cabb32607ade2aaa90bed51cb5fcb7f99236b89bb08807?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2284c09f3afbb0d2b4cabb32607ade2aaa90bed51cb5fcb7f99236b89bb08807?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Peeyush Agrawal"},"url":"https:\/\/webkul.com\/blog\/author\/peeyush-agrawal981\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/157061","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/233"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=157061"}],"version-history":[{"count":49,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/157061\/revisions"}],"predecessor-version":[{"id":213166,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/157061\/revisions\/213166"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=157061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=157061"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=157061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}