{"id":17271,"date":"2018-11-14T15:06:31","date_gmt":"2018-11-14T13:06:31","guid":{"rendered":"https:\/\/belvg.com\/blog\/?p=17271"},"modified":"2021-02-18T14:06:09","modified_gmt":"2021-02-18T12:06:09","slug":"how-to-create-a-theme-for-prestashop-1-7","status":"publish","type":"post","link":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html","title":{"rendered":"How to Create a Theme for PrestaShop 1.7"},"content":{"rendered":"\n<p>Having a singular, unique theme for your online store in PrestaShop is a great and easy way to stand out among the competitors and be remembered by the customers and visitors. Here&rsquo;s a comprehensible guide on how to create your own PrestaShop 1.7 theme template for those who have only recently began working with this solution.<!--more--><\/p>\n<p><a href=\"#step_1\">1. Initial configuration<\/a><br>\n<a href=\"#step_2\">2. Starting template as a prototype<\/a><br>\n<a href=\"#step_3\">3. Environment configuration<\/a><br>\n<a href=\"#step_4\">4. Bundler<\/a><br>\n<a href=\"#step_5\">5. Theme creation and editing<\/a><br>\n<a href=\"#step_6\">Core.js in Prestashop 1.7<\/a><br>\n<a href=\"#step_7\">Module scripts<\/a><\/p>\n<p>As you commence to build PrestaShop theme, make sure you have enough background knowledge on:<\/p>\n<ul>\n<li>CSS, Js, HTML, Smarty 3 template engine, localization, data model and modularization in PrestaShop;<\/li>\n<li>Symfony and its Twig template engine<\/li>\n<li>Sass<\/li>\n<li>Bourbon<\/li>\n<li>Composer<\/li>\n<li>webpack bundling process;<\/li>\n<li>node.js, node.js modules and NPM package manager;<\/li>\n<li>GIT<\/li>\n<\/ul>\n<h2><a id=\"step_1\"><\/a>1. Initial configuration<\/h2>\n<p>To begin the installation process, enable <a href=\"https:\/\/belvg.com\/blog\/enabling-error-output-in-prestashop.html\">Dev Mode in PrestaShop<\/a>. After that clone PrestaShop repository to your global directory on web server:<\/p>\n<pre class=\"lang:default decode:true \"> \r\n1 $ git clone https:\/\/github.com\/PrestaShop\/PrestaShop &lt;folder_name&gt;\r\n<\/pre>\n<p>Then switch from the current dev branch to the stable version. To do that, follow to the directory with repository and run the following commands:<\/p>\n<pre class=\"lang:default decode:true \">1 $ cd &lt;folder_name&gt;\r\n2 $ git describe --tags $(git rev-list --tags --max-count=3)\r\n\r\n\r\n<\/pre>\n<p>After that you will get the list of available versions:<\/p>\n<p><a href=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/11\/photo_2018-11-12_15-35-45.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"lazy aligncenter size-full wp-image-17272\" src=\"https:\/\/belvg.com\/wp-content\/uploads\/2019\/06\/pixel.png\" data-src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/11\/photo_2018-11-12_15-35-45.jpg\" alt=\"Prestashop available versions\" width=\"677\" height=\"123\" title=\"How to Create a Theme for PrestaShop 1.7\"><\/a><\/p>\n<p>Switch to 1.7.x.x version (1.7.4.4 in our case)<\/p>\n<pre class=\"lang:default decode:true\"> \r\n1 $ git checkout 1.7.43.44\r\n<\/pre>\n<p>Now everything is ready for <a href=\"https:\/\/github.com\/PrestaShop\/PrestaShop#installation\" target=\"_blank\" rel=\"noopener\">installation<\/a>.<\/p>\n<ul>\n<li>First Install <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener\">Composer<\/a>;<\/li>\n<li>Navigate to the root directory of the cloned repository and run the command:<\/li>\n<\/ul>\n<pre class=\"lang:default decode:true\">1 composer install<\/pre>\n<h2><a id=\"step_2\"><\/a>2. Starting template as a prototype<\/h2>\n<p>When the initial configuration is completed, you will need to decide which template is the best base for your new theme. At the moment there are two themes for developers: <a href=\"https:\/\/github.com\/PrestaShop\/PrestaShop\/tree\/develop\/themes\/classic\" target=\"_blank\" rel=\"noopener\">classic<\/a> and <a href=\"https:\/\/github.com\/PrestaShop\/StarterTheme\" target=\"_blank\" rel=\"noopener\">StarterTheme<\/a>. The difference between them is that StarterTheme has basic functionality, while Classic is a default theme (you can find <a href=\"https:\/\/github.com\/PrestaShop\/PrestaShop\/tree\/develop\/themes\/classic\" target=\"_blank\" rel=\"noopener\">source files<\/a> at the official repository). Personally I prefer to use Classic. After you cloned PrestaShop, I&rsquo;m sure you already have source files and Classic theme in themes\/ directory, but what concerns installation and configuration of StarterTheme, you can find all the necessary information on <a href=\"https:\/\/github.com\/PrestaShop\/StarterTheme\" target=\"_blank\" rel=\"noopener\">github<\/a>.<\/p>\n<h2><a id=\"step_3\"><\/a>3. Environment configuration<\/h2>\n<p>After you decide what theme to use as a prototype, proceed with operational environment installation. If you&rsquo;re not sure you have the right version of node.js, you can install <a href=\"https:\/\/github.com\/creationix\/nvm\">NVM(Node Version Manager)<\/a>:<\/p>\n<ul>\n<li><a href=\"https:\/\/nodejs.org\/en\/download\/\">Node.js<\/a> installation;<\/li>\n<li>Webpack global package installation (by <a href=\"https:\/\/www.npmjs.com\/\">npm<\/a> package manager);<\/li>\n<\/ul>\n<p>For Windows users:<\/p>\n<pre class=\"lang:default decode:true \">1 $ npm  i -g webpack\r\n<\/pre>\n<p>For others:<\/p>\n<pre class=\"lang:default decode:true \">1 $ sudo npm  i -g webpack\r\n<\/pre>\n<p>If you have already read our <a href=\"https:\/\/belvg.com\/blog\/prestashop-1-7-templates-file-structure.html\">article about template files structure<\/a>, then you know that all source files are carried in <strong>&lt;theme_folder&gt;\/_dev\/<\/strong> directory, as well as assembler config file and package.json, in which all the dependencies are described. So you need to go to this directory and define the dependencies:<\/p>\n<pre class=\"lang:default decode:true \">1 &lt;theme_folder&gt;\/_dev$ npm install\r\n<\/pre>\n<p>This is all for the configuration, which is a necessary preparation stage before we can get down to the theme creation itself. If you are unsure you&rsquo;ll be able to perform everything described above correctly, I strongly advise you to refresh your knowledge on node.js, npm\/yarn and webpack &ndash; or simply <a href=\"https:\/\/belvg.com\/contact\">request a consultation<\/a> with us.<\/p>\n<h2><a id=\"step_4\"><\/a>4.&nbsp;Bundler<\/h2>\n<p>Navigate to &nbsp;<strong>&lt;theme_folder&gt;\/_dev<\/strong> and run:<\/p>\n<pre class=\"lang:default decode:true \">1 $ npm run build\r\n<\/pre>\n<p>&ndash; bundling all the Prestashop theme source files;<\/p>\n<pre class=\"lang:default decode:true \">1 $ npm run watch\r\n<\/pre>\n<p>&ndash; tracking mode: bundler doesn&rsquo;t stop its work, but is waiting for any changes and performs recompilation (very fast by means of caching).<\/p>\n<p>If you&rsquo;re not sure you have the right version of node.js, you can install <a href=\"https:\/\/github.com\/creationix\/nvm\" target=\"_blank\" rel=\"noopener\">NVM(Node Version Manager)<\/a><\/p>\n<p>I would recommend to use <a href=\"https:\/\/webpack.github.io\/\" target=\"_blank\" rel=\"noopener\">Webpack<\/a>, which is a pretty powerful bundler. No matter what pre(post)processor you use, Webpack works with any type, as long as you configure it beforehand. The same applies to JS: you can use any language you are accustomed to: es &ndash; 2015, Coffeescript, Typescript. Additionally, it would be great if you set up <a href=\"http:\/\/livereload.com\/\" target=\"_blank\" rel=\"noopener\">LiveReload<\/a> to speed up development process.<\/p>\n<div class=\"module_in_content_container\"><a href=\"https:\/\/belvg.com\/prestashop-support\" class=\"link_to_module\" target=\"_blank\" rel=\"noopener\"><\/a><div class=\"module_content\"><img src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2019\/06\/support_prestashop.png\" width=\"100\" height=\"100\" alt=\"support_prestashop\" class=\"module_image\" title=\"How to Create a Theme for PrestaShop 1.7\"><div class=\"module_content_part\"><h3 class=\"title\">PrestaShop Support &amp; Maintenance<\/h3><p class=\"module_content_text\">Take your online store to the next level with BelVG PrestaShop Support &amp; Maintenance<\/p><a href=\"https:\/\/belvg.com\/prestashop-support\" class=\"link_2_to_module\" target=\"_blank\" style=\"display:inline-block\" rel=\"noopener\"><span class=\"read-more\">Visit the page<\/span><\/a><\/div><\/div><\/div>\n<h2><a id=\"step_5\"><\/a>5. Theme creation and editing<\/h2>\n<p>First off, edit the <em>theme_folder\/config\/theme.yml<\/em> file.; filling in the <a href=\"https:\/\/github.com\/PrestaShop\/PrestaShop\/blob\/develop\/src\/Core\/Addon\/Theme\/ThemeValidator.php#L80-L92\" target=\"_blank\" rel=\"noopener\">required parameters<\/a> will be enough. If you&rsquo;re not quite accustomed with &nbsp;the Prestashop 1.7 theme.yml file, <a href=\"https:\/\/belvg.com\/blog\/theme-yml-file-the-heart-of-prestashop-1-7.html\">here&rsquo;s<\/a> where you can find everything about it. As a new theme is created, it is assumed that all scripts should be collected into a single bundle theme.js.<\/p>\n<p>As an example, I tested several themes from<a href=\"https:\/\/addons.prestashop.com\/\" target=\"_blank\" rel=\"noopener\"> Addons Marketplace<\/a>. All tests were run with a limited Internet connection &ndash; Good 3G (40ms, 1.5Mb\/s, 750kb\/s).<\/p>\n<p>Here&rsquo;s the results I got:<\/p>\n<p><a href=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/11\/How-to-Create-a-Theme-for-Prestashop-1.7_image.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"lazy aligncenter size-full wp-image-17274\" src=\"https:\/\/belvg.com\/wp-content\/uploads\/2019\/06\/pixel.png\" data-src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/11\/How-to-Create-a-Theme-for-Prestashop-1.7_image.jpg\" alt=\"How-to-Create-a-Theme-for-Prestashop-1.7\" width=\"824\" height=\"146\" title=\"How to Create a Theme for PrestaShop 1.7\"><\/a><\/p>\n<p>As you can see, some themes took almost 30 seconds to load, with the size of JavaScripts from 0.6 to 1.3 MB. (I don&rsquo;t include the results of 1.9MB since the compression was disabled there). Therefore, it is better to load big JS files asynchronously. It is possible to achieve this using such methods as: <a href=\"http:\/\/requirejs.org\/\" target=\"_blank\" rel=\"noopener\">requirejs<\/a>, webpack dynamic import, &lt;script src=&rdquo;&hellip;&rdquo; async&gt; and preload. Each method has its advantages and disadvantages. If you chose the preload method, add the following code to the template head:<\/p>\n<pre class=\"lang:default decode:true\">1 &lt;!-- \/templates\/_partials\/head.tpl --&gt;\r\n2 &lt;link rel=\"preload\" href=\"{$urls.base_url}themes\/core.js\" as=\"script\"&gt;\r\n3 &lt;link rel=\"preload\" href=\"{$urls.js_url}theme.js\" as=\"script\"&gt;<\/pre>\n<p>This is what will happen: <a href=\"http:\/\/caniuse.com\/#feat=link-rel-preload\" target=\"_blank\" rel=\"noopener\">browsers that support preload<\/a> will parse the head of an html document and will launch the execution of obligatory scripts in the background: core.js and theme.js files, which are located at the bottom of an html document just before the closing &lt;\/body&gt; tag. You can also add and connect other scripts to your html pages.<\/p>\n<div class=\"content_sales_info\" style=\"background-image: url(https:\/\/belvg.com\/blog\/wp-content\/uploads\/2019\/03\/Sales_background.png\"><img width=\"65\" height=\"65\" src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2015\/11\/Andrey_Dubina.png\" alt=\"Andrey_Dubina\" title=\"How to Create a Theme for PrestaShop 1.7\"><div class=\"content_part\"><h3 class=\"title\">Partner With Us <\/h3><span class=\"sales_content_text\">Let's discuss how to grow your business. Get a Free Quote.<\/span><\/div> <a class=\"call-to-action\" href=\"https:\/\/belvg.com\/contact?utm_source=blog&amp;utm_campaign=sales_block&amp;utm_content=middle\" target=\"_blank\" rel=\"noopener\">Talk to Andrey<\/a><\/div>\n<p><strong>Note:<\/strong> this code will not work if you enable the compression and merging of JS. Yet the problem can be solved with one simple module.<\/p>\n<h2><a id=\"step_6\"><\/a>Core.js in Prestashop 1.7<\/h2>\n<p>Core.js is provided by PrestaShop. This file was written in compliance with the ES6 standards and complied with the help of <a href=\"https:\/\/babeljs.io\/\" target=\"_blank\" rel=\"noopener\">Babel <\/a>in ES5 to provide compatibility with old browsers, with <a href=\"http:\/\/developers.prestashop.com\/themes\/assets\/index.html#about-webpack\" target=\"_blank\" rel=\"noopener\">webpack<\/a> used as a bundler. The file has the <a href=\"https:\/\/github.com\/PrestaShop\/PrestaShop\/blob\/develop\/classes\/controller\/FrontController.php#L879\" target=\"_blank\" rel=\"noopener\">the highest priority &ndash; 0<\/a>. <a href=\"https:\/\/github.com\/PrestaShop\/PrestaShop\/blob\/develop\/themes\/_core\/js\/theme.js#L1\">It imports<\/a> the <a href=\"https:\/\/github.com\/PrestaShop\/PrestaShop\/blob\/develop\/themes\/package.json#L13\" target=\"_blank\" rel=\"noopener\">jQuery v2<\/a> library, as well as follows the logic of PrestaShop and generates various events upon user actions, such as:<\/p>\n<ul>\n<li>changedCheckoutStep;<\/li>\n<li>clickQuickView;<\/li>\n<li>editAddress;<\/li>\n<li>editDelivery;<\/li>\n<li>handleError;<\/li>\n<li>updateCart;<\/li>\n<li>updatedAddressForm;<\/li>\n<li>updatedCart;<\/li>\n<li>updatedDeliveryForm;<\/li>\n<li>updatedProduct;<\/li>\n<li>updateProduct.<\/li>\n<\/ul>\n<p>The interaction is based on the Event model which uses <a href=\"https:\/\/github.com\/PrestaShop\/PrestaShop\/blob\/develop\/themes\/_core\/js\/theme.js#L17\" target=\"_blank\" rel=\"noopener\">EventEmitter<\/a> (you can learn more about it in the <a href=\"https:\/\/nodejs.org\/api\/events.html\" target=\"_blank\" rel=\"noopener\">Node.js manual<\/a>).<\/p>\n<p>Here is an approximate performance algorithm of an event model:<\/p>\n<ul>\n<li>Registering an event handler in the event manager (in our case this is the PrestaShop global variable).<\/li>\n<li>Generating an event as a response to some external action (clicking the Add to Cart button, filling in the country name into the delivery field etc).<\/li>\n<li>Sending the event to the event manager (using the <a href=\"https:\/\/nodejs.org\/api\/events.html#events_emitter_emit_eventname_args\" target=\"_blank\" rel=\"noopener\">.emit<\/a> method, indicating the type of the event as the first argument).<\/li>\n<li>The event manager receives the event and searches for a registered handler (to register a custom handler for an event one can use the <a href=\"https:\/\/nodejs.org\/api\/events.html#events_emitter_on_eventname_listener\" target=\"_blank\" rel=\"noopener\">.on<\/a> or <a href=\"https:\/\/nodejs.org\/api\/events.html#events_emitter_once_eventname_listener\" target=\"_blank\" rel=\"noopener\">.once<\/a> methods which receive two obligatory parameters &ndash; the name of the event and the function of the event handler).<\/li>\n<li>The event manager calls the handler.<\/li>\n<li>Proceeding to point 2.<\/li>\n<\/ul>\n<p>This model will provide you great flexibility in your work. You should also pay extra attention to handleError. Error handling is often ignored by developers, but using this event will help you cover nearly all possible errors mostly related to Ajax queries.<\/p>\n<p>What concerns other events (such as <em>editAddress, editDelivery, updatedAddressForm, updatedDeliveryForm<\/em>), you can add a custom form validation, upload processing and product updating (events: <em>clickQuickView, updatedAddressForm, updatedDeliveryForm, updatedProduct, updateProduct, updateProductList<\/em>).<\/p>\n<h2><a id=\"step_7\"><\/a>Module scripts<\/h2>\n<p>Want to modify or remove\/exclude module scripts from a page? It is quite simple: to redefine a JS or CSS module file, create a copy of the same file in the theme folder, retaining the original path to the file. To delete or cancel the connection, keep the redefined file empty.<\/p>\n<p>Source files:<\/p>\n<pre class=\"lang:default decode:true \">1 &lt;code&gt;\r\n2 modules\/&lt;module_name&gt;\/path\/to\/file.{css,js}\r\n3 modules\/ps_imageslider\/js\/homeslider.js\r\n4 &lt;\/code&gt;<\/pre>\n<p>Redefining:<\/p>\n<pre class=\"lang:default decode:true \">1 &lt;code&gt;\r\n2 &lt;theme_folder&gt;\/modules\/&lt;module_name&gt;\/path\/to\/file.{css,js}\r\n3 my_theme\/modules\/ps_imageslider\/js\/homeslider.js\r\n4 &lt;\/code&gt;<\/pre>\n<p>If you have any questions, please, feel free to leave your comments below!<\/p>\n<div class=\"module_in_content_container\"><a href=\"https:\/\/belvg.com\/prestashop-development\" class=\"link_to_module\" target=\"_blank\" rel=\"noopener\"><\/a><div class=\"module_content\"><img src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2019\/06\/development_prestashop.png\" width=\"100\" height=\"100\" alt=\"development_prestashop\" class=\"module_image\" title=\"How to Create a Theme for PrestaShop 1.7\"><div class=\"module_content_part\"><h3 class=\"title\">PrestaShop Development<\/h3><p class=\"module_content_text\">Take your online store to the next level with BelVG PrestaShop Development <\/p><a href=\"https:\/\/belvg.com\/prestashop-development\" class=\"link_2_to_module\" target=\"_blank\" style=\"display:inline-block\" rel=\"noopener\"><span class=\"read-more\">Visit the page<\/span><\/a><\/div><\/div><\/div>\n\n","protected":false},"excerpt":{"rendered":"Having a singular, unique theme for your online store in PrestaShop is a great and &#8230;","protected":false},"author":60,"featured_media":17280,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"image","meta":{"_acf_changed":false,"footnotes":""},"categories":[15,470,520,461,521],"tags":[],"class_list":["post-17271","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-webdesign","post_format-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=\"A detailed tutorial on how to create a PrestaShop 1.7 theme for an online shop. This blog post will be especially helpful for developers who are new to PrestaShop or theme creation.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Alexey Homiakov\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.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\\\/how-to-create-a-theme-for-prestashop-1-7.html#article\",\"name\":\"Create a Theme in PrestaShop 1.7 | BelVG Blog\",\"headline\":\"How to Create a Theme for PrestaShop 1.7\",\"author\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/alexey-homiakov#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/11\\\/How-to-Create-a-Theme-for-Prestashop-1.png\",\"width\":1110,\"height\":590,\"caption\":\"How to Create a Theme for Prestashop\"},\"datePublished\":\"2018-11-14T15:06:31+02:00\",\"dateModified\":\"2021-02-18T14:06:09+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-to-create-a-theme-for-prestashop-1-7.html#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-to-create-a-theme-for-prestashop-1-7.html#webpage\"},\"articleSection\":\"Prestashop, Prestashop 1.7 Tutorials, PrestaShop Custom Development, Prestashop Development, PrestaShop Webdesign, Image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-to-create-a-theme-for-prestashop-1-7.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\\\/how-to-create-a-theme-for-prestashop-1-7.html#listItem\",\"name\":\"How to Create a Theme for PrestaShop 1.7\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-to-create-a-theme-for-prestashop-1-7.html#listItem\",\"position\":3,\"name\":\"How to Create a Theme for PrestaShop 1.7\",\"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\\\/alexey-homiakov#author\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/alexey-homiakov\",\"name\":\"Alexey Homiakov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-to-create-a-theme-for-prestashop-1-7.html#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5ba504d9e7289ffde40eab791bf6a50ab2c43985e0313dd5d9ed1adcbe824e95?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Alexey Homiakov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-to-create-a-theme-for-prestashop-1-7.html#webpage\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-to-create-a-theme-for-prestashop-1-7.html\",\"name\":\"Create a Theme in PrestaShop 1.7 | BelVG Blog\",\"description\":\"A detailed tutorial on how to create a PrestaShop 1.7 theme for an online shop. This blog post will be especially helpful for developers who are new to PrestaShop or theme creation.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-to-create-a-theme-for-prestashop-1-7.html#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/alexey-homiakov#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/alexey-homiakov#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/11\\\/How-to-Create-a-Theme-for-Prestashop-1.png\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-to-create-a-theme-for-prestashop-1-7.html\\\/#mainImage\",\"width\":1110,\"height\":590,\"caption\":\"How to Create a Theme for Prestashop\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-to-create-a-theme-for-prestashop-1-7.html#mainImage\"},\"datePublished\":\"2018-11-14T15:06:31+02:00\",\"dateModified\":\"2021-02-18T14:06:09+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":"Create a Theme in PrestaShop 1.7 | BelVG Blog","description":"A detailed tutorial on how to create a PrestaShop 1.7 theme for an online shop. This blog post will be especially helpful for developers who are new to PrestaShop or theme creation.","canonical_url":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html#article","name":"Create a Theme in PrestaShop 1.7 | BelVG Blog","headline":"How to Create a Theme for PrestaShop 1.7","author":{"@id":"https:\/\/belvg.com\/blog\/author\/alexey-homiakov#author"},"publisher":{"@id":"https:\/\/belvg.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/11\/How-to-Create-a-Theme-for-Prestashop-1.png","width":1110,"height":590,"caption":"How to Create a Theme for Prestashop"},"datePublished":"2018-11-14T15:06:31+02:00","dateModified":"2021-02-18T14:06:09+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html#webpage"},"isPartOf":{"@id":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html#webpage"},"articleSection":"Prestashop, Prestashop 1.7 Tutorials, PrestaShop Custom Development, Prestashop Development, PrestaShop Webdesign, Image"},{"@type":"BreadcrumbList","@id":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.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\/how-to-create-a-theme-for-prestashop-1-7.html#listItem","name":"How to Create a Theme for PrestaShop 1.7"},"previousItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html#listItem","position":3,"name":"How to Create a Theme for PrestaShop 1.7","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\/alexey-homiakov#author","url":"https:\/\/belvg.com\/blog\/author\/alexey-homiakov","name":"Alexey Homiakov","image":{"@type":"ImageObject","@id":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/5ba504d9e7289ffde40eab791bf6a50ab2c43985e0313dd5d9ed1adcbe824e95?s=96&d=mm&r=g","width":96,"height":96,"caption":"Alexey Homiakov"}},{"@type":"WebPage","@id":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html#webpage","url":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html","name":"Create a Theme in PrestaShop 1.7 | BelVG Blog","description":"A detailed tutorial on how to create a PrestaShop 1.7 theme for an online shop. This blog post will be especially helpful for developers who are new to PrestaShop or theme creation.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/belvg.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html#breadcrumblist"},"author":{"@id":"https:\/\/belvg.com\/blog\/author\/alexey-homiakov#author"},"creator":{"@id":"https:\/\/belvg.com\/blog\/author\/alexey-homiakov#author"},"image":{"@type":"ImageObject","url":"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/11\/How-to-Create-a-Theme-for-Prestashop-1.png","@id":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html\/#mainImage","width":1110,"height":590,"caption":"How to Create a Theme for Prestashop"},"primaryImageOfPage":{"@id":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html#mainImage"},"datePublished":"2018-11-14T15:06:31+02:00","dateModified":"2021-02-18T14:06:09+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":"17271","title":"Create a Theme in PrestaShop 1.7 | #site_title","description":"A detailed tutorial on how to create a PrestaShop 1.7 theme for an online shop. This blog post will be especially helpful for developers who are new to PrestaShop or theme creation.","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:01","updated":"2026-11-03 18:37:01"},"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\tHow to Create a Theme for PrestaShop 1.7\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":"How to Create a Theme for PrestaShop 1.7","link":"https:\/\/belvg.com\/blog\/how-to-create-a-theme-for-prestashop-1-7.html"}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts\/17271","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\/60"}],"replies":[{"embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/comments?post=17271"}],"version-history":[{"count":1,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts\/17271\/revisions"}],"predecessor-version":[{"id":24194,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts\/17271\/revisions\/24194"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/media\/17280"}],"wp:attachment":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/media?parent=17271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/categories?post=17271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/tags?post=17271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}