开发者 | aytechnet |
---|---|
更新时间 | 2020年7月3日 20:53 |
捐献地址: | 去捐款 |
PHP版本: | 3.3.0 及以上 |
WordPress版本: | 5.4.2 |
[ps_product_list id_category=X n=C p=P tpl=TPL]
where X is the category id of the category you want to display (by default the home category 1 is used), C is the number of product you want to display (by default 10), P is the page number (by default 1) and TPL is the Smarty template to use (by default product-list.tpl
). You may replace id_category by id_product list of product ids separated by comma.
Note that the module will import the current theme of PrestaShop to your blog (both CSS and Javascript) but this is optional since 0.6. Generally you need a WordPress theme that is translated from the PrestaShop theme : it need to have the same XHTML layout and you have to replace PrestaShop HOOK markers by widget area in your blog theme, maybe like this :
prestashop-integration
folder to the /wp-content/plugins/
directoryPrestaShop Integration
widgets to the appropriate sidebarsNo, the plugin will not work with any PrestaShop older than 1.4 because the internal structure of PrestaShop has been improved since 1.4 by using a FrontController class. This plugin add support by adding a specific controller for integration with WordPress. It could be possible to add support for PrestaShop 1.3 or older, but it need to be coded. So to get support for PrestaShop Integration, the better is that you upgrade your PrestaShop to at least 1.4 series. You will get furthermore newer functionnalities and bug fixes.
Yes, it should. But If It doesn't work, you may need to update PrestaShop autoload behaviour as indicated below. PrestaShop 1.4 is an old version now, and has not been tested with this release. If your installation is working nicely, please do not update as the 0.9.1 release only add features for newer PrestaShop.
Yes, only since version 0.8 which is still compatible with PrestaShop 1.4.
Yes, at least using 0.9.1 (0.9 may be working on some case, but new themes structure may have been hard to integrate).
Yes, at least using 0.9.4 but you may need to patch PrestaShop classes/controller/Controller.php as follows in order to force ajax request to save cookie : --- classes/controller/Controller.php.orig 2018-11-06 20:24:21.000000000 +0000 +++ classes/controller/Controller.php 2019-03-05 07:42:15.960964683 +0000 @@ -687,6 +687,9 @@ Hook::exec('actionBeforeAjaxDie'.$controller.$method, array('value' => $value)); Hook::exec('actionAjaxDie'.$controller.$method.'Before', array('value' => $value));
_partials/stylesheet.tpl
file will be done like that (do not forget templates
leading directory) :
A new function ps_body_class
is an helper function to automatically adds body classes for PrestaShop (inspired from the body_class
function of WordPress). Here is an example for adding the class layout-left-column
but removing the class layout-full-width
given by PrestaShop :
>
Another example for a typical `footer.php` PHP calls juste before the `
line (ps_get_template_vars() has been improved to simplify access to
$javascript.bottom` smarty expression here) :
The above code is the direct translation of the PrestaShop 1.7 template code :
{block name='javascript_bottom'}
{include file="_partials/javascript.tpl" javascript=$javascript.bottom}
{/block}
{block name='hook_before_body_closing_tag'}
{hook h='displayBeforeBodyClosingTag'}
{/block}
Yes, it should work. Note that the version 0.9.8 has been fixed to use the right PrestaShop favicon to import, or the may shop favicon may be used.
Furthermore, it may be needed to fix classes/shpop/Shop.php
file to choose the right shop according to domain used. A new feature was added in version 0.9.8 to "import" PrestaShop frontpage for the WordPress frontpage but notice that no links are changed and duplicate content may appear if you do not take care.
The plugin has been tested with a single PrestaShop shop and WordPress multisite and with both multishop and multisite.
If you are using PrestaShop 1.5 and you installed WordPress in root of your hosting and PrestaShop in a subdirectory, you will get this error. You need to patch PrestaShop file classes/shop/Shop.php
as follows :
--- classes/shop/Shop.php.orig 2013-01-07 09:18:32.000000000 +0100
+++ classes/shop/Shop.php 2013-01-07 09:25:26.000000000 +0100
@@ -368,6 +368,9 @@
if (!Validate::isLoadedObject($default_shop))
throw new PrestaShopException('Shop not found');
You may be using a WordPress plugin that use PHP autoloader, but PrestaShop assume it is the only one using PHP autoloader : you need to modify the config/autoload.php
file by changing the name of the function (for example : __autoload_prestashop
) and to add at the end of the file the following line :
spl_autoload_register('__autoload_prestashop');
Note that PS 1.6 has fixed this problem, you do not need to patch the code anymore.
You need to patch PrestaShop cookie management because this problems occurs where PrestaShop is installed in a child directory of WordPress. Please replace the $this->_path
in setcookie
invocation by simply '/'
. This will make the cookie available to WordPress. you may use override functionnality in PrestaShop to simplify PrestaShop update in the future.
Here is a code sample below if the shop is in a subdirectory and the wordpress in '/' from class/Cookie.php
:
if (PHP_VERSION_ID <= 50200) { / PHP version > 5.2.0 /
return setcookie($this->_name, $content, $time, '/' / $this->_path /, $this->_domain, $this->_secure);
} else {
return setcookie($this->_name, $content, $time, '/' / $this->_path /, $this->_domain, $this->_secure, true);
}
If you try to use two distinct domains for the blog and the shop, it will not work and it is not fixable. At least you need to use two subdomains of the same domain for the blog and the shop, and apply the cookie management to the common domain.
This patch is not necessary when WordPress is installed in a child directory of PrestaShop installation, typically named blog
.
You are probably using PrestaShop 1.6 and the theme has a special file called global.tpl wich collect all the JS variable you need to include it manually as follow in header.tpl (or footer.tpl if you have chosen to move JS code at the end) :
You have a specific public function for that, for example for the custom hook displayBanner
you can put in your WordPress theme :
This plugin does not sync PrestaShop and WordPress set of JavaScript ! Jquery is used by both PrestaShop and WordPress, but PrestaShop generally uses old JS files, and WordPress newer version... So in order to avoid conflicts and so on, you may consider something like that (if your PrestaShop is using JQuery 1.11.0, please check, you may need to add other scripts as well) : function mytheme_init() { if ( !is_admin() ) { wp_deregister_script( 'jquery' ); wp_register_script( 'jquery', '', array(), '1.11.0' ); wp_enqueue_style( 'jquery' ); } } add_action( 'init', 'mytheme_init' );