Php 在prestashop中上载类别语言错误

Php 在prestashop中上载类别语言错误,php,csv,import,prestashop,Php,Csv,Import,Prestashop,我正在尝试使用Prestashop自己的CSV导入将类别从osCommerce 2.2迁移到最新的Prestashop。我成功上传了英语、芬兰语、德语、意大利语和法语。我现在面临着俄语的问题。CSV文件在第85-86行之前导入正常,如下所示: 85;"Соусы для чипсов";"Чипсы, орехи, и снаксы";;http://localhost/images/pepper.jpg;соусы-для-чипсов 86;"Чипсы, орехи, и снаксы"

我正在尝试使用Prestashop自己的CSV导入将类别从osCommerce 2.2迁移到最新的Prestashop。我成功上传了英语、芬兰语、德语、意大利语和法语。我现在面临着俄语的问题。CSV文件在第85-86行之前导入正常,如下所示:

85;"Соусы для чипсов";"Чипсы, орехи, и снаксы";;http://localhost/images/pepper.jpg;соусы-для-чипсов

86;"Чипсы, орехи, и снаксы";"Финские продукты питания";"<strong>Внимание! ПРОЧИТАЙТЕ ПРЕЖДЕ, ЧЕМ СДЕЛАТЬ ЗАКАЗ</strong>Поскольку пакеты со снаксами занимают очень много места, нам приходится закладывать в стоимость их доставки двойной вес, т.е., например, для пакета весом 250 г. стоимость доставки будет такой же, как для 500 г. более плотного товара.""<em>Стоимость доставки определяется по объемному весу или по фактическому весу, в зависимости от того, что больше.</em>""<a target=""_blank"" href=""http://www.posti.fi/hinnat/paketitulkomaille/"">http://www.posti.fi</a>";http://localhost/images/sips.jpg;чипсы-орехи-и-снаксы
要为您澄清CSV,请执行以下操作:

ID;Name;Parent;Description;Img_uri;Url_rewrite
它抛出一个长错误,但突出显示在开始处:

Чипсы, орехи, и снаксы (ID: null) cannot be saved
Property Category->link_rewrite is not valid
Соусы для чипсов (ID: 85) cannot be saved
Чипсы, орехи, и снаксы (ID: 86) cannot be saved
由于某种原因,ID为空,这可能是原因还是症状

SEO链接重写是从SQL中的类别名称转换而来的,如下所示:

LOWER(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(cd.categories_name, ' ', '-'), "\'", ''), ',', ''), '.', '-'), '&', ''), '(', '-'), ')', '-'), '!', ''), '/', '-'), '+', '-'), ';', '')) AS URL_rewrite
我知道这是一个非常丑陋的方法,但据我所知,这是我唯一最好的选择

注意到前80行正确地通过了,不是语言没有通过这个导入,在法语中它抛出了相同的错误,因为描述中有一个“;”字符,我看不出这里有任何错误,我希望你们中的一个能帮助我


提前谢谢你

我没有找到一个合理的解释,所以我只是四处转转,更改了link\u rewrite验证,不管发生什么,都返回true。已检查,链接正常。希望有一天这能帮助别人

在ROOT/Classes/Validate.php中

第325行:

public static function isLinkRewrite($link)
{
    if (Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL'))
        return preg_match('/^[_a-zA-Z0-9\-\pL]+$/u', $link);
    return preg_match('/^[_a-zA-Z0-9\-]+$/', $link);
}
将其更改为:

public static function isLinkRewrite($link)
{
    if (Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL'))
    //  return preg_match('/^[_a-zA-Z0-9\-\pL]+$/u', $link);
    //return preg_match('/^[_a-zA-Z0-9\-]+$/', $link);
    return true;
}

只需记住在上传后恢复更改

URL/SEO选项卡中有一个允许或不允许非拉丁(例如西里尔)字符的设置。这段代码基本上检查了这一点。

您的答案太短了
public static function isLinkRewrite($link)
{
    if (Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL'))
    //  return preg_match('/^[_a-zA-Z0-9\-\pL]+$/u', $link);
    //return preg_match('/^[_a-zA-Z0-9\-]+$/', $link);
    return true;
}