As announced two weeks ago, version 1.6.1.0 turned out great, but there were still a few bumps here and there. We have fixed the main issues that were reported: 140 pull requests were merged into this version!
Test PrestaShop 1.6.1.1 RC1
PrestaShop Core Weekly - Weeks 28-29-30-31
This edition of the Core Weekly report highlights changes in PrestaShop core codebase during the last four weeks, from Monday 6th of July to Sunday 2nd of August, 2015.
PrestaShop Official Icon Pack - Beta
As part of PrestaShop’s product redesign, we decided to replace Font Awesome and start using our own icon pack. We’re sharing here the very first version of this new icon set, and we’ll keep you updated when it evolves.
Do you speak PrestaShop? – July 2015 edition
Here is the new report to inform you of what has been going on PrestaShop translation project on Crowdin this July 2015.
Test PrestaShop 1.6.1.1 RC2!
Following the publication of version 1.6.1.1 Release Candidate 1, we have fixed a few more issues that had been identified. Thanks for helping with the tests and for the feedback!
Release of PrestaShop 1.6.1.1
PrestaShop 1.6.1.1 is now available. This maintenance release closes 220 issues in version 1.6.1.0.
Introducing a new branching model for PrestaShop
PrestaShop has recently moved towards a more semantic versioning scheme, which is impacting the way we release new versions, and how we work on our GitHub repositories. If you want to contribute code, here’s a full explanation on how you should do it from now on.
PrestaShop Core Weekly - Weeks 32 & 33 & 34
This edition of the Core Weekly report highlights changes in PrestaShop core codebase during the last three weeks, from Monday 3rd of August to Sunday 23rd.
We're building a Starter Theme for PrestaShop 1.7.0.0
If you’ve ever tried to create a PrestaShop theme from scratch, you might have noticed it requires quite a large skillset: not only must you know HTML, CSS and Smarty, but you also need to be very familiar with the inner workings of PrestaShop itself. There is a lot of business logic going on in the templates, it is hard to tell apart classes that are used for styling from classes that are used by javascript-powered features, etc.
PrestaShop 1.7.0.0 is Underway
It’s a great time for the whole Product group at PrestaShop and we want to share with you why we are so excited!
Do you speak PrestaShop? – August 2015 edition
Here is the new report to inform you of what has been going on PrestaShop translation project on Crowdin this August 2015.
PrestaShop Core Weekly - Weeks 35 & 36
This edition of the Core Weekly report highlights changes in PrestaShop core codebase during the last three weeks, from Monday 24th of August to Sunday 6th of September.
Test PrestaShop 1.6.1.2 RC1
As mentionned in the previous Core Weekly report, the team is working on version 1.6.1.2, which after v1.6.1.1 is the second patch version of 1.6.1.0.
Like we did for v1.6.1.1, we want to give v1.6.1.2 a solid testing phase: we are planning two weeks for feedback on the issues that were fixed. This testing phase starts today, with the availability of the first Release Candidate version, or RC1 for short.
A month after the release of 1.6.1.1 and more than 2 months after the release of version 1.6.1.0, this forthcoming patch version is further proof of our willingness to continually improve your e-commerce experience, both as a merchant and as a customer. With this in mind, 150 pull-requests were closed and merged in the codebase since the release of version 1.6.1.1. That’s 5 more than for v1.6.1.1 so far, in much less time! Congratualions are due to the whole team as well as the growing team of regular contributors!
As this is a patch version, 1.6.1.2 will only fix issues – patch version are not meant to add features, only to make them work better! Therefore, it will be a very easy upgrade from 1.6.1.0 and 1.6.1.1.
Of particular interest is the fact that this version fixes a long-standing issue of slowness in the back-office. We really, really, really need your feedback on this one! Is it really fixed in all situations? Does your slowness issue remain the same? Let us know!
Remember! This is the first release candidate for 1.6.1.2, NOT the final, production-ready code! This is a test version, and is therefore not yet deemed suitable for production use. Hence, do not upgrade your store just yet! Install the RC1 on your server (on as many server configurations as possible), or upgrade from a clone of your real store.
Download and test PrestaShop 1.6.1.2 RC1 now!
You can also use the 1-Click Upgrade module, on the Release Candidate channel – from a test shop, of course :)
Remember: if you have any feedback to give or issue to raise, create a ticket on the Forge!
Here is the list of pull-requests that the team has merged into 1.6.1.2 so far:
- 3655: [-] TR : Fix emails not copied into theme folder
- 3669: [-] FO : Fix bug while specific price start to 1 quantity and initial price to 0
- 3714: [-] IN : Fix adding id_cart to id_product_2 key in specific_price.
- 3718: [*] BO : New module categories “Customer Reviews”, “Social & Community”.
- 3725: [-] CORE : Fix notices
- 3731: [*] BO: wording for gross margin KPIs
- 3736: [-] PDF: Order slip Tax detail computation fix.
- 3741: [-] BO : Fix issue with multiple trees loaded on the same page
- 3742: [-] BO : Fix memcached test
- 3744: [*] MO : Fix no h2 in blockcart
- 3746: [-] FO : Fix undefined var
- 3750: [-] PDF : Could not translate “Free Shipping” in pdf
- 3755: [-] BO : Fix issue with cover image
- 3756: [-] BO: Fix product import dates
- 3758: [-] CORE : could not load bootstrap-sortable.js with Chrome
- 3761: [-] FO : could not change currency with PS_DETECT_COUNTRY
- 3762: // Fix notices
- 3771: [-] FO : Search alias for words containing hyphens fail
- 3772: [-] BO : Duplicate currencies in AdminCountries in multishop
- 3774: [-] FO : 404 on images on small screens
- 3776: [*] BO : Add search_contains in chosen init
- 3786: [-] FO : Fix issue with multishop / multilanguage tags
- 3788: [-] CORE : Stock synchronization fails in case of shared warehouse
- 3793: [-] CORE: Fix code typos
- 3827: [-] FO : Avoid displaying payment message
- 3832: [-] BO : Fix notices on order statuses
- 3835: [-] BO : Fix issue with smarty lazy cache & timestamp
- 3836: [-] BO : Fix issue with smarty lazy cache & timestamp
- 3863: [-] FO : #Fix customized images duplication when re-order
- 3866: [*] BO : Fix removing extra space at end of product names and url rewrite
- 3870: [-] FO : Avoid possible undefined vars in global.js
- 3878: [-] FO : Fix possible fatal error in products-comparison
- 3879: [-] FO : Fix new products name in columns
- 3881: [-] FO : Fix $errors_discount dead code.
- 3891: [-] BO : Fix modules logo witdh
- 3893: [-] BO : undefined var in AdminProducts
- 3898: [-] BO : Impossible to add products via StockManager
- 3903: [-] CORE : Fix incorrect cart total
- 3904: [-] BO : wrong escaping in helpers/form/form.tpl
- 3907: [-] FO : Possible undefined function binduniform
- 3925& 3926: [-] BO : Fix performance issue with tags
- 3932: [-] CORE: Bad norm function getCountry
- 3936: [-] CORE : Fix inconsistent cart rule country restriction
- 3938: [-] CORE : Fix property StockAvailable->id_product is empty
- 3939: [-] BO : Fix commas in carrier prices wizard
- 3940: [-] BO : Bad invoice creation if delivery slip already exists
- 3941: [-] FO : Table ‘ps_product_reductions’ already exists
- 3942: [-] IN : Could not install in Czech
- 3950: [-] FO : Fix notice on customizedDatas
- 3953: [-] BO : Fix virtual product Duplicate entry
- 3954: [-] BO : could not re enable module on devices
- 3955: [-] BO : Fix possible Exception in product tabs loading
- 3958: [-] FO : gets the carrier available with weight attribute
- 3967: [-] BO : Fix bad id for email translations toggle
- 3968: [-] FO : Top menu not always active on mobile
- 3970: [-] CORE : fix bad cache_default_attribute, + bad clear cache on colors
- 3971: [-] BO : Could not bulk delete attributes
- 3972: [-] CORE : Fix notice: Undefined variable: delivery_address in classes/pdf/HTMLTemplateOrderSlip.php on line 165
- 3973: [-] BO : Fix parse serror when quotes in import file name
- 3975: [-] FO : Fix OrderHistory multishop getCustomerOrders shared orders
- 3982: [-] Bo : Fix bad action display when sub categories disabled
- 3986: [-] CORE : Order::hasDelivery new return type
- 3987: [-] CORE : Fix bad sql query in Lanqguage::loadUpdateSQL()
- 3991: [*] BO : makes picking products easier
- 3993: [-] FO : Fix bad redirection to my account in accordion footer
- 4001: [-] BO : Fix Catalog Rule for a specific shop do not save
- 4003: [-] CORE : Fix hard coded table name in configuration class
- 4005: [-] BO : Fix AdminBackupControllerCore and timeout
- 4006: [*] BO Some controllers may want to use Filters without an objectModel
- 4007: [-] CORE: Add index on search_index table
- 4009: [-] CORE : Allow invoice template override
- 4011: [*] CORE : add category thumbnail
- 4012: [*] MO : Blocklanguages add hreflang and rel alternate to the links for a better SEO and avoid duplicate content
- 4014: [*] CORE : Enable invoice number reset
- 4015: [*] BO : Meta title and description use textarea
- 4016: [*] CORE : DbMySQLi and socket + add driver in AdminInformation
- 4017: [*] BO : Fix id_connections in last connections
- 4021: [*] MO : Add rel attribut for google plus link in blocksocial
- 4022: [-] MO : Correct points on product load in loyalty
- 4024: [-] FO : Add to cart button for accessories
- 4025: [*] BO: Fix max width 96px on module logo on “not trusted module” popin.
- 4026: [-] FO: Footer fix in default-bootstrap theme: nocache on copyright year
- 4027: [-] FO: fix when clicking filters labels, not checkbox.
- 4028: [*] CORE : Media::getMediaPath improved
- 4029: [-] BO : Fix e-mail preview
- 4034: [-] FO : Show correct amount of earnable loyalty points.
- 4037: [-] CORE: Fixed currency convertion
- 4043: [-] BO : Enable product pack and product dematerialized for accessories
- 4059: [-] MO: Fix related to problems with product sort and nb_item on Internet Explorer
- 4065: [-] BO : Bad sql association for date_upd of product and categories, could not reorder
- 4067: [-] CORE : Error in foreign field name
- 4068: [-] CORE : Adding few casts to ValidateOrder
The PrestaShop 1.6.1.2 RC1 changelog is also available.
This release was made possible by the hard work of the PrestaShop Core Team, with the essential help of the following contributors: Alfonso Jiménez, Amazzing, BMS-fenaille, David-Julian BUCH, DogSports, Eolia, Eric Rouvier, Gytis Skema, Krystian Podemski, Marius, Presta Module, PrestaEdit, cgordenne, hiousi, quadrateam. Thank you all!
If you too want to be part of the PrestaShop contributors, please read this!
And now, let’s test this thing!
CLDR, Composer, NPM, JSHint, oh my!
As those of you who regularly look at the commits being merged in the ‘develop’ branch know, the forthcoming 1.7.0.0 version of PrestaShop now includes a few notable improvements.
These are all part of our plan to modernize the codebase, and provide you with a professional e-commerce tool!
CLDR: managing local numbers the right way
PrestaShop 1.7 now implements part of the Unicode Common Locale Data Repository standard in order to better manage currency and price listing. This allows us to always display a well-formatted price, whatever the locale (language and/or country).
CLDR is a huge project from the Unicode Consortium, which provides locale data, such as patterns for formatting/parsing numbers, or rules for formatting numbers in traditional numeral systems.
Core developer Luc Vandesype (@kelu95) spent several weeks deep in the trenches of PrestaShop, rewriting heaps of code and turning them into CLDR-supporting fields and forms.
Because CLDR’s JSON data files are huge, we have made it so that we just use those needed (through the installed/updated language pack). We also chose to introduce NPM in order to manage frontend dependencies. CLDR data files are shared with backend data files.
This is just one step in the path to CLDRization, and we hope to have more to bring in the version after 1.7!
Composer: managing dependencies the smart way
PrestaShop 1.7 now calls upon Composer to better manage several of its non-Core components.
Composer is a package manager that provides a standard format for managing dependencies of PHP software and required libraries. It allows us to declare the libraries that PrestaShop depends on, letting it manage their installation and update. Think of it as PHP’s equivalent for Node.js’ npm or Ruby’s Bundler… or as a modern and up-to-date PEAR project.
In the case of PrestaShop 1.7, Composer is in charge of managing:
- Smarty.
- CLDR dependencies.
- PrestaShop’s native modules (loaded from Packagist, the main Composer repository).
- PrestaShop’s unit tests.
- PrestaShop’s namespaced classes
It also installs a Git pre-commit hook for PSR-2 compliance and PHP Lint, a validator for PHP 5 code.
JSHint: JavaScript unit testing
We are introducing the usage of Grunt/Jasmine+JSHint in order to continually check the syntax of our JS code, and make sure they pass our unit tests.
Its use is tied to npm, so if you want to launch our test suite, type this in your command line:
{% highlight text %} > npm test {% endhighlight %}
How to test these goodies?
All of these improvements are available from the current ‘develop’ branch of PrestaShop, which contains the in-development code for PrestaShop 1.7.0.0. If you want to work with this branch, you need to install both Composer and Node.js (which contains npm).
Then, type these commands in your command-line interface:
{% highlight text %} > composer install > npm install -g grunt-cli > npm install {% endhighlight %}
Note that the Grunt line is optional.
Regular users are therefore not able to install PS 1.7 easily in its current state - and this is quite intentional: we want developers to dive into the code, and give them fun, modern and interesting tools to play with. Be at ease: once 1.7’s development is done, its package will be just as easy to set up as any previous version, with a full installer.
One last thing
These are just the first part of big changes which are coming in PrestaShop 1.7. Come back soon on the Build devblog to learn how we plan on using Symfony2 components, the Twig template engine and more. Let’s keep in touch!
PrestaShop Core Weekly - Weeks 37 & 38
This edition of the Core Weekly report highlights changes in PrestaShop core codebase during the last two weeks, from Monday 7th of September to Sunday 20th.
Milestones
The current stable version of PrestaShop is version 1.6.1.1 of PrestaShop, and this week we released the Release Candidate for the second patch version of branch 1.6.1.x: we need you to test that v1.6.1.2 RC1 is ready for production and does indeed fix the closed issues!
Meanwhile, the team is hard at work on version 1.7.0.0, and we published some information on this blog already:
- Initial launch of 1.7.0.0 project.
- Starter Theme collaborative project.
- Recent technological changes in 1.7.0.0 codebase: CLDR, Composer, JSHint, etc.
More information is coming soon, among which explanation of where we aim to take the new architecture that was introduced in v1.6.1.0, and details about some forthcoming design changes.
Do you want to contribute your code skills to the PrestaShop project? Make sure your Git setup is correctly configured, and that you follow our new branching model! Then, read these documentation pages.
The Core Weekly will now have separate sections for major branches. You can see the work being done on the following branches: 1.6.1.x, develop, and feat/starter-theme.
Of note among the merged PRs since the last Core Weekly Report:
- We reached PR 4000!
- In PR 3931, Core developer @julienbourdeau removed the Mobile Theme feature.
- In PR 3952, Core developer @julienbourdeau introduced widgets!
- In Pr 3969, Core developer @julienbourdeau introduced Validate::isDateOrNull
Code changes in 1.6.1.x
Let’s review the merged pull-requests on the 1.6.1.x branch since the last Core Weekly Report!
Front office
- 3764: Fix current_url variable used in pagination. Thank you gskema!
- 3958: gets the carrier available with weight attribute. Thank you DogSports!
- 3861: take account of PS_SSL_ENABLED_EVERYWHERE in file manager config, by @gRoussac.
- 3789: Fix negative prices on product page, by @gRoussac.
- 3831: Fix dead code in product-list.tpl, by @gRoussac.
- 3941: Table ‘ps_product_reductions’ already exists, by @gRoussac.
- 3917: Fix fatal error Property CustomerThread->id_order is not valid, by @gRoussac.
- 3975: Fix OrderHistory multishop getCustomerOrders shared orders, by @gRoussac.
- 3950: Fix notice on customizedDatas, by @gRoussac.
- 4026: Footer fix in default-bootstrap theme: nocache on copyright year, by @xGouley.
- 4027: fix when clicking filters labels, not checkbox, by @xGouley.
- 3829: Fix no alt on subcategories images, by @gRoussac.
- 3830: Fix missing nofollow in pagination.tpl, by @gRoussac.
- 3809: newsletter flag for customer if previously registred as guest, by @gRoussac.
- 3837: Css fix for TOS width on small devices, by @gRoussac.
- 3908: Possible error Cannot read property ‘iso_code’ of undefined, by @gRoussac.
- 4034: Use floor() instead of round() to show correct amount of loyalty points. Thank you @sambrista!
- 3968: Top menu not always active on mobile. Thank you @eric-rouvier!
Back office
- 3925: Fix performance issue with tags, by @jocel1.
- 3926: Fix performance issue with tags, by @jocel1.
- 3943: fix filter home category display, by @gRoussac.
- 3898: Impossible to add products via StockManager. Thank you @eric-rouvier!
- 3973: Fix parse serror when quotes in import file name, by @gRoussac.
- 3971: Could not bulk delete attributes, by @gRoussac.
- 3940: Bad invoice creation if delivery slip already exists. Thank you @eric-rouvier!
- 3884: Fix wrong “back o list” href on AdminCategories, by @gRoussac.
- 4006: Some controllers may want to use Filters without an objectModel. Thank you @hiousi!
- 3991: Make picking products easier, by @dave-lp.
- 3847: cart rules don’t retain customer name/email, by @gRoussac.
- 3967: Fix bad id for email translations toggle, by @gRoussac.
- 3955: Fix possible Exception in product tabs loading, by @gRoussac.
- 3889: Fix typo Warehouse::$idintval, by @gRoussac.
- 4017: Fix id_connections in last connections, by @gRoussac.
- 3982: Fix bad action display when sub categories disabled, by @gRoussac.
- 3954: Could not re enable module on devices, by @gRoussac.
- 4025: Fix max width 96px on module logo on “not trusted module” popin, by @xGouley.
- 4029: Fix e-mail preview, by @maximebiloe.
- 4005: Fix AdminBackupControllerCore and timeout, by @gRoussac.
- 3918: Fix bad table id after DND, by @gRoussac.
- 3939: Fix commas in carrier prices wizard, by @gRoussac.
- 3953: Fix virtual product Duplicate entry, by @gRoussac.
- 3752: You can now have a “from” date and a “to” date like ‘0000-00-00 00:00:00’. Thank you @prestamodule!
Core
- 3927: Add
iso_code_num
to Currency entity, by @julienbourdeau. - 3932: Bad norm function getCountry, by @gRoussac.
- 3945: Fix 1.6.1.x sql upgrade files, by @Shudrum.
- 3972: Fix undefined variable delivery_address in classes/pdf/HTMLTemplateOrderSlip.php on line 165, by @gRoussac.
- 3970: fix bad cache_default_attribute, + bad clear cache on colors, by @gRoussac.
- 3999: Typo, by @hiousi& @gRoussac.
- 4001: Catalog Rule for a specific shop do not save, by @gRoussac.
- 4003: Fix hard coded table name in configuration class, by @gRoussac.
- 3777: Cart / Correct cache_key name for getOrderedCartRulesIds(). Thank you @prestamodule!
- 4009: Allow invoice template override, by @jnadaud.
- 3778: Give the possibility to filter on active field in getCustomers(), by @gRoussac.
- 3780: Use DB delete() method in cleanGroups() in Product class. Thank you @prestamodule!
- 3769: Use DB delete() method in deleteAccessories() & deleteFromAccessories() methods in Product class. Thank you @prestamodule!
- 3765: Call orderbyPrice() only if there are some results. Thank you @prestamodule!
- 3938: Property StockAvailable->id_product is empty, by @gRoussac.
- 4016: DbMySQLi and socket + add driver in AdminInformation, by @gRoussac.
- 3784: Use DB delete() method in deleteCategoriesFromShop(). Thank you @prestamodule!
- 3795: Fix case statement in HTMLTemplateInvoice. Thank you @gskema!
- 3782: Use DB delete() method in cleanGroups() & cleanAssoProducts(). Thank you @prestamodule!
- 3838: Reflect 6 decimals for product weight according to db structure, by @gRoussac.
- 3987: Fix #PSCSX-6814, bad sql query in Lanqguage::loadUpdateSQL(), by @gRoussac.
- 4028: Media::getMediaPath improved, by @tchauviere.
- 4014: enable invoice number reset, by @gRoussac.
- 3936: Fix inconsistent cart rule country restriction, by @gRoussac.
- 4011: add category thumbnail, by @gRoussac.
- 4037: Fixed currency convertion. Thank you @Amazzing!
Modules
- 4012: Blocklanguages add hreflang and rel alternate to the links for a better SEO and avoid duplicate content. Thank you @cgordenne!
- 4021: Add rel attribut for google plus link in blocksocial, by @maximebiloe.
- 4022: Correct points on product load in loyalty module, by @maximebiloe.
- 4024: Add to cart button for accessories, by @maximebiloe.
Code changes in 1.7.0.0-develop
Let’s review the merged pull-requests on the ‘develop’ branch since the last Core Weekly Report!
Note that the Start Theme repo (see next section) is entirely part of the PrestaShop 1.7.0.0 project.
Back office
- 4023: Import registration date for customer, by @maximebiloe.
- 4043: Enable product pack and product dematerialized for accessories. Thank you @quadrateam!
Core
- 3183: password multiple hash and new salt. Thank you @sfroment42!
- 3969: Introducing Validate::isDateOrNull, by @julienbourdeau.
- 3977: fix obsolete upgrade sql file, by @kelu95.
- 3916: Remove _includeVars ; never more used. Thank you @prestamodule!
Code changes in Starter Theme
Let’s review the merged pull-requests on the ‘feat/starter-theme’ branch since the last Core Weekly Report!
- 3921: Home now renders / Provide sane defaults for page info, by @djfm.
- 3922: load theme.css, by @djfm.
- 3924: Allow registering custom Smarty plugins. Thank you @alexsegura!
- 3909: Rework front controller, by @julienbourdeau.
- 3929: Product page for StarterTheme, by @maximebiloe.
- 3930: Rework front controller, by @julienbourdeau.
- 3933: Add body_classes to $page, by @julienbourdeau.
- 3934: helper script to setup the workspace, by @djfm.
- 3946: Introduce
$this->l()
for FrontController, by @julienbourdeau. - 3956: Rework/sitemap controller, by @julienbourdeau.
- 3944: Rework ProductController for images and labels assignation, by @julienbourdeau.
- 3931: Retire mobile theme feature (go responsive), by @julienbourdeau.
- 3951: Rework stores controller, by @julienbourdeau.
- 3952: Feat/starter theme widgets, by @djfm.
- 3965: improve smarty hook fct : add exclude param. Thank you @prestarocket!
- 3974: Rework Auth and Identity controllers, by @julienbourdeau.
- 3966: Feat/starter theme categories, by @djfm.
- 3981: Provide JS base url to templates & Validate::isJson needs to be static, by @djfm.
- 3983: Added anchor to product url, by @djfm.
- 3980: Fix little typo in getSortOptions function. Thank you @PrestanceDesign!
- 3998: Fix sitemap urls, by @julienbourdeau.
- 3992: Rework ProductController, by @maximebiloe.
- 4000: Rework AddressesController, by @julienbourdeau.
- 4010: Introduce {url} smarty function, by @julienbourdeau.
- 4033: Add id_product_attribute to product URLs, by @djfm.
See all the PRs merged into the codebase since September 7th here.
Thank you to our contributors whose Pull Requests were merged since the last Core Weekly Report: alexsegura, cgordenne, DogSports, eric-rouvier, gskema, hiousi, prestamodule, PrestanceDesign, prestarocket, quadrateam, sambrista, and sfroment42. Also, thank you to the contributors who’s PRs haven’t been merged yet! And of course, a big thank you to all those who contribute with tickets on the Forge!
If you want to contribute to PrestaShop with code, read those:
…and if you do not know how to fix an issue but wish to report it, read this: How to use the Forge to contribute to PrestaShop. Thank you!
Happy contributin’ everyone!
Starter Theme: fresh news from the front
It’s been a month since PrestaShop announced a new Starter Theme project.
It’s an important project, both because it touches on something that’s been tricky for many years, namely being able to quickly build a quality and standard-respecting theme from scratch, and because it’s truly a project built for and with the community, with a dedicated branch, its own Gitter channel for discussions, and even its own Trello board (yes, outside of the Forge!).
Hence, the project is indeed led by a handful of PrestaShop’s Core developers, in parallel of PS 1.7’s development, but they are trying new ways to reach the Community and make us participate – like with this article, which is not written by a PrestaShop staff member but a Community member. Come participate!
Now, with that in mind, here are some news about the work in progress: what is being discussed, what has been implemented, what’s next…
Template inheritance
This is the most important change since the 1.6 Theme API: starting from version 1.7.x, PrestaShop themes need to be written using template inheritance.
Template inheritance is a common concept shared among all major template engines (among which Smarty), so it should make no difference when PrestaShop starts supporting other template engines, like Twig (see Twig’s documentation).
Rendering is now performed in a single step, and the header.tpl
& footer.tpl
files are no longer mandatory.
It means it is now the template rendered by the controller which chooses the layout.
{% highlight smarty startinline=true linenos %} {extends “{$layout}”}
{block “content”} Hello, world! {/block} {% endhighlight %}
In the layout file, template blocks are used to define the content areas.
{% highlight smarty startinline=true linenos %} <!DOCTYPE html> <html lang="en">
{include "_partials/head.tpl"} {block "content"}{/block}</html> {% endhighlight %}
The $layout
variable will always be available, but you can always change the layout if you want.
{% highlight smarty startinline=true linenos %} {extends “path/to/crazy_layout.tpl”}
{block “content”} Hello, world! {/block} {% endhighlight %}
Relative template path
You can now include a template without using the $tpl_dir
variable.
Templates will be resolved starting from the current theme root directory.
{% highlight smarty startinline=true linenos %} {include “_partials/head.tpl”} {% endhighlight %}
New directory structure
Templates have been reorganized into functional (and more logical) subfolders:
└── templates ├── _partials │ ├── footer.tpl │ ├── head.tpl │ ├── header.tpl │ └── search.tpl ├── catalog │ ├── _partials │ │ └── ... │ ├── category.tpl │ └── product.tpl ├── checkout │ ├── _partials │ │ └── ... │ └── cart.tpl ├── cms │ ├── _partials │ │ └── ... │ └── ... ├── customer │ ├── _partials │ │ └── ... │ └── ... ├── errors │ └── ... └── index.tpl
Widgetizable modules
The WidgetInterface
has been introduced: any module implementing this interface can be rendered anywhere, even outside of the hooks it was designed to work with.
Right now, only a few modules implement this interface, but more and more modules will be “widgetized”.
{% highlight php startinline=true linenos %} interface WidgetInterface { public function renderWidget($hookName, array $configuration); public function getWidgetVariables($hookName, array $configuration); } {% endhighlight %}
The {widget_block}
block function allows to customize the HTML code even more.
Really handy when you need to prototype a theme quickly without knowing anything about the hooks for a module!
{% highlight smarty startinline=true linenos %} {widget_block name=”blocklanguages”}
{/widget_block} {% endhighlight %}
If you want to have a further look, these two modules have been widgetized:
Custom Smarty plugins
You can now embed your own custom Smarty plugins in a theme.
Just add files following the naming conventions in the plugins
folder of your theme.
For example, to have a modifier that adds stars to a string, create a file named plugins/modifier.stars.php
{% highlight php startinline=true linenos %} function smarty_modifier_stars($string) { return “{$string}”; } {% endhighlight %}
Then, you can use it in your theme:
{% highlight smarty startinline=true linenos %} {“Hello, world!”|stars} {% endhighlight %}
Deprecations
As expected with major releases, some features will no longer be supported or available in 1.7
Mobile theme
The Starter Theme will be considered responsive by default, so the mobile theme feature has been removed.
Live edit
As the new Starter Theme will be more frontend developer oriented, the Live Edit feature will be dropped. Plus, the PrestaShop product team is currently working on a brand new theme builder!
Scenes
Scenes will be removed in the next major version.
Some more features may be added to this list as the project evolves. Keep an eye on Build :)
And remember, it’s still time to get involved and contribute. Join the party on the Trello board and Gitter!
PrestaShop Core Weekly - Week 39
This edition of the Core Weekly report highlights changes in PrestaShop core codebase during last week, from Monday 21st of September to Sunday 27th.
Milestones
The current stable version of PrestaShop is version 1.6.1.1 of PrestaShop, and last week we released the Release Candidate for the second patch version of branch 1.6.1.x: we need you to test that v1.6.1.2 RC1 is ready for production and does indeed fix the closed issues! An RC2 should make its way very soon.
Meanwhile, the team is hard at work on version 1.7.0.0, and we published some information on this blog already:
- Initial launch of 1.7.0.0 project.
- Starter Theme collaborative project.
- Recent technological changes in 1.7.0.0 codebase: CLDR, Composer, JSHint, etc.
More information are coming soon, among which explanation of where we aim to take the new architecture that was introduced in v1.6.1.0, and details about some forthcoming design changes.
Do you want to contribute your code skills to the PrestaShop project? Make sure your Git setup is correctly configured, and that you follow our new branching model! Then, read these documentation pages.
Code changes in 1.6.1.x
Here are the merged pull-requests on the 1.6.1.x branch since the last Core Weekly Report!
Text changes
Front office
- 3876: name of select multiple in Form Helper TPL. Thank you @fenaille!
- 3865: minimum order value outside order steps, by @gRoussac.
- 3887: Fix stars because not_uniform is missing. Thank you @bumarius!
- 4050: Avoid to see your shop on the Pacific ocean. Thank you @Eolia!
- 3853: no validation on non multishop field in multishop, by @gRoussac.
- 4087: Add availability microdata data when product is purchasable out of stock. Thank you @mcdado!
Back office
- 3752: You can now have a “from” date and a “to” date like ‘0000-00-00 00:00:00’. Thank you @prestamodule!
- 4015: Meta title and description use textarea, by @gRoussac.
- 4045: Unable to translate title. Thank you @Eolia!
- 4046: fixed bug Unable to translate header. Thank you @Eolia!
- 4053: no validation on non multishop field in multishop, by @gRoussac.
- 4035: fix column icon width. Thank you @prestamodule!
- 4051& 4052: fixed bug Unable to translate header. Thank you @Eolia!
- 3935: Fix product / category date_upd when position change, by @gRoussac.
- 4065: Bad sql association for date_upd of product and categories, could not reorder, by @gRoussac.
- 3665: Pass empty firstname and lastname email vars to mail template. Thank you @gskema!
- 4069: Fix meta description, by @gRoussac.
- 4081: Fixed bug while testing module. Thank you @brouillon!
Core
- 3766: Use null direclty instead of create new var as null. Thank you @prestamodule!
- 3767: Change getIdProductAttributeMostExpensive() method. Thank you @prestamodule!
- 3768: Change getDefaultIdProductAttribute() method. Thank you @prestamodule!
- 4007: add index on search_index table, by @gRoussac and @jocel1.
- 3875: implements data-keepinline for scripts not being defered, by @gRoussac.
- 4067: Error in foreign field name. Thank you @djbuch!
- 4068: Adding few casts to ValidateOrder, by @gRoussac.
Modules
- 4059: Fix for blocklayered.js. Thank you @kpodemski!
Installer
Code changes in 1.7.0.0-develop
Now let’s review the merged pull-requests on the ‘develop’ branch since the last Core Weekly Report!
Note that the Start Theme repo (see next section) is entirely part of the PrestaShop 1.7.0.0 project.
Front office
Back office
- 4043: Enable product pack and product dematerialized for accessories. Thank you @quadrateam!
Core
- 3860: fix alias function declaration, by @kelu95.
- 3661: added new hook on customer group save before clean groups. Thank you @vAugagneur!
- 3660: added new hook on customer group save. Thank you @vAugagneur!
- 4041: Show display as deprecated for customerIdExists(). Thank you @prestamodule!
- 4056: fix bad serbia iso code for CLDR, by @kelu95.
Unit test
Code changes in Starter Theme
Finally, these are the merged pull-requests on the ‘feat/starter-theme’ branch since the last Core Weekly Report!
- 4042: Feat/starter theme blockcart, by @djfm.
- 4036: Stop infinite loop, by @djfm.
- 4031: Directory correction. Thank you @dkarvounaris!
- 4055: Rework ProductController, by @maximebiloe.
- 4073: Added Customizations Handling to CartPresenter, by @djfm.
- 4076: Rework/address with new repo, by @julienbourdeau.
- 4083: Introduce notifications for front office, by @julienbourdeau.
- 4091: Product Customization, by @djfm.
- 4092: let’s not wait for packagist, by @djfm.
- 4088: Create directory structure for checkout, by @julienbourdeau. Thank you @dkarvounaris!
- 4099: CSS for blockcart links, by @djfm.
- 4100: aliases need the autoload, by @djfm.
- 4104: fixed notice in ProductController::addCustomizedData, by @djfm.
- 4103: Cleaned blockcontact for StarterTheme & Classic, by @djfm.
See all the PRs merged into the codebase since September 21st here.
Thank you to our contributors whose Pull Requests were merged since the last Core Weekly Report: brouillon, bumarius, djbuch, Eolia, fenaille, gskema, iNem0o, kpodemski, mcdado, paeddl, prestamodule, quadrateam, and vAugagneur, Also, thank you to the contributors who’s PRs haven’t been merged yet! And of course, a big thank you to all those who contribute with tickets on the Forge!
If you want to contribute to PrestaShop with code, read those:
…and if you do not know how to fix an issue but wish to report it, read this: How to use the Forge to contribute to PrestaShop. Thank you!
Happy contributin’ everyone!
Test PrestaShop 1.6.1.2 RC3
We received quite a few feedback reports and pull-requests since we released v1.6.1.2 RC1 two weeks ago, so here’s the RC3, which fixes some more issues, and polishes a few more lines of code.
NOTE: The RC2 was first uploaded yesterday (Monday 5th) with a slight parenthesis issue which broke many pages. It was fixed by our Core team and repackaged at around 3 PM (Paris time), and two moresmall corrections since then have proven essential, hence the RC3. If you downloaded the RC2, please download the RC3 now!
Remember! This is the third release candidate for 1.6.1.2, NOT the final, production-ready code! This is a test version, and is therefore not yet deemed suitable for production use. Hence, do not upgrade your store just yet! Install the RC3 on your server (on as many server configurations as possible, please!), or upgrade from a clone of your real store.
Download and test PrestaShop 1.6.1.2 RC3 now!
Remember: if you have any feedback to give or issue to raise, create a ticket on the Forge!
Here is the list of pull-requests that the team has merged into 1.6.1.2 so far:
- 3665: [-] BO : Pass empty firstname and lastname email vars to mail template
- 4065: [-] BO : Bad sql association for date_upd of product and categories, could not reorder
- 4067: [-] CORE : Error in foreign field name
- 4068: [-] CORE : Adding few casts to ValidateOrder
- 4069: [-] BO : Fix meta description
- 4072: [-] FO : Could not see available vouchers when changing quantities
- 4074: [-] BO : Remove back button message of expired POST data
- 4072: [-] FO : Could not see available vouchers when changing quantities
- 4074: [-] BO : Remove back button message of expired POST data
- 4079: [-] FO : Content hooked to ‘productListReviews’ is removed on dynamic list/grid update
- 4081: [-] BO : Fixed bug while testing module
- 4082: [-] BO : Fixed checking if module is trusted
- 4087: [*] FO : Add availability microdata data when product is purchasable out of stock
- 4094: [-] CORE : Fix issues into ps_delivery table
- 4096: [-] FO : Too much calls of findCombination
- 4105: [-] FO : no localstorage with Safari private browsing
- 4110: [-] FO Avoid Email validation Error on ajax request
- 4111: [-] Class: Missing category param when update positions + duplicate call
- 4113: [-] BO : Fix confusion about private messages in AdminCustomerThreads
- 4115: [-] BO : Fix wrong redirect after editing customer
- 4117: [-] BO : Customer groups - remove enable status on customers
- 4119: [-] FO : Could not add to cart in quickview
- 4122: [-] BO : Fix bad utm_campaign, notice: Undefined index: lang_iso
- 4123: [-] CORE : Fix notice Undefined index: host in classes/ConnectionsSource.php
- 4125: [-] FO : Fix products links without correct anchor for attributes in shopping-cart
- 4127: [-] BO : Delete thumb on product import
- 4128: [-] FO : Fix bad redirect when PS_CART_REDIRECT
- 4129: [-] CORE : Could not disable third party modules
- 4130: [*] IN: fixtures, add some Czech translations
- 4131: [-] FO : Fix notice Undefined index: nb_products
- 4133: [-] BO : Property CustomerMessage->message is empty
- 4137: [-] FO : Metas in maintenance mode
- 4138: [-] BO : Fix exception on specific price amount import
- 4141: [-] BO : Fix bad redirect when deleting shopping cart rule in customer details view
- 4153: [-] FO : Fix bad validation when empty zipcode validation pattern
- 4159: [-] Class: Address / Use getValue() instead of getRow() in isUsed() method
- 4160: [-] Class: Customization / Use getValue() instead of getRow()
- 4161: [-] Class: Module / $live_edit declared but not used
- 4162: [-] Class: AdminController / Remove displayNoSmarty() method
- 4163: [-] BO: remove old warning icon if no customer found when search one in create order
- 4164: [-] WS: Manage multiple exclude filter values
- 4167: [-] FO : Fix performances issue with smarty custom
- 4169: Fix htmlentities in conf
- 4172: // missing parenthesis
The PrestaShop 1.6.1.2 RC3 changelog is also available.
This release was made possible by the hard work of the PrestaShop Core Team, with the essential help of the following contributors: @brouillon, @Eolia, @mcdado, and @PrestaEdit. Thank you all!
If you too want to be part of the PrestaShop contributors, please read this!
And now, let’s test this thing!
Do you speak PrestaShop? – September 2015 edition
Here is the new report to inform you of what has been going on PrestaShop translation project on Crowdin this September 2015, a rather quiet month for our project.
All the figures and statistics are (still) based on the 1.6.1.0 project.
Updated workflow
We’ve recently changed the workflow on Crowdin: it’s important you should translate in the “next-version” folder in priority. Strings will then automatically propagate to the “1.6.1.0” folder, while the reverse won’t work. So if you’re working on 1.6.1.0, that’s double work for everybody. Read more about it here. And don’t hesitate to ask if you have some questions!
Top contributors
A lot of you are working everyday on Crowdin to have PrestaShop available in many languages, and we can’t thank you enough for your dedication! Here are the most active translators and proofreaders for the month of September.
Top 10 translators in September:
Translator | Language | # Words | |
---|---|---|---|
1. | A Petapouca (petapouca) | Galician | 13,498 |
2. | uchsarath (sarath7khmer) | Khmer | 3389 |
3. | rbuelund | Danish | 1821 |
4. | Gerhard Stiegler (GerhardS) | German, Austria | 1402 |
5. | Bruno Orbelli (orbellibruno) | Spanish, Argentina | 1250 |
6. | DaoKakao | Russian | 817 |
7. | Mahdi Shad (ramtin2025) | Persian | 525 |
8. | Sol (Mr) (solobelongs) | Japanese | 513 |
9. | Michael Dekker (mdekker) | Dutch | 483 |
10. | dzuman | Vietnamese | 477 |
Top 10 proofreaders in September:
Proofreader | Language | # Words | |
---|---|---|---|
1. | Morten Borg (mortenborg) | Danish | 1587 |
2. | Mahdi Shad (ramtin2025) | Persian | 1303 |
3. | uchsarath (sarath7khmer) | Khmer | 1059 |
4. | DaoKakao | Russian | 869 |
5. | Cha (cafetango) | Chinese (Trad.) | 444 |
6. | TungCEO | Vietnamese | 1665 |
7. | eleazar | German | 335 |
8. | dzuman | Vietnamese | 246 |
9. | lolypop000 | Slovenian | 227 |
10. | Filip Filipović (filipfilipovic) | Czech | 219 |
A big applause to them! And welcome to our new top contributors!
Complete translations
Fully translated languages
At the end of September, PrestaShop 1.6.0.1 was fully available (= 100% translated and validated) in 8 languages:
- Bulgarian
- Croatian
- Dutch
- English
- German
- Italian
- Russian
- Slovenian
99% translated languages
…and almost fully translated (and validated) in the following 9 languages:
- Czech
- French
- Indonesian
- Lithuanian
- Norwegian
- Polish
- Portuguese, Brazilian
- Spanish
- Swedish
Languages with the best evolution
In comparison with the previous month, these languages had the best progress in September:
- Galician (+119% to reach 46% translated!)
- Basque (+11% to reach 21% translated)
- Danish (+3% to reach 68% translated)
Quite a performance in Galician, wow! Congratulations to all our contributors for the hard work!!
New languages
At the request of community members, we’ve recently added some new languages to the project. You can now translate PrestaShop in:
So don’t hesitate to join!
Languages that need (more) proofreaders
A translated string will not be available in PrestaShop as long as it is not validated. For this reason, it’s important we should keep a good level of validated strings vs. translated string, to make sure everyone benefits from the latest translations!
These languages (still) need you as proofreaders as well:
- Turkish (94% translated vs 0% validated)
- Slovak (78% vs 24%)
- Ukrainian (99% vs 54%)
- Galician (46% vs 11%)
- Finnish (76% vs 50%)
If you wish to help proofreading what has been translated, please contact me on Crowdin with the language you’d like to proofread. We need your help!
A word from the community
Here is an update on the latest initiatives from members of the translation community.
Turkish
Turkish translator ftugrul is trying to gather the Turkish community. Join the discussion on Crowdin forum to harmonize the translation and go forward with more proofreading. We do need more proofreading in Turkish, so make yourself known if you want to participate!
Miscellaneous
- 109 contributors joined the project this month, for a total of 2,239 members at the end of September. Welcome to them!
- 62 members were active on the project this month.
- A total of 30,969 words have been translated and 8,555 validated, in 37 different languages.
Again, we can’t thank you enough!
If you haven’t joined us on Crowdin yet, it’s never too late!
If you want to gather your fellow translators to work towards a better harmonization, start a glossary, or anything else, do let us know: we’ll include a word about it in the next monthly report.
Do you have a question, a remark? Don’t hesitate to leave a comment.
See you next month!
Benefit from the $1M Integration Fund to build your own PrestaShop modules
One of the strengths of PrestaShop is how it reaches merchants all around the world through a highly customizable code, a high number of available languages and a rich catalog of local modules. We’re going a step further by making a big effort to offer local modules on PrestaShop Addons marketplace, thanks to the $1 million Integration Fund, launched in June, 2015.
The PrestaShop community is at the heart of this program, with two main goals:
- Offer to merchants the most adapted catalog of modules by taking into account their regional habits, in terms of payment, shipping, marketplaces and administrative specificities
- Fund developers who build these modules with an advance on their Addons sales, to support the launch of long tail modules
What has been achieved so far
A few weeks after the launch of the Integration Fund, 40+ modules are in the making, soon allowing shops in 20+ countries to be more adapted than ever to their customers and local markets. You can see below in which countries modules are being developed, or already released and being sold on PrestaShop Addons Marketplace:
Is your country missing from this list? Maybe it’s time to join the program!
Look around for local opportunities
A lot of local modules are left to build in order to offer a full catalog on our PrestaShop Addons Marketplace. Do merchants have everything they need to sell in your country? What about regional payment gateways, shipping carriers, or marketplace connectors– is it all there… or waiting for you to build a great module?
If you’d like to be part of this new step in PrestaShop history, feel free to apply and convince our jury to help you get started. If selected, your module will get funded and receive special visibility towards the merchants it targets.
How to get involved
The Integration Fund is looking for developers with a passion for ecommerce, who are experts of their local ecosystem and are willing to help PrestaShop expand in their region. If you think you have a great idea, tell us about it, and we’ll help you turn it into a successful module!
Here’s how it works:
- Apply online to the Integration Fund
- Hear back from us
- Submit your module
- Get your funding
- Sell on Addons
Learn more about the Integration Fund
It is time to bring your ideas to life! Apply to the Integration Fund now