{"id":16548,"date":"2018-08-29T15:15:44","date_gmt":"2018-08-29T13:15:44","guid":{"rendered":"https:\/\/belvg.com\/blog\/?p=16548"},"modified":"2025-02-11T13:12:57","modified_gmt":"2025-02-11T11:12:57","slug":"tips-for-prestashop-1-7-pre-order-and-waiting-list-module","status":"publish","type":"post","link":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html","title":{"rendered":"Tips for PrestaShop 1.7 Pre-order and Waiting List Module"},"content":{"rendered":"\n<p>In this article, we will talk about a module that has been used for a long time by more than a thousand online stores &mdash; Pre-order and Waiting List Module. With the release of CMS PrestaShop 1.7, we started rewriting the modules for this version of the platform. Today I&rsquo;ll tell you about the difficulties I encountered when developing the module for this version of PrestaShop.<\/p>\n<p><!--more--><\/p>\n<p>Difficulty #1 was the fact that the product page on the administrative part of the platform was rewritten for Symfony. And now for the purpose of modules&rsquo; data preservation, we will have to create a separate entity in which we will store the data of the module and its controller, which will process this data and store it in the entity.<\/p>\n<p>I started with defining the values that should be stored in the database and got down to creating the entity:<\/p>\n<pre class=\"lang:php decode:true\">class PreorderProduct extends PPModel\r\n{\r\n&nbsp;&nbsp;&nbsp;public $id_preorder_product;\r\n&nbsp;&nbsp;&nbsp;public $active_preorder;\r\n&nbsp;&nbsp;&nbsp;public $active_countdown;\r\n&nbsp;&nbsp;&nbsp;public $id_product;\r\n&nbsp;&nbsp;&nbsp;public $id_product_attribute;\r\n&nbsp;&nbsp;&nbsp;public $date_available;\r\n&nbsp;&nbsp;&nbsp;public $qty;\r\n&nbsp;&nbsp;&nbsp;public $date_add;\r\n&nbsp;&nbsp;&nbsp;public $date_upd;\r\n&nbsp;&nbsp;&nbsp;public static $definition = array(\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'table' =&gt; 'preorder_product',\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'primary' =&gt; 'id_preorder_product',\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'multilang' =&gt; true,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'multilang_shop' =&gt; true,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'multishop' =&gt; true,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'fields' =&gt; array(\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'date_add' =&gt; array('type' =&gt; self::TYPE_DATE, 'validate' =&gt; 'isDate'),\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'date_upd' =&gt; array('type' =&gt; self::TYPE_DATE, 'validate' =&gt; 'isDate'),\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'id_preorder_product' =&gt; array('type' =&gt; self::TYPE_INT, 'validate' =&gt; 'isUnsignedId'),\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/shop fields\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'id_product' =&gt; array('type' =&gt; self::TYPE_INT, 'shop' =&gt; true, 'validate' =&gt; 'isUnsignedId'),\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'id_product_attribute' =&gt; array('type' =&gt; self::TYPE_INT, 'shop' =&gt; true, 'validate' =&gt; 'isUnsignedId'),\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'qty' =&gt; array('type' =&gt; self::TYPE_INT, 'shop' =&gt; true, 'validate' =&gt; 'isInt'),\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'active_preorder' =&gt; array('type' =&gt; self::TYPE_BOOL, 'shop' =&gt; true, 'validate' =&gt; 'isBool'),\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'active_countdown' =&gt; array('type' =&gt; self::TYPE_BOOL, 'shop' =&gt; true, 'validate' =&gt; 'isBool'),\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'date_available' =&gt; array('type' =&gt; self::TYPE_DATE, 'shop' =&gt; true, 'validate' =&gt; 'isDate'),\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),\r\n&nbsp;&nbsp;&nbsp;);\r\n&nbsp;&nbsp;&nbsp;public function __construct($id = null, $id_lang = null, $id_shop = null)\r\n&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shop::addTableAssociation(self::$definition['table'], array('type' =&gt; 'shop'));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shop::addTableAssociation(self::$definition['table'] . '_lang', array('type' =&gt; 'fk_shop'));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::__construct($id, $id_lang, $id_shop);\r\n&nbsp;&nbsp;&nbsp;}\r\n}<\/pre>\n<p>Here everything remains unchanged compared to the 1.6.x version. The first two lines in the constructor are needed for the operation of an entity with a multistore.<\/p>\n<p>Now we move on and create a controller:<\/p>\n<p><em><span style=\"font-weight: 400\">class AdminPreorderProductController extends ModuleAdminController<\/span><\/em><\/p>\n<pre class=\"lang:php decode:true\">{\r\n&nbsp;&nbsp;&nbsp;public function ajaxProcessDelete()\r\n&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$id = PreorderProduct::getIdByIdProductAndIdAttr(\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tools::getValue('id_product'),\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tools::getValue('id_product_attribute')\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$pp = new PreorderProduct($id);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$pp-&gt;delete();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;ajaxProcessGetList();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception $e) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new PrestaShopException($e-&gt;getMessage());\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;public function ajaxProcessGetList()\r\n&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$id_product = Tools::getValue('id_product');\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$product = new Product($id_product, false, $this-&gt;context-&gt;language-&gt;id);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$combinations = $product-&gt;getAttributeCombinations();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$groups = array();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (empty($combinations)) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$qty = StockAvailable::getQuantityAvailableByProduct($id_product);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($qty &lt;= 0) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$groups[] = array(\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' =&gt; $product-&gt;name,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'id_product_attribute' =&gt; 0,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'active_preorder' =&gt; false,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($combinations as $c) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($c['quantity'] &lt;= 0) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$id_p_attr = $c['id_product_attribute'];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isset($groups[$id_p_attr])) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$groups[$id_p_attr]['name'] .= $c['group_name'] . ': ' . $c['attribute_name'];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$groups[$id_p_attr] = array(\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' =&gt; $c['group_name'] . ': ' . $c['attribute_name'] . ', ',\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'id_product_attribute' =&gt; $c['id_product_attribute'],\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'active_preorder' =&gt; false,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($preorders = PreorderProduct::getAllByIdProduct($id_product)) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($preorders as $p) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$id_p_attr = $p['id_product_attribute'];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isset($groups[$id_p_attr])) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$groups[$id_p_attr] = array_merge($groups[$id_p_attr], $p);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$list = $this-&gt;context-&gt;smarty-&gt;createTemplate(\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;module-&gt;getLocalPath() . 'views\/templates\/admin\/list.tpl'\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$list-&gt;assign(array(\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'preorder_products' =&gt; $groups,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die($list-&gt;fetch());\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception $e) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new PrestaShopException($e-&gt;getMessage());\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;}\r\n}<\/pre>\n<p>This is the beginning of the Ajax territory. Now developers have to use various handlers for each operation on the admin side, which is a little more complicated than it used to be in PrestaShop 1.6. The main techniques while working with product settings are&nbsp;<strong>try catch<\/strong> and <strong>json&nbsp;<\/strong>constructions. But you are free to go your own path. May the force be with you!<\/p>\n<p>The registration of the administrative controller is carried out using the Tab class, just like it used to be earlier:<\/p>\n<pre class=\"lang:php decode:true\">$tab = new Tab();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tab-&gt;active = $active;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tab-&gt;class_name = $class_name;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tab-&gt;name = array();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach (Language::getLanguages(true) as $lang) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tab-&gt;name[$lang['id_lang']] = $tab_name;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<\/pre>\n<p><a href=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/image16.png\"><img decoding=\"async\" loading=\"lazy\" class=\"lazy aligncenter size-full wp-image-16549\" src=\"https:\/\/belvg.com\/wp-content\/uploads\/2019\/06\/pixel.png\" data-src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/image16.png\" alt=\"pre-order function for separate products\" width=\"1601\" height=\"714\" title=\"Tips for PrestaShop 1.7 Pre-order and Waiting List Module\"><\/a><\/p>\n<pre class=\"lang:php decode:true\">&nbsp;$tab-&gt;id_parent = $id_parent;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tab-&gt;position = $position;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tab-&gt;module = $this-&gt;name;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $tab&rarr;save();<\/pre>\n<p>Here is what we have as a result of all these manipulations:<\/p>\n<p><a href=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/image5.png\"><img decoding=\"async\" loading=\"lazy\" class=\"lazy aligncenter size-full wp-image-16550\" src=\"https:\/\/belvg.com\/wp-content\/uploads\/2019\/06\/pixel.png\" data-src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/image5.png\" alt=\"Pre-order module for prestashop\" width=\"1667\" height=\"888\" title=\"Tips for PrestaShop 1.7 Pre-order and Waiting List Module\"><\/a><\/p>\n<p>The advantage of this approach is the speed of work with the product. The disadvantage &mdash; an increase in time spent to develop this functionality.<\/p>\n<p>Unfortunately, the creation of custom pages remained unchanged, CMS developers promise to gradually move the rest of the functionality to Symfony. That is why the creation of the module settings page remained the same as in the 1.6.x version.<\/p>\n<p><a href=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/image3.png\"><img decoding=\"async\" loading=\"lazy\" class=\"lazy aligncenter wp-image-16551 size-full\" src=\"https:\/\/belvg.com\/wp-content\/uploads\/2019\/06\/pixel.png\" data-src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/image3.png\" alt=\"The back end for pre-order and waiting list module for prestashop 1.7\" width=\"1761\" height=\"689\" title=\"Tips for PrestaShop 1.7 Pre-order and Waiting List Module\"><\/a><\/p>\n<p>The module is fairly simple to use. As soon as a product is out of stock, it becomes possible to activate preorder and configure countdown. Here is what will be displayed on the frontend.:<\/p>\n<p><a href=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/image22.png\"><img decoding=\"async\" loading=\"lazy\" class=\"lazy aligncenter size-full wp-image-16552\" src=\"https:\/\/belvg.com\/wp-content\/uploads\/2019\/06\/pixel.png\" data-src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/image22.png\" alt=\"Pre-order and waiting list module front end\" width=\"1307\" height=\"884\" title=\"Tips for PrestaShop 1.7 Pre-order and Waiting List Module\"><\/a><\/p>\n<p>You will see a &ldquo;Pre-order&rdquo; button, a &ldquo;Notify&rdquo; button (subscription to email notifications on the product availability) and the time when the product is due to be back in stock.<\/p>\n<p>The administrator will be able to control the lists of subscribers and the products subscribed to, but the mailing and stock updating are automatic, the administrator will only have to control the supplies to the warehouse:<\/p>\n<p><a href=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/image4.png\"><img decoding=\"async\" loading=\"lazy\" class=\"lazy aligncenter size-full wp-image-16553\" src=\"https:\/\/belvg.com\/wp-content\/uploads\/2019\/06\/pixel.png\" data-src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/image4.png\" alt=\"Pre-order and waiting list module for prestashop 1.7\" width=\"1699\" height=\"241\" title=\"Tips for PrestaShop 1.7 Pre-order and Waiting List Module\"><\/a><\/p>\n<p>The main feature of the module for this PrestaShop version is the ability to create your own email templates for the notifications on the received products:<\/p>\n<p><a href=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/image6.png\"><img decoding=\"async\" loading=\"lazy\" class=\"lazy aligncenter size-full wp-image-16554\" src=\"https:\/\/belvg.com\/wp-content\/uploads\/2019\/06\/pixel.png\" data-src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/image6.png\" alt=\"Pre-order and waiting list module. Email templates creation\" width=\"1909\" height=\"873\" title=\"Tips for PrestaShop 1.7 Pre-order and Waiting List Module\"><\/a><\/p>\n<p>The functionality allows you to create templates for different product categories and for different groups of customers. It&rsquo;s quite useful if you have a group of premium customers.<\/p>\n<p>The Pre-order and Waiting List module&nbsp;are available in our&nbsp;<a href=\"https:\/\/store.belvg.com\/\" target=\"_blank\" rel=\"noopener\">module store<\/a>.<\/p>\n\n","protected":false},"excerpt":{"rendered":"Tips for solving some of the difficulties with the Pre-order and Waiting list module for PrestaShop 1.7","protected":false},"author":2,"featured_media":16556,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"image","meta":{"_acf_changed":false,"footnotes":""},"categories":[15,470,520,461,523],"tags":[],"class_list":["post-16548","post","type-post","status-publish","format-image","has-post-thumbnail","hentry","category-prestashop","category-prestashop-tutorial","category-prestashop-custom-development","category-prestashop-development","category-prestashop-seo","post_format-image"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"In today&#039;s article, we share our experience on effectively overcome the difficulties you may encounter when developing the pre-order module for PrestaShop 1.7.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Pavel Novitsky\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#article\",\"name\":\"Pre-order & Waiting list module for PrestaShop | BelVG Blog\",\"headline\":\"Tips for PrestaShop 1.7 Pre-order and Waiting List Module\",\"author\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/luge#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/Tips-for-PrestaShop-1.7-Pre-order-and-Waiting-List-Module.jpg\",\"width\":770,\"height\":433,\"caption\":\"Tips for PrestaShop 1.7 Pre-order and Waiting List Module\"},\"datePublished\":\"2018-08-29T15:15:44+02:00\",\"dateModified\":\"2025-02-11T13:12:57+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#webpage\"},\"articleSection\":\"Prestashop, Prestashop 1.7 Tutorials, PrestaShop Custom Development, Prestashop Development, PrestaShop SEO, Image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/belvg.com\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/category\\\/prestashop#listItem\",\"name\":\"Prestashop\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/category\\\/prestashop#listItem\",\"position\":2,\"name\":\"Prestashop\",\"item\":\"https:\\\/\\\/belvg.com\\\/blog\\\/category\\\/prestashop\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#listItem\",\"name\":\"Tips for PrestaShop 1.7 Pre-order and Waiting List Module\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#listItem\",\"position\":3,\"name\":\"Tips for PrestaShop 1.7 Pre-order and Waiting List Module\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/category\\\/prestashop#listItem\",\"name\":\"Prestashop\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#organization\",\"name\":\"BelVG Blog\",\"description\":\"Magento and Prestashop articles\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/luge#author\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/luge\",\"name\":\"Pavel Novitsky\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2c4388e3468896377123f434a9a2a2d64f479816da1570f85619b074102127b7?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Pavel Novitsky\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#webpage\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html\",\"name\":\"Pre-order & Waiting list module for PrestaShop | BelVG Blog\",\"description\":\"In today's article, we share our experience on effectively overcome the difficulties you may encounter when developing the pre-order module for PrestaShop 1.7.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/luge#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/luge#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/Tips-for-PrestaShop-1.7-Pre-order-and-Waiting-List-Module.jpg\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html\\\/#mainImage\",\"width\":770,\"height\":433,\"caption\":\"Tips for PrestaShop 1.7 Pre-order and Waiting List Module\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#mainImage\"},\"datePublished\":\"2018-08-29T15:15:44+02:00\",\"dateModified\":\"2025-02-11T13:12:57+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/\",\"name\":\"BelVG Blog\",\"description\":\"Magento and Prestashop articles\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Pre-order & Waiting list module for PrestaShop | BelVG Blog","description":"In today's article, we share our experience on effectively overcome the difficulties you may encounter when developing the pre-order module for PrestaShop 1.7.","canonical_url":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#article","name":"Pre-order & Waiting list module for PrestaShop | BelVG Blog","headline":"Tips for PrestaShop 1.7 Pre-order and Waiting List Module","author":{"@id":"https:\/\/belvg.com\/blog\/author\/luge#author"},"publisher":{"@id":"https:\/\/belvg.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/Tips-for-PrestaShop-1.7-Pre-order-and-Waiting-List-Module.jpg","width":770,"height":433,"caption":"Tips for PrestaShop 1.7 Pre-order and Waiting List Module"},"datePublished":"2018-08-29T15:15:44+02:00","dateModified":"2025-02-11T13:12:57+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#webpage"},"isPartOf":{"@id":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#webpage"},"articleSection":"Prestashop, Prestashop 1.7 Tutorials, PrestaShop Custom Development, Prestashop Development, PrestaShop SEO, Image"},{"@type":"BreadcrumbList","@id":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/belvg.com\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/category\/prestashop#listItem","name":"Prestashop"}},{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/category\/prestashop#listItem","position":2,"name":"Prestashop","item":"https:\/\/belvg.com\/blog\/category\/prestashop","nextItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#listItem","name":"Tips for PrestaShop 1.7 Pre-order and Waiting List Module"},"previousItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#listItem","position":3,"name":"Tips for PrestaShop 1.7 Pre-order and Waiting List Module","previousItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/category\/prestashop#listItem","name":"Prestashop"}}]},{"@type":"Organization","@id":"https:\/\/belvg.com\/blog\/#organization","name":"BelVG Blog","description":"Magento and Prestashop articles","url":"https:\/\/belvg.com\/blog\/"},{"@type":"Person","@id":"https:\/\/belvg.com\/blog\/author\/luge#author","url":"https:\/\/belvg.com\/blog\/author\/luge","name":"Pavel Novitsky","image":{"@type":"ImageObject","@id":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/2c4388e3468896377123f434a9a2a2d64f479816da1570f85619b074102127b7?s=96&d=mm&r=g","width":96,"height":96,"caption":"Pavel Novitsky"}},{"@type":"WebPage","@id":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#webpage","url":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html","name":"Pre-order & Waiting list module for PrestaShop | BelVG Blog","description":"In today's article, we share our experience on effectively overcome the difficulties you may encounter when developing the pre-order module for PrestaShop 1.7.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/belvg.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#breadcrumblist"},"author":{"@id":"https:\/\/belvg.com\/blog\/author\/luge#author"},"creator":{"@id":"https:\/\/belvg.com\/blog\/author\/luge#author"},"image":{"@type":"ImageObject","url":"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/Tips-for-PrestaShop-1.7-Pre-order-and-Waiting-List-Module.jpg","@id":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html\/#mainImage","width":770,"height":433,"caption":"Tips for PrestaShop 1.7 Pre-order and Waiting List Module"},"primaryImageOfPage":{"@id":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html#mainImage"},"datePublished":"2018-08-29T15:15:44+02:00","dateModified":"2025-02-11T13:12:57+02:00"},{"@type":"WebSite","@id":"https:\/\/belvg.com\/blog\/#website","url":"https:\/\/belvg.com\/blog\/","name":"BelVG Blog","description":"Magento and Prestashop articles","inLanguage":"en-US","publisher":{"@id":"https:\/\/belvg.com\/blog\/#organization"}}]}},"aioseo_meta_data":{"post_id":"16548","title":"Pre-order &amp; Waiting list module for PrestaShop | #site_title","description":"In today's article, we share our experience on effectively overcome the difficulties you may encounter when developing the pre-order module for PrestaShop 1.7.","keywords":null,"keyphrases":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-11-03 18:37:05","updated":"2026-11-03 18:37:05"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/belvg.com\/blog\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/belvg.com\/blog\/category\/prestashop\" title=\"Prestashop\">Prestashop<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tTips for PrestaShop 1.7 Pre-order and Waiting List Module\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/belvg.com\/blog\/"},{"label":"Prestashop","link":"https:\/\/belvg.com\/blog\/category\/prestashop"},{"label":"Tips for PrestaShop 1.7 Pre-order and Waiting List Module","link":"https:\/\/belvg.com\/blog\/tips-for-prestashop-1-7-pre-order-and-waiting-list-module.html"}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts\/16548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/comments?post=16548"}],"version-history":[{"count":-3,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts\/16548\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/media\/16556"}],"wp:attachment":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/media?parent=16548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/categories?post=16548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/tags?post=16548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}