部署PrestaShop
- PrestaShop: https://hub.docker.com/r/prestashop/prestashop
vim startprestashop.sh:
#/bin/bash
# create a network for containers to communicate
docker network create prestashop-net
# 启动MySQL5.7容器。注意,官方的说明不可靠,MySQL没有挂载数据卷,重启服务器后,数据可能丢失。
docker run --name santic-mysql --network prestashop-net -e MYSQL_ROOT_PASSWORD=admin -v ./mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro -v ./mysql/var/lib/mysql:/var/lib/mysql/:rw -p 3307:3306 -d mysql:5.7
# launch prestashop container
docker run --name santic-prestashop --network prestashop-net -e DB_SERVER=santic-mysql -p 8000:80 -v /root/prestashop:/var/www/html -d prestashop/prestashop:8.2.1
- 手动安装
- 数据库服务器地址:填写容器名:santic-mysql
- 数据库名称:prestashop。数据库登录名:root。
- 数据库用户密码:admin。实际是看启动容器时,MYSQL_ROOT_PASSWORD=admin这个参数的具体数值。
- 服务器的 prestashop项目源码, 里面有个admin文件夹, 安装成功后,会被重命名。比如adminabc123456xxx
- 进入服务器,删除 install文件夹。
- 访问链接:http://xxxx.com/adminabc123456xxx进管理后台。链接以被重命名的admin文件夹名为准。
修改配置
- 数据库配置:vim ./app/config/parameters.php
<?php return array (
  'parameters' =>
  array (
    'database_host' => 'yourmysqladdr',
    'database_port' => '',
    'database_name' => 'prestashop',
    'database_user' => 'root',
- 开启调试模式:vim ./config/defines_custom.inc.php
// 在代码最后面最加,定义_PS_MODE_DEV_常量为true
define('_PS_MODE_DEV_', true);
定制外部电商平台商品链接
需求:
我在PrestaShop的管理后台,`分类` - `属性和功能` - `特性` 这个选项卡中,定义了一个名为 `link_url` 的新特性,用来定义外部网页的字符串。在商品中使用这个特性。使用方法是:如果使用了这个特性,就创建一个按钮,跳转到这个特性对应的外部网页。修改代码:
# vim themes/classic/templates/catalog/product.tpl
{if $product.features}
  {foreach $product.features as $feature}
    {if $feature.name == 'link_url' && $feature.value}
      <a href="{$feature.value|escape:'html':'UTF-8'}" 
         class="btn btn-primary external-link"
         target="_blank"
         rel="noopener noreferrer">
        {l s='访问亚马逊' d='Shop.Theme.Actions'}
      </a>
    {/if}
  {/foreach}
{/if}或者:
# vim themes/classic/templates/catalog/_partials/product-add-to-cart.tpl
    {block name='product_quantity'}
      <div class="product-quantity clearfix">
        <div class="qty">
          <input
            type="number"
            name="qty"
            id="quantity_wanted"
            inputmode="numeric"
            pattern="[0-9]*"
            {if $product.quantity_wanted}
              value="{$product.quantity_wanted}"
              min="{$product.minimal_quantity}"
            {else}
              value="1"
              min="1"
            {/if}
            class="input-group"
            aria-label="{l s='Quantity' d='Shop.Theme.Actions'}"
          >
        </div>
        <div class="add">
{if $product.features}
  {foreach $product.features as $feature}
    {if $feature.name == 'LinkUrl' && $feature.value}
      <a href="{$feature.value|escape:'html':'UTF-8'}"
         class="btn btn-primary external-link"
         target="_blank"
         rel="noopener noreferrer">
        <i class="material-icons shopping-cart"></i>
        {l s='Buy' d='Shop.Theme.Actions'}
      </a>
    {/if}
  {/foreach}
{/if}
<!--
          <button
            class="btn btn-primary add-to-cart"
            data-button-action="add-to-cart"
            type="submit"
            {if !$product.add_to_cart_url}
              disabled
            {/if}
            <i class="material-icons shopping-cart"></i>
            {l s='Add to cart' d='Shop.Theme.Actions'}
          </button>
-->
        </div>
        {hook h='displayProductActions' product=$product}
      </div>
    {/block}
 沙滩星空的博客
沙滩星空的博客