如何覆盖prestashop 1.7以允许产品标题中的#

时间:2017-07-06 10:23:52

标签: php override prestashop prestashop-1.7

我需要调整或覆盖哪些文件才能使prestashop 1.7让我在产品标题中使用#符号?

我搜索了Google并尝试了以前版本的prestashop中使用的不同方法(比如编辑validate.php文件等),但它们都没有任何区别。

我在prestashop论坛上问了这个问题,并且被告知他们不建议覆盖它,因为它是一个html标签,并被告知使用音乐符号代替锐利,然后我问这会对搜索结果做些什么因为人们使用标签符号而不是音乐符号进行搜索,以及为什么像shopify这样的其他平台(实际上是相同的)没有采用相同的限制,现在没有人在谈论它。

请注意我是编码的新手,所以一步一步的指南会很棒。我试图尽可能详细,但如果有人需要更多信息,请询问。

正如评论中所述,这是prestashop论坛问题的链接。 https://www.prestashop.com/forums/topic/617693-how-do-i-use-in-product-title/

2 个答案:

答案 0 :(得分:0)

在PrestaShop V1.5中的产品名称/标题字段中允许#符号

我遇到了同样的问题。您可以通过创建简单的覆盖来解决此问题。这样做可确保Prestashop的更新将根据需要安装和运行。这不会改变任何主要的后端代码,它只是扩展了一个函数。

创建一个新文件并将其命名为 Validate.php - 将以下内容粘贴到其中。

<?php
class Validate extends ValidateCore
{
    /**
     * Check for product or category name validity
     *
     * @param string $name Product or category name to validate
     * @return bool Validity is ok or not
     */
    public static function isCatalogName($name)
    {
        return preg_match(Tools::cleanNonUnicodeSupport('/^[^<>;={}]*$/u'), $name);
    }
}

然后需要保存/上传此新文件。的 /override/classes/Validate.php

最后一步:您需要从服务器中删除单个文件: /cache/class_index.php 。然后,在您下一次加载管理区域时,将自动重新创建此文件。新的class_index将包含您的新覆盖,您可以开始在产品名称中添加带#字符的产品。

就是这样!

了解creating overrides in Prestashop。如果您对删除class_index.php文件犹豫不决,请不要担心,这很常见。 You can read about deleting that file here

答案 1 :(得分:0)

我找到的唯一解决方案是更改此文件中的模式:

\ SRC \ PrestaShopBundle \表格\管理员\产品\ ProductInformation.php

第145行改变

pattern' => '/[<>;=#{}]/'

pattern' => '/[<>;={}]/'

希望这有帮助。 干杯