Jump to content

Ergo

Пользователь
  • Content Count

    6
  • Joined

  • Last visited

Posts posted by Ergo

  1. Вдогонку сопутствующий вопрос - как показывать цену на странице товара, даже если товар кончился?

    В этом случае $product->variants перестает содержать данные - в том числе и цену при выводе данных в product.tpl и product_block.tpl

    Где это в коде логичнее поправить?

  2. При принятии админом заказа, кол-во товара, что в этом заказе, автоматически уменьшается в базе магазина.

    Подскажите пожалуйста - в каком месте кода это делается.

    Есть нужда иметь возможность отключить эту опцию.

  3. по другому сделал в api/Products.php

    добавил в запрос сразу задание сортировки через доп. запрос:
     

                    case 'position':
                    $order = '(SELECT IF(pv.stock>0,1,0) FROM __variants pv WHERE p.id = pv.product_id LIMIT 1) DESC, p.position ASC';
                    //$order = 'p.position ASC';
                    break;
    

     

     

    админку это не портит

  4. покопался сам.

     

    прайс загружается через файлик /simpla/ajax/import.php

    в принципе если в нем исправить значение количества товаров за один проход

        private $products_count        = 10;
    то можно просто его и вызывать кроном

     

    но поскольку мне нужно было еще проверять дату и забирать прайс я набросал небольшой скриптик на php, который решает нужную мне задачу.

     

    если кому нужно - пожалуста пользуйтесь

     

     

    <?php
    /*
    Модуль автоматического обновления прайса.
    проверяет нового прайса по ftp и при обнаружении оного - закачивает его в магазин
    
    файл зовется import_auto.php
    и живет в директории /simpla/ajax/
    
    вызывается через крон (каждый час)
    в урле должна быть авторизация
    
    0 * * * * wget -O /dev/null http://admin:admin@site_doamin1.ru/simpla/ajax/import_auto.php
    
    */
    
        // установка времени жизни скрипта
        set_time_limit(180);
    
        // скачка файла по ftp
        $ftp_server     = "8.8.8.8"; //адрес
        $ftp_dir        = "/";
        $ftp_user_name  = "login";
        $ftp_user_pass  = "pass";
        $ftp_file_price = "price.csv";
      
        $root_path      = $_SERVER['DOCUMENT_ROOT'];
        $loc_dir	    = $root_path."/simpla/files/import";
        $loc_file_price = "import.csv";
    
    
        // установка соединения
        $conn_id = ftp_connect($ftp_server, 21);
        $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
        ftp_pasv($conn_id, true);
    
        // проверям наличие файла прайса и берем его дату
        $ftp_file_time = ftp_mdtm($conn_id, "$ftp_dir/$ftp_file_price");
        if( $ftp_file_time < 0 ) {
          	print("ERROR: File $file_name Not Found in FTP"); 
            exit;
        }
        // если прайс еще старый - не суетимся
        if( $ftp_file_time <= filemtime("$loc_dir/$ftp_file_price") ) {
            print("INFO: price old\n");
            exit;
        }
        // забираем прайс
        if (!ftp_get($conn_id, "$loc_dir/$ftp_file_price", "$ftp_dir/$ftp_file_price", FTP_BINARY)) { 
            print("ERROR: File $ftp_file_price NOT copy from from FTP"); 
        }
    
    
        // Конвертируем файл из WIN1251 в UFT8
        $source = "$loc_dir/$ftp_file_price";
        $dest   = "$loc_dir/$ftp_file_price".".utf8";
    
        if(!$src = fopen($source, "r"))
            return false;
    	
        if(!$dst = fopen($dest, "w"))
            return false;
    	
        while (($line = fgets($src, 4096)) !== false)
        {
        $line = @iconv('windows-1251', 'UTF-8', $line);
            fwrite($dst, $line);
        }
        fclose($src);
        fclose($dst);
        if (!rename($dest, "$loc_dir/$loc_file_price")) {
            print("ERROR: File $loc_file_price NOT convert/rename"); 
        }
    
    
    
        // загрузка прайса в базу
        $chain_end  = false;
        $chain_from = 0;
        
        while (!$chain_end and $i<1000) {
            $_GET['from'] = $chain_from;
        
            ob_start();
            require_once('import.php');
            ob_end_clean();
        
            print("$chain_from from $chain_size ($chain_end) - ok\n");
        
            $chain = $import_ajax->import();
              $chain_from = $chain->{'from'};
              $chain_size = $chain->{'totalsize'};
              $chain_end  = $chain->{'end'};
        
            $i++;
            ob_flush();
        }
    
    
        print("OK: Price update! (size: $chain_size)");
    
    ?>
    
    ok
    

     

  5. В симпле прекрасно реализована загрузка прайса в CSV через админку.

     

    Подскажите пожалуйста, как автоматизировать ежедневный процесс обновления прайса, если автообновляемый CSV-файл доступен по некому урл-адресу типа http://domain.ru/price.cvs

     

    Т.е. нужен скрипт который заберет файл и зальёт его в симплу через страницу "импорт товаров" автоматически.

     

    а сам это скрипт вызывался бы по cron

×
×
  • Create New...