OsCommerce Vam Edition

[os commerce vam edition] Где отредактировать приветствие

Здравствуйте! На днях сделал сайт на движке os commerce vam edition.
И там как вы знаете , стандартное приветствие:

Добро пожаловать
Добро пожаловать, УВАЖАЕМЫЙ ГОСТЬ!
Если Вы наш постоянный клиент, введите Ваши персональные данные для входа. Если Вы у нас впервые и хотите сделать покупки, Вам необходимо зарегистрироваться.


Скачать прайс-лист (excel , html)
Ребят, где можно отредактировать это приветствие? :confused:
 
bigboch написал(а):
Ребят, где можно отредактировать это приветствие?

в русификации:
файл includes/languages/russian.php
найдете этот текст легко. Заметьте, что можно использовать html.
метатеги исправить в файле:
includes/languages/russian/header_tags.php


Sudba написал(а):
А не подскажите как переделать под vam шаблон из чистой oscommerce или creloaded может есть мануалка?

Мануала не видел, но переделывается легко. CSS - совпадает почти полностью, надо лишь блоки переразметить, возможно - некоторые боксы специально переоформить в шаблоне. Удобнее делать на STS версии (хоть у Vam, хоть от E-Shop). Смарти под это лучше всего подходит. Если нужна помощь - постучитесь в личку.
 
Никто модуль EMS не тестировал? Город отправки почему то не учитывает.
 
Никто модуль EMS не тестировал? Город отправки почему то не учитывает.
Потому что в модуле ряд грубых ошибок. Он вообще не пригоден для работы этот модуль.
1. Город отправки не учитывается, т.к. не приводится к транслиту функцией (см. следующую строку для города доставки).
2. Не учитывается регион вообще.
3. Функция перевода названия города в транслит не работоспособна. Например, как ни пыжтесь, но в Харабаровск вы не отправите ничего. Поскольку для EMS "Хабаровск" транслитерируется в "Khabarovsk", а у ВАМа в "habarovsk". И это не единственный пример. Но если вы попытаетесь исправить функцию транслита, то у вас отлетит отправка в другие города, где русская буква "х" правильно транслитерируется в "h".
4. Ряд регионов в EMS называются не так, как у почты России. В основном это касается республик, автономных областей и округов. Поэтому надо отдельную таблицу соответствия регионов магазина регионам EMS.

Словом, дорабатывать его еще и дорабатывать. И начать надо с того, что забить на транслит и использовать предоставляемую EMS возможность получения списка городв и регионов на русском и в транслите. И много чего еще.

Название этой идиотской функции: make_alias, находится в includes\functions\general.php
 
Я уже его переделал собственно. Теперь все работает. Инфа по городам получается с сайта EMS. Вот код рабочего модуля, если кому нужно.
PHP:
<?php
/*
  $Id: russianpostems.php,v 1.1.1.1 2003/09/18 19:04:54 wilt Exp $
  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com
  Copyright (c) 2003 osCommerce
  Released under the GNU General Public License
*/
  class russianpostems {
    var $code, $title, $description, $icon, $enabled;
// class constructor
    function russianpostems() {
      global $order;
      $this->code = 'russianpostems';
      $this->title = MODULE_SHIPPING_RUSSIANPOSTEMS_TEXT_TITLE;
      $this->description = MODULE_SHIPPING_RUSSIANPOSTEMS_TEXT_DESCRIPTION;
      $this->sort_order = MODULE_SHIPPING_RUSSIANPOSTEMS_SORT_ORDER;
      $this->icon = DIR_WS_ICONS . 'shipping_ems.jpg';
      $this->tax_class = MODULE_SHIPPING_RUSSIANPOSTEMS_TAX_CLASS;
      $this->enabled = ((MODULE_SHIPPING_RUSSIANPOSTEMS_STATUS == 'True') ? true : false);
      if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_RUSSIANPOSTEMS_ZONE > 0) ) {
        $check_flag = false;
        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_RUSSIANPOSTEMS_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
        while ($check = tep_db_fetch_array($check_query)) {
          if ($check['zone_id'] < 1) {
            $check_flag = true;
            break;
          } elseif ($check['zone_id'] == $order->delivery['zone_id']) {
            $check_flag = true;
            break;
          }
        }
        if ($check_flag == false) {
          $this->enabled = false;
        }
      }
    }
