我正在尝试使用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;чипсы-орехи-и-снаксы
请注意,第84行经过:
84;"Переведенные на финский книги";Книги;;http://localhost/images/potter.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行是正确的,它不是导致这种导入失败的语言,在法语中它会抛出相同的错误,因为有一个“;”在描述中的字符,我在这里看不到任何错误,我希望你们中的一个可以帮助我这个
提前谢谢!
答案 0 :(得分:0)
我没有找到合理的解释,所以我只是绕过并更改了link_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;
}
请记住在上传后还原更改
答案 1 :(得分:0)
“URL / SEO”标签中有一个设置允许或禁止非拉丁语(例如西里尔字母)字符。这段代码基本上都会检查这个。