Курсы валют вручную

Тема в разделе "Управление товарами, атрибутами, свойствами и цена", создана пользователем delph.er, 26.11.2010.

  1. Offline

    delph.er Недавно здесь

    Регистрация:
    26.11.2010
    Сообщения:
    3
    Симпатии:
    5
    Пол:
    Мужской
    ВНИМАНИЕ: Те, кто уже установил код на сайт, прошу обратить внимание, что в коде была обнаружена ошибка!
    Нужно в файле convertMCR.php удалить строку
    Код (PHP):
    1. $_SESSION['product_currency'] = $GLOBALS['product_currency'] = $vendor_currency;

    Прошу извинить за неудобства. В остальном хак вполне рабочий.

    Потратил ночь, чтобы найти что-то стоящее по теме. Ничего, в нете сплошная муть. Вот решил проблему:
    ПРЕДСТАВЛЯЕМ ВАШЕМУ ВНИМАНИЮ - Virtuemart 1.1.5 Core Hack!
    Курсы валют храняться в базе данных, меняются в настройках валюты.

    Скриншоты для наглядности
    [​IMG]
    [​IMG]

    В архиве есть все измененные файлы и скрипт для базы.
    НАПОМИНАЮ у меня версия VM 1.1.5 - для более ранних установка хака простой заменой файлов НЕ РЕКОМЕНДУЕТСЯ

    Теперь как всё это делается так сказать в ручном режиме:

    1. Находим файл administrator/components/com_virtuemart/html/admin.curr_form.php
    и добавляем поле для ввода курса валюты

    после строк
    Код (html):
    1. <tr>
    2.       <td width="24%" align="right"><?php echo $VM_LANG->_('PHPSHOP_CURRENCY_LIST_CODE') ?>:</td>
    3.       <td width="76%">
    4.         <input type="text" class="inputbox" name="currency_code" value="<?php $db->sp("currency_code") ?>" />
    5.       </td>
    6.     </tr>


    вставляем
    Код (html):
    1. <tr>
    2.       <td width="24%" align="right"><?php echo $VM_LANG->_('PHPSHOP_CURRENCY_LIST_RATE') ?>:</td>
    3.       <td width="76%">
    4.         <input type="text" class="inputbox" name="currency_rate" value="<?php $db->sp("currency_rate") ?>" />
    5.       </td>
    6.     </tr>


    2. Выводим курс валюты в списке валют
    Открываем файл administrator/components/com_virtuemart/html/admin.curr_list.php
    после строк
    Код (PHP):
    1. $columns = Array(  "#" => "width=\"20\"",
    2.                     "<input type=\"checkbox\" name=\"toggle\" value=\"\" onclick=\"checkAll(".$num_rows.")\" />" => "width=\"20\"",
    3.                     $VM_LANG->_('PHPSHOP_CURRENCY_LIST_NAME') => "",
    4.                     $VM_LANG->_('PHPSHOP_CURRENCY_LIST_CODE') => "",


    вставляем строку
    Код (PHP):
    1. $VM_LANG->_('PHPSHOP_CURRENCY_LIST_RATE') => "",


    а после строки
    Код (PHP):
    1. $listObj->addCell( $db->f("currency_code") );


    ставим строку
    Код (PHP):
    1. $listObj->addCell( $db->f("currency_rate") );


    3. Делаем, чтобы курсы валют сохранялись в базе
    Открываем файл administrator/components/com_virtuemart/classes/ps_currency.php
    В функцию validate_add и validate_update (проверка ввода при добавлении/изменении валюты) ставим:
    Код (PHP):
    1. if (!$d["currency_rate"]) {
    2. $GLOBALS['vmLogger']->err( $VM_LANG->_('VM_CURRENCY_ERR_RATE') );
    3. return False;
    4. }

    В функцию add после строк
    Код (PHP):
    1. $fields = array( 'currency_name' => vmGet($d, 'currency_name' ),
    2. 'currency_code' => vmGet($d, 'currency_code' ),

    добавляем строку
    Код (PHP):
    1. 'currency_rate' => vmGet($d, 'currency_rate' )

    в функции update после
    Код (PHP):
    1. $fields = array( 'currency_name' => vmGet($d, 'currency_name' ),
    2.                     'currency_code' => vmGet($d, 'currency_code' ),

    ставим
    Код (PHP):
    1. 'currency_rate' => vmGet($d, 'currency_rate' )


    4. Делаем конвертацию
    В директории administrator/components/com_virtuemart/classes/currency/
    создаём файлик convertMCR.php
    В нём пишем:
    Код (PHP):
    1. <?php
    2. if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
    3.  
    4. class convertMCR {
    5.    
    6.     /**
    7.      * Initializes the global currency converter array
    8.      *
    9.      * @return mixed
    10.      */
    11.      
    12.     function init() {
    13.         global $mosConfig_cachepath, $mosConfig_absolute_path, $vendor_currency, $vmLogger;
    14.         $db = new ps_DB;
    15.         $query = 'SELECT * FROM #__{vm}_currency';
    16.         $db->query($query);
    17.         while ($db->next_record())
    18.         {
    19.             $currency[$db->f('currency_code')] = (float)$db->f('currency_rate');
    20.         }
    21.         $GLOBALS['converter_array'] = $currency;
    22.         return true;
    23.     }
    24.    
    25.     function convert( $amountA, $currA='', $currB='' ) {
    26.         global $vendor_currency;
    27.    
    28.         // global $vendor_currency is DEFAULT!
    29.         if( !$currA ) {
    30.             $currA = $vendor_currency;
    31.         }
    32.         if( !$currB ) {
    33.             $currB = $GLOBALS['product_currency'];
    34.         }
    35.         // If both currency codes match, do nothing
    36.         if( $currA == $currB ) {       
    37.             return $amountA;
    38.         }
    39.         if( !$this->init()) {
    40.             $GLOBALS['product_currency'] = $vendor_currency;
    41.             return $amountA;
    42.         }
    43.         $valA = isset( $GLOBALS['converter_array'][$currA] ) ? $GLOBALS['converter_array'][$currA] : 1;
    44.         $valB = isset( $GLOBALS['converter_array'][$currB] ) ? $GLOBALS['converter_array'][$currB] : 1;
    45.        
    46.         $val = $amountA * $valB / $valA;
    47.         //$vmLogger->debug('Converted '.$amountA.' '.$currA.' to '.$val.' '.$currB);
    48.        
    49.         return $val;
    50.     } // end function convertecb
    51. }
    52. ?>

    Этот конвертер вместо XML со стороннего сайта берет курсы из базы

    5. Устанавливаем наш конвертер
    Идем в настройки VirtueMart в админке и в разделе Настройки-Настройки
    прокручиваем вниз, где Дополнительные настройки в выпадающем списке:
    Выберите модуль конвертора валют выбираем наш convertMCR.php, и жмем Сохранить

    6. Теперь самое важное (без чего не будет работать), в базе данных в таблице jos_vm_currency
    нужно добавить поле currency_rate.
    В архиве есть скриптик currency_rate_add.sql, который надо импортировать в базу.

    7. Наводим красоту. Теперь нужно поменять языковые файлы, чтобы появились надписи где надо
    открываем administrator/components/com_virtuemart/languages/common/russian.php (для русского)
    и после
    Код (PHP):
    1. 'VM_CURRENCY_ERR_NAME' => 'Введите, пожалуйста название валюты.',
    2. 'VM_CURRENCY_ERR_CODE' => 'Введите, пожалуйста, код валюты.',

    (это в районе 1280 строки)
    вставляем
    Код (PHP):
    1. 'VM_CURRENCY_ERR_RATE' => 'Введите, пожалуйста, курс валюты.',

    Теперь открываем administrator/components/com_virtuemart/languages/admin/russian.php
    и после
    Код (PHP):
    1. 'PHPSHOP_CURRENCY_LIST_NAME' => 'Название валюты',
    2. 'PHPSHOP_CURRENCY_LIST_CODE' => 'Код валюты',

    вставляем
    Код (PHP):
    1. 'PHPSHOP_CURRENCY_LIST_RATE' => 'Курс валюты',


    8. Идем в админку магазина, в настройки, список валют, кликаем на валюту, выставляем
    нужный курс и готово :)
     

    Вложения:

    • converter.zip
      Размер файла:
      47.3 КБ
      Просмотров:
      284
    Последнее редактирование: 31.03.2011
    blikblik, mandrik, GAMBLER и 2 другим нравится это.
  2.  
  3. Offline

    ivanesx2008 Недавно здесь

    Регистрация:
    10.03.2009
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    После внедрения хака перестала работать авторизация в Virtuemart 1.1.6
     
  4. Offline

    delph.er Недавно здесь

    Регистрация:
    26.11.2010
    Сообщения:
    3
    Симпатии:
    5
    Пол:
    Мужской
    Интересно, с Virtuemart 1.1.6 я не тестировал.
    Могу предположить, что это как-то связанно с изменениями в базе данных.
    На самом деле хак работает очень просто - добавлено поле в таблице валют, чтобы сохранять курс, изменен интерфейс модуля настройки валют в ВМ, и дополнительный модуль конвертации валют вот и всё.
    Даже не знаю как это может быть связанно с авторизацией.
    Если сможете разобраться в чём причина - отпишитесь, пожалуйста. Спасибо.
     
  5. Offline

    ivanesx2008 Недавно здесь

    Регистрация:
    10.03.2009
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Я прошу прощения за поспешные выводы! Все работает пока-что отлично. Регистрация не работала из-за плагина для создания перекрестных ссылок SeoLinks. После отключения онного все заработало.

    Спасибо за хак!)
     
  6. Offline

    antikiller Недавно здесь

    Регистрация:
    05.04.2011
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Подскажите деревянному, только начинаю юзать джумлу. где найти jos_vm_currency???
     
  7. Offline

    dorond Недавно здесь

    Регистрация:
    11.04.2011
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Огромное спасибоо[!]
     
  8. Offline

    Алехадро Недавно здесь

    Регистрация:
    26.05.2011
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    А как в категории вывести цену в двух валютах?

    т.е. сейчас, например 2800 руб.
    а нужно 2800 руб. (70 eur)
     
  9. Offline

    mandrik Недавно здесь

    Регистрация:
    22.12.2009
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Большое спасибо, простое, красивое решение. Лучшее из того что я видел. Спасибо!
     
  10. Offline

    sergsw Недавно здесь

    Регистрация:
    26.06.2011
    Сообщения:
    13
    Симпатии:
    1
    Пол:
    Мужской
    Я считаю не стоит браться за создание сайта если ты не подготовлен необходимо сначала подковаться а потом уже скакать
     
  11. Offline

    dgeday4ik Недавно здесь

    Регистрация:
    22.08.2011
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    А подскажите для virtuemart 1.1.4 кто нибудь пробовал работает???
     
  12. Offline

    Al195 Недавно здесь

    Регистрация:
    21.02.2010
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо, все работает.
     
  13. Offline

    Julian Недавно здесь

    Регистрация:
    19.09.2011
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Здравствуйте!
    Столкнулся с такой проблемой:
    Все поставил, все шикарно работало аж целых 2 дня! Потом когда начал настраивать модули доставки все пошло наперекосяк :(
    Ну не совсем все но курсы валют при заданном в админке, например, грн-1.00 руб-4.03 ввыводит стоимость в гривнах правильную 1100, а в рублях RUB 47 794.45
    Методом пересмотра "по верхам" было выяснено что вместо convertMCR.php используется convertECB.php и при смене в выпадающем списке в админке и сохранении ничего не меняется!
    Как поменять HELP ME!
     
  14. Offline

    fishgrup@gmail.com Недавно здесь

    Регистрация:
    24.10.2011
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    У меня округляются курсы валют 8.55 до 9, 7.45 до 7 как убрать это, и что бы пересчитывало по человечески.
     
  15. Offline

    Vasil-jim Недавно здесь

    Регистрация:
    16.11.2011
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Добрый день!
    все сделал как написано в статье, в итоге получил интересный результат:)
    vm 1.1.9
    установил USD - > 30.66
    товар стоит 1000USD

    отображается цена 1р.
    Что может быть не так?
     
  16. Offline

    Серега Чалый Недавно здесь

    Регистрация:
    11.08.2011
    Сообщения:
    10
    Симпатии:
    0
    Пол:
    Мужской
    delph.er
    Вот такой вопрос есть, у меня проблема в том, что нужно сделать привязку цен на сайте к курсу валюты, т.е. на сайте цены в гривнах, но они должны привязываться к ценам в евро, чтобы при колебаниях курса, я мог менять все цены на сайте просто редактированием курса евро. Можно ли это реализовать с помощью данного хака и как?
     
  17. Offline

    Russfox Недавно здесь

    Регистрация:
    21.01.2011
    Сообщения:
    29
    Симпатии:
    3
    Пол:
    Мужской
    Можно, основная валюта - гривны, а в админке цены в евро у всех товаров сделать нужно.
    Потом уже только курс менять и все.
     
  18. Offline

    Серега Чалый Недавно здесь

    Регистрация:
    11.08.2011
    Сообщения:
    10
    Симпатии:
    0
    Пол:
    Мужской
    А как выставить основную валюту, что-то я не понял.
    Имеется ввиду в админ панеле вм изменить у всех товаров цену на евро?
     
  19. Offline

    bulkak Недавно здесь

    Регистрация:
    16.05.2012
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо!! Заюзал на 1.1.9, все работает!
     
  20. Offline

    mix_mike Недавно здесь

    Регистрация:
    19.02.2012
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо, работает [!]
     
  21. Offline

    katjuha6 Недавно здесь

    Регистрация:
    03.11.2011
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Женский
    Все классно работает! офигенное спасибо! =) самый адекватный из всех, которые пробовала, а было их много. :crazy:
     

Поделиться этой страницей

Загрузка...