// class methods
    function quote($method = '') {
      global $order, $shipping_weight, $total_count;
        $this->quotes = array('id' => $this->code,
                            'module' => MODULE_SHIPPING_RUSSIANPOSTEMS_TEXT_TITLE,
                            'methods' => array(array('id' => $this->code,
                                                     'title' => MODULE_SHIPPING_RUSSIANPOSTEMS_TEXT_NOTE)));
        if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);
        $urlCities = 'http://emspost.ru/api/rest?method=ems.get.locations&type=cities';
        // create curl resource
        $ch = curl_init();
        //return the transfer as a string
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // set url
        curl_setopt($ch, CURLOPT_URL, $urlCities);
        $outCities = curl_exec($ch);
        //---- get city list
        $tocity = $order->delivery['city'];
        $citiesList = json_decode(utf8_encode($outCities), true);
        foreach ($citiesList['rsp']['locations'] as $city){
          if (strtolower(iconv("UTF-8", CHARSET, $city['name'])) == strtolower(MODULE_SHIPPING_RUSSIANPOSTEMS_CITY)){
            $from_city = $city['value'];
          }
          if (strtolower(iconv("UTF-8", CHARSET, $city['name'])) == strtolower($tocity)){
            $to_city = $city['value'];
          }
        }
    if ($from_city === null){
      $this->quotes['error']='Доставка из города '.MODULE_SHIPPING_RUSSIANPOSTEMS_CITY.' не производится!';
      return $this->quotes;
    } else if ($to_city === null){
      $this->quotes['error']='Доставка в город '.$order->delivery['city'].' не производится!';
      return $this->quotes;
    }
    //----
//Проверка на максимальный вес    
$urlWeight = 'http://emspost.ru/api/rest/?method=ems.get.max.weight';        
// create curl resource
        $ch = curl_init();
        //return the transfer as a string
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // set url
        curl_setopt($ch, CURLOPT_URL, $urlWeight);
        $outWeight = curl_exec($ch);
        $WeightList = json_decode($outWeight, true);
       foreach ($WeightList as $weight){
       $max_weight = $weight['max_weight'];
    if ($shipping_weight > $max_weight){
      $this->quotes['error']='Превышен максимально возможный вес одного отправления. Разбейте заказ на несколько частей.';
      return $this->quotes;
}
}
        $url = 'http://emspost.ru/api/rest?method=ems.calculate&from='.$from_city.'&to='.$to_city.'&weight='.$shipping_weight;
        curl_setopt($ch, CURLOPT_URL, $url);
        $output = curl_exec($ch);
        // close curl resource to free up system resources
        curl_close($ch);
        $contents = $output;
        $contents = utf8_encode($contents);
        $results = json_decode($contents, true);
        if ($results['rsp']['stat'] == 'fail'){
          $this->quotes['error'] = 'Ошибка: '.$results['rsp']['err']['msg'];
          return $this->quotes;
        }
    $shPrice = $results['rsp']['price'];
    if (MODULE_SHIPPING_RUSSIANPOSTEMS_DCVAL_PERCENT >0){
      $shPrice += $order->info['subtotal']*MODULE_SHIPPING_RUSSIANPOSTEMS_DCVAL_PERCENT/100;
    }
        $this->quotes['methods'][key($this->quotes['methods'])]['cost'] = $shPrice + MODULE_SHIPPING_RUSSIANPOSTEMS_HANDLING;
        $dlvr_min = $results['rsp']['term']['min'];
        $dlvr_max = $results['rsp']['term']['max'];
        if (($dlvr_min > 0) AND ( $dlvr_max > 0)){
          if ($dlvr_min == $dlvr_max){
            $this->quotes['methods'][key($this->quotes['methods'])]['title'] .= '<br /><i>(срок доставки '.$dlvr_max;
          } else {
            $this->quotes['methods'][key($this->quotes['methods'])]['title'] .= '<br /><i>(срок доставки '.$dlvr_min.' - '.$dlvr_max;
          }
          if ($dlvr_max == 1){
            $this->quotes['methods'][key($this->quotes['methods'])]['title'] .= ' день';
          } else if (($dlvr_max > 1) and ($dlvr_max < 5)){
            $this->quotes['methods'][key($this->quotes['methods'])]['title'] .= ' дня';
          } else {
            $this->quotes['methods'][key($this->quotes['methods'])]['title'] .= ' дней';
          }
          $this->quotes['methods'][key($this->quotes['methods'])]['title'] .= ') </i>';
        }
      if ($this->tax_class > 0) {
        $this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
      }
      return $this->quotes;
    }
    function check() {
      if (!isset($this->_check)) {
        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_RUSSIANPOSTEMS_STATUS'");
        $this->_check = tep_db_num_rows($check_query);
      }
      return $this->_check;
    }
    function install() {
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Разрешить модуль EMS Почта России', 'MODULE_SHIPPING_RUSSIANPOSTEMS_STATUS', 'True', 'Вы хотите разрешить модуль EMS Почта России?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Город отправки', 'MODULE_SHIPPING_RUSSIANPOSTEMS_CITY', 'Москва', 'Город отправки посылок.', '6', '0', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Стоимость', 'MODULE_SHIPPING_RUSSIANPOSTEMS_HANDLING', '0', 'Стоимость использования данного способа доставки.', '6', '0', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Налог', 'MODULE_SHIPPING_RUSSIANPOSTEMS_TAX_CLASS', '0', 'Использовать налог.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Зона', 'MODULE_SHIPPING_RUSSIANPOSTEMS_ZONE', '0', 'Если выбрана зона, то данный модуль доставки будет виден только покупателям из выбранной зоны.', '6', '0', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Порядок сортировки', 'MODULE_SHIPPING_RUSSIANPOSTEMS_SORT_ORDER', '0', 'Порядок сортировки модуля.', '6', '0', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Процентная ставка для объявленной ценности', 'MODULE_SHIPPING_RUSSIANPOSTEMS_DCVAL_PERCENT', '0', '0 - не учитывать, 1-100 - текущая процентная ставка из расчета суммы заказа', '6', '0', now())");
    }
    function remove() {
      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
    }
    function keys() {
      return array('MODULE_SHIPPING_RUSSIANPOSTEMS_STATUS', 'MODULE_SHIPPING_RUSSIANPOSTEMS_CITY', 'MODULE_SHIPPING_RUSSIANPOSTEMS_HANDLING', 'MODULE_SHIPPING_RUSSIANPOSTEMS_TAX_CLASS', 'MODULE_SHIPPING_RUSSIANPOSTEMS_ZONE', 'MODULE_SHIPPING_RUSSIANPOSTEMS_SORT_ORDER', 'MODULE_SHIPPING_RUSSIANPOSTEMS_DCVAL_PERCENT');
    }
  }
?>
 
Спасибо за идею с весом! Надо будет реализовать, только желательно сделать автоматическую разбивку на посылки, чтобы сразу считало стоимость N посылок, как в модуле обычной почты и наложки. Это не сложно, если не искать оптимальный по стоимости вариант разбивки.
 
Разбивка на количество посылок это вообще спорнвй вопрос. А если одна единица товара весит более ограничения. Предположим нечто весит 35 кг, ну сделаете Вы разбивку количество, ну выдаст модуль две посылки, а дальше что? Пилить будете товар?
 
Мда.. В принципе не сложно проверить и количество позиций на единицу упаковки. Хотя тут личное дело каждого, как сделать. У меня просто нет и не планируется товаров, которые весят более 7-10 кг. А совсем запрещать доставку я бы не стал. Лучше напишите, что следует уточнить у оператора возможность отправки данным методом. Хотя не каждый покупатель будет задавать вопрос.

Сложнее определить габаритность данного товара. Вот тут будет точно засада. Надо учесть, что EMS, почта, не важно кто еще не доставляют посылки с определенными параметрами, скажем, более 300 см в периметре, по трем сторонам или фиг знает еще каким извращенным способом посчитанные. Решить программно задачу упаковки объемных товаров чрезвычайно сложно.
 
Лучше напишите, что следует уточнить у оператора возможность отправки данным методом
А чем это будет лучьше чем
Превышен максимально возможный вес одного отправления. Разбейте заказ на несколько частей.
 
В обоих случаях - плохо. Но во втором случае мы мало того, что заставляем клиента думать каким образом он должен все это разбить, так еще и не понятно, каак разбить, если: нечто весит 35 кг и это нечто 1 штука. Как клиент пилить будет? Словом, если заказ в приницпе не разбиваем на стороне клиента, то уж лучше пусть Вы это сделаете за него, чем клиент уйдет вовсвояси.
 
Назад
Сверху