Ответить Новая тема Новый опрос 
Всего: 8 < 1 2 3 4 5 6 > »
 Иморт товара через админку csv
krot4u
Новичок
Сообщений: 9
Регистрация: 05-11-2009


05-11-2009 03:49
Здравствуйте !
Подскажите пожалуйста. что делать, если у меня существуют одинаковые подкатегории в разных категориях ?
Например сейчас у меня есть "cat1>test"
и так же "cat2>test"
т.е. одинаковое название у подкатегорий, которые тем не менее в разных категориях. Но когда импортирую, у меня только в одной категории "cat1" остается подкатегоря "test" из категории "cat2" исчезает подкатегория "test" :(
Что делать ?
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


05-11-2009 12:53
Вместо наименования подкатегории используйте его ID
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
krot4u
Новичок
Сообщений: 9
Регистрация: 05-11-2009


06-11-2009 01:25
Цитата:( Алекс @ 05-11-2009 08:53 Смотреть сообщение )
Вместо наименования подкатегории используйте его ID


Спасибо попробую, я уже через базу просто закатывал по уникальным ай ди :)
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ors
Профессионал
Сообщений: 1885
Регистрация: 09-11-2009


09-11-2009 18:17
Добавил этот фикс
Цитата:( Алекс @ 03-11-2009 22:34 Смотреть сообщение )
        // fix //
        if (preg_match('/[А-Яа-я]+/', $purified))
                $cyr = array('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', ' ');
                $lat = array('a', 'b', 'v', 'g', 'd', 'e', 'jo', 'zh', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', '', 'y', '', 'e', 'ju', 'ja', '_');
                $purified = mb_strtolower($purified, 'utf-8');
                $purified = str_replace($cyr, $lat, $purified);
        // fix //
[/code]

теперь на сервере ошибка неопределенной переменной $cyr вылазит, хотя на локалхосте все нормально. Возможно надо после if скобки добавить {}?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
anafor
Новичок
Сообщений: 7
Регистрация: 27-09-2009


02-12-2009 03:03
2 ors: похоже, надо
2 krot4u: если еще актуально, знаю как поправить чтобы можно было категории с одинаковыми именами добавлять, сам долго искал. Обращайтесь, выложу если надо.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
YellowDuck


Профессионал
Сообщений: 1054
Откуда: Ярославль
Регистрация: 29-09-2009


05-01-2010 00:29
Подскажите, плиз., как сделать экспорт в csv?
 



Интернет-магазин товаров для детей yellowduck.ru
Хороший хостинг для Prestashop и не только one-hosting.ru
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Serg77
Новичок
Сообщений: 8
Регистрация: 13-10-2009


08-01-2010 21:13
Цитата:( Алекс @ 03-11-2009 17:34 Смотреть сообщение )
Цитата:( Gorets @ 19-10-2009 21:41 Смотреть сообщение )
Подскажите понятный языком как решить
/classes/Tools.php
заменить функцию link_rewrite на
Код:
static public function link_rewrite($str, $utf8_decode = false)
    {
        $purified = '';
        $length = Tools::strlen($str);
        if ($utf8_decode)
            $str = utf8_decode($str);
        for ($i = 0; $i < $length; $i++)
        {
            $char = Tools::substr($str, $i, 1);
            if (Tools::strlen(htmlentities($char)) > 1)
            {
                $entity = htmlentities($char, ENT_COMPAT, 'UTF-8');
                $purified .= $entity;
            }
                            
            elseif (preg_match('|[[:alpha:]]{1}|u', $char))
                $purified .= $char;
            elseif (preg_match('<[[:digit:]]|-{1}>', $char))
                $purified .= $char;
            elseif ($char == ' ')
                $purified .= '-';
        }

        
        
        // fix //
        if (preg_match('/[А-Яа-я]+/', $purified))
                $cyr = array('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', ' ');
                $lat = array('a', 'b', 'v', 'g', 'd', 'e', 'jo', 'zh', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', '', 'y', '', 'e', 'ju', 'ja', '_');
                $purified = mb_strtolower($purified, 'utf-8');
                $purified = str_replace($cyr, $lat, $purified);
        // fix //

        return trim(self::strtolower($purified));
    }


Сделал как написано. Импорт вообще перестал работать. Ругается на переменные $cyr и $lat, что они не определены.
А также при импорте категорий:
Кондиционеры для белья невозможно сохранить
Category->link_rewrite = кондjoцjoонеры-для-белья для языка 1

при импорте товаров:

Warning: explode() [function.explode]: Empty delimiter in /home/httpd/vhosts/5pigs.ru/httpdocs/admin2101/tabs/AdminImport.php on line 261

Warning: array_map() [function.array-map]: Argument #2 should be an array in /home/httpd/vhosts/5pigs.ru/httpdocs/admin2101/tabs/AdminImport.php on line 262

Warning: array_map() [function.array-map]: Argument #2 should be an array in /home/httpd/vhosts/5pigs.ru/httpdocs/admin2101/tabs/AdminImport.php on line 263
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
UMkA82
Новичок
Сообщений: 2
Регистрация: 10-01-2010


10-01-2010 18:24
Цитата:( Алекс @ 03-11-2009 16:34 Смотреть сообщение )
Цитата:( Gorets @ 19-10-2009 21:41 Смотреть сообщение )
Подскажите понятный языком как решить
/classes/Tools.php
заменить функцию link_rewrite на
Код:
static public function link_rewrite($str, $utf8_decode = false)
    {
        $purified = '';
        $length = Tools::strlen($str);
        if ($utf8_decode)
            $str = utf8_decode($str);
        for ($i = 0; $i < $length; $i++)
        {
            $char = Tools::substr($str, $i, 1);
            if (Tools::strlen(htmlentities($char)) > 1)
            {
                $entity = htmlentities($char, ENT_COMPAT, 'UTF-8');
                $purified .= $entity;
            }
                            
            elseif (preg_match('|[[:alpha:]]{1}|u', $char))
                $purified .= $char;
            elseif (preg_match('<[[:digit:]]|-{1}>', $char))
                $purified .= $char;
            elseif ($char == ' ')
                $purified .= '-';
        }

        
        
        // fix //
        if (preg_match('/[А-Яа-я]+/', $purified))
                $cyr = array('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', ' ');
                $lat = array('a', 'b', 'v', 'g', 'd', 'e', 'jo', 'zh', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', '', 'y', '', 'e', 'ju', 'ja', '_');
                $purified = mb_strtolower($purified, 'utf-8');
                $purified = str_replace($cyr, $lat, $purified);
        // fix //

        return trim(self::strtolower($purified));
    }

Сделал все именно так, как на скриншоте, но проблема не ушла.
Добавил в файл AdminImport.php строку 'link_rewrite' => $this->l('URL rewrited'), но никаких результатов. Prestashop у меня русский ,версия 05.
3-й день по форумам, проблемы идентичные у людей решаются, а у меня что-то никак.
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ors
Профессионал
Сообщений: 1885
Регистрация: 09-11-2009


10-01-2010 19:35
У меня так работает (добавил скобки и символ номера). Обязательно надо сохранить файл в UTF-8.
Цитата:
static public function link_rewrite($str, $utf8_decode = false)
    {
        $purified = '';
        $length = Tools::strlen($str);
        if ($utf8_decode)
            $str = utf8_decode($str);
        for ($i = 0; $i < $length; $i++)
        {
            $char = Tools::substr($str, $i, 1);
            if (Tools::strlen(htmlentities($char)) > 1)
            {
                $entity = htmlentities($char, ENT_COMPAT, 'UTF-8');
                $purified .= $entity;
            }
                           
            elseif (preg_match('|[[:alpha:]]{1}|u', $char))
                $purified .= $char;
            elseif (preg_match('<[[:digit:]]|-{1}>', $char))
                $purified .= $char;
            elseif ($char == ' ')
                $purified .= '-';
        }

       
       
        // fix //
        if (preg_match('/[А-Яа-я]+/', $purified)){
                $cyr = array('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', ' ','№');
                $lat = array('a', 'b', 'v', 'g', 'd', 'e', 'jo', 'zh', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', '', 'y', '', 'e', 'ju', 'ja', '_','n');
                $purified = mb_strtolower($purified, 'utf-8');
                $purified = str_replace($cyr, $lat, $purified);
}
        // fix //

        return trim(self::strtolower($purified));
    }
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ors
Профессионал
Сообщений: 1885
Регистрация: 09-11-2009


10-01-2010 19:39
Также у импорта категорий есть особенность: когда в списке существует несколько категории с одинаковыми именами, но в разных разделах, то добавляется только первая из них. Чтобы добавились все, нужно в файле AdminImport.php удалить фрагмент:
Цитата:
$categoryAlreadyCreated = Category::searchByName($defaultLanguageId, $category->name[$defaultLanguageId], true);

// If category already in base, get id category back
if ($categoryAlreadyCreated['id_category'])
{
$catMoved[$category->id] = intval($categoryAlreadyCreated['id_category']);
$category->id = intval($categoryAlreadyCreated['id_category']);
}
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос 
Всего: 8 < 1 2 3 4 5 6 > »