Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

0 Пользователей и 1 Гость просматривают эту тему.
  • 33 Ответов
  • 25336 Просмотров
*

rnr

  • Новичок
  • 6
  • 0 / 0
Задачка такая - товар заводится в базу с долларовой ценой, а отображаться пользователю должна рублевая цена. Причем, курс может:
1. менятся ручками
2. в идеале, из инета подставлялся бы текущий курс ЦБ

К сожаленю, в ПХП - деревянный как папа Буратино :( , но пытаюсь разобраться.

Буду признателен, за ссылку как на готовые решения, так и за подсказку, какие файлы копать.

Чтение архивов форума ясности в вопрос не внесли :(
« Последнее редактирование: 14.05.2009, 22:07:22 от beagler »
*

ButuzOFF

  • Захожу иногда
  • 144
  • 22 / 2
*

rnr

  • Новичок
  • 6
  • 0 / 0
Оно. Только ясности пока не внесено.  >:(
Плохо быть деревянным, особенно сверху  :(
*

ButuzOFF

  • Захожу иногда
  • 144
  • 22 / 2
Ну извини меня этот вопрос пока не трогает ,а то решали бы вместе ^-^
Единственное что могу сказать глянь те файлы которые автор в аттаче прицепил
И попробуй сделать по аналогии в папке administrator/component/com_virtumart/ps_currency.php и ps_product.php
Обрати внимание на класс (class) Ну или просто замени (авось проканает)
Попробуй написать автору в личку может ответит (а может и готовое решение даст)
P.S Я кстати тоже "спец" в php и html ;D
*

rnr

  • Новичок
  • 6
  • 0 / 0
Я час потратил, что бы хотя бы найти где эти файлы лежат  ;D
Так что спасибо за помощь, буду ковырять!
*

ivashka

  • Новичок
  • 6
  • 0 / 0
Оно или обшибся? ^-^
http://ru-mambo.ru/smf/index.php/topic,11897.0.html

слишком старый там хак... на новых версиях не работает.

Кто как решил вопрос??? срочно надо
*

ivashka

  • Новичок
  • 6
  • 0 / 0
отсюда:
http://virtuemart.net/index.php?option=com_smf&Itemid=71&topic=15464.90

Цитировать
Okay, let's do this right - for the benefit of everyone...

First, you need the class file "class_xe_curr_conv.php" uploaded to your classes folder, and the Flag images uploaded to "/components/com_virtuemart/shop_image/flags/" folder. (See the files attached at the bottom of this post   )

Then in shop.browse.php...

Top section should look like this:

/* load important class files */
require_once (CLASSPATH."ps_product.php");
$ps_product = new ps_product;
require_once (CLASSPATH."ps_product_category.php");
$ps_product_category = new ps_product_category;
require_once (CLASSPATH."ps_reviews.php");

require_once( CLASSPATH.'class_xe_curr_conv.php' );
$curr = new CURRENCYCONVERTER();

then where the price is called:

   
/** Price: xx.xx EUR ***/
if (_SHOW_PRICES == '1' && $auth['show_prices']) {
$img_path = $mosConfig_live_site . "/components/com_virtuemart/shop_image/flags/";
$product_price = $ps_product->show_price( $db_browse->f("product_id") );
$price = $ps_product->get_price( $db_browse->f("product_id") );
//echo $price['product_price'];
if( !empty( $price['product_price'] ) || $price['product_price']!="0.00") {
$CAD = "Price in <img src=\"" . $img_path . "CAD.gif\" alt=\"Canadian Dollars\">";
//number_format($curr->convert($amt,$to,$from), 2)
$USD = "$ " . number_format($curr->convert( $price['product_price'], 'USD', 'CAD' ), 2) . " <img src=\"" . $img_path . "USD.gif\" alt=\"US Dollars\">";
$GBP = "&pound; " . number_format($curr->convert( $price['product_price'], 'GBP', 'CAD' ), 2) . " <img src=\"" . $img_path . "GBP.gif\" alt=\"British Pounds\">";
} else {
$CAD = "";
$USD = "";
$GBP = "";
} else {
$product_price = "";
}
then the template replacements:
$product_cell = str_replace( "{product_price}", $product_price, $product_cell );
$product_cell = str_replace( "{CAD}", $CAD, $product_cell );
$product_cell = str_replace( "{USD}", $USD, $product_cell );
$product_cell = str_replace( "{GBP}", $GBP, $product_cell );

Now, for shop.product_details.php:

require_once( CLASSPATH.'class_xe_curr_conv.php' );
$curr = new CURRENCYCONVERTER();

just after the other class files are called, then the price section again:

/** PRODUCT PRICE **/
if (_SHOW_PRICES == '1') { /** Change - Begin */
$img_path = $mosConfig_live_site . "/components/com_virtuemart/shop_image/flags/";
$product_price = $ps_product->show_price( $product_id );
$price = $ps_product->get_price( $product_id );
if( empty( $price['product_price'] ) || $price['product_price']=="0.00") {
   
$CAD = "";
$USD = "";
$GBP = "";
} else {
$CAD = "Price in <img src=\"" . $img_path . "CAD.gif\" alt=\"Canadian Dollars\">";
$USD = "$ " . number_format($curr->convert( $price['product_price'], 'USD', 'CAD' ), 2) . " <img src=\"" . $img_path . "USD.gif\" alt=\"US Dollars\">";
$GBP = "&pound; " . number_format($curr->convert( $price['product_price'], 'GBP', 'CAD' ), 2) . " <img src=\"" . $img_path . "GBP.gif\" alt=\"British Pounds\">";
   
// added link to XE.com here, comment out or remove if you dont want, remember to comment out or remove
// the {$conv} template replacement if you take out the link
$conv = "<span class=\"smalldark\">Conversion by<br><a href=\"http://www.xe.com\" class=\"smalldark\" target=\"_blank\">XE.com</a></span>";
}
} else {
$product_price = "";
}

I add a little link to XE.com here (the $conv = "" part - you can leave it in or take it out) - next, the template replacement section:

$template = str_replace( "{product_price}", $product_price, $template );
$template = str_replace( "{CAD}", $CAD, $template );
$template = str_replace( "{USD}", $USD, $template );
$template = str_replace( "{GBP}", $GBP, $template );
// comment out or remove the next line if you dont want the XE.com link
$template = str_replace( "{conv}", $conv, $template );

That's it!


Кто в PHP гуру???
помогите переделать хак, так чтобы он работал с USD, RUB, EUR и курс брал не из интернета а  из  поля currency_rate, добавленного в таблицу *_vm_currency ручками, содержащее значение обменного курса каждой валюты по отношению к валюте по умолчанию.

[вложение удалено Администратором]
*

inc!

  • Осваиваюсь на форуме
  • 32
  • 7 / 1
Действительно очень нужно.

Урра! У меня получился самописный хак! Щас буду писать как это делать. Так как 2 дня потратил на это. Думаю многим очень понадобиться как и мне.

Задача и описание ситуации:
При возделывании магазина на Джумле 1.0.12 + Virtuemart RE 1.0.12 досталась база товаров цена которых в базе была в долларах. Так как Виртумарт одновалютный и не позволяет конвертировать валюту при выводе товаров на сайте в рублях, то пришлось залезть в /administrator/components/com_virtuemart/classes/ps_product.php и в function show_price изменить строку
Код
$base_price = $base_price_info["product_price"];
на
Код
// Расчёт базовой цены по курсу 25руб за 1$
// $base_price = ($base_price_info["product_price"])*25;
Но это было тупое умножение цены товара на 25 и не позволяла клиенту менять курс по своему умотрению без моей помощи. Так что нужно было сделать чё нить другое, более полезное и удобное. Не вздумайте вставлять вышеописанный код, дочитайте до конца…))
Нужно было найти хак или модуль по конвертации с возможностью изменения курса на каждую валюту отдельно. Чего я так и не нашёл ни на одном из ворумов.

Итак, как я уже сказал искал 2 дня этот хак на форуме http://forum.virtuemart.ru, а так же на этом форуме. Но ничего не нашёл ни по поиску ни по другим параметрам. Набрёл вот на эту тему с хорошей ссылкой на http://ru-mambo.ru/smf/index.php/topic,11897.0.html.
Возникла идея доделать и немного отредактировать то что нужно многим из нас. Далее пошагово:
1)    Заходим в БД магазина и в таблице jos_vm_currency создаём дополнительное поле currency_curs (я назвал его currency_curs, SB назвал свой «currency_rate», то так как я русский человек то слово «курс(curs)» мне болиже чем «рэйт(rate)»), с типом данных «decimal(11,2), значение по умолчанию 1 ибо если будет 0, то цена превратиться в 0, если неправильно будет выбрана валюта отображения товара на сайте.
2)    Далее нам нужно поле формы в админке для редактирования стоимости каждой из валют.
    Заходим в админке: в компонент магазина -> Настройки -> Валюта –> Список валют. Выбираем валюту нажатием на её ссылку. Видим 2 поля формы: Название и код валюты, которые беруться из вышеописанной базы. Нам нужно добавить 3-е поле ввода для редактирования курса этой валюты.
/administrator/components/com_virtuemart/html/admin.curr_form.php – ищем HTML+PHP код :   
 
Код
   <tr>
      <td width="24%" align="right"><?php echo $VM_LANG->_PHPSHOP_CURRENCY_LIST_CODE ?>:</td>
      <td width="76%">
        <input type="text" class="inputbox" name="currency_code" value="<?php $db->sp("currency_code") ?>" />
      </td>
    </tr>
Добавляем под ним новую строку таблицы:
Код
    <tr>
      <td width="24%" align="right">Курс в рублях:</td>
      <td width="76%">
        <input type="text" class="inputbox" name="currency_curs" value="<?php $db->sp("currency_curs") ?>" />
      </td>
    </tr>
Лично мне было влом в лэнгвиче добавлять новую переменную, и тупо написал «Курс в рублях:». Кому надо можете поставить свой текст по личному желанию.
3)   Теперь нужно сделать так чтоб новая строка формы «Курс в рублях» брала значения из БД и если надо то редактировала, при апдэйте или создании новой валюты. Короче делаем её функциональной:
/administrator/components/com_virtuemart/classes/ps_currency.php – ищем заветный код со словами Инсерт и Апдэйт.))
function add – в этой функции добавляем обработчик нового поля в таблице «Куренси» нашей БД. Заменяем похожее на это:
Код
    $q = "INSERT INTO #__{vm}_currency (currency_name, currency_curs, currency_code)";
    $q .= " VALUES ('";
    $q .= $d["currency_name"] . "','";
    $q .= $d["currency_curs"] . "','";
    $q .= $d["currency_code"] . "')";
В функции function update делаем тоже самое:
Код
    $q = "UPDATE #__{vm}_currency set ";
    $q .= "currency_name='" . $d["currency_name"];
    $q .= "',currency_curs='" . $d["currency_curs"]."' ";
    $q .= ",currency_code='" . $d["currency_code"]."' ";
    $q .= "WHERE currency_id='".$d["currency_id"]."'";
Заливаем файлы на сервер и обновляем станицу в админке. Вау! Круто! Теперь у нас на каждую валюту свой рублёвый множитель.
4)   Теперь нужно заставить этот множитель работать. Исходник кода я взял у SB «3. В классе ps_product добавляется расчет курса в соответствии с валютой товара и магазина. (функции get_retail_price и get_price).» на форуме мамбы, и внёс некоторые корректировки по перемене имён переменных на свои.
/administrator/components/com_virtuemart/classes/ps_product.php – ищем функцию function get_retail_price.
Над функцией по аналогии с предложенным SB вставляем новую функцию:
 
Код
/**************************************************************************
   ** name: get_cur_rate($price_info, $vendor_id)
   ** created by: sb
   ** modify by: XDX
   ** description: get currency curs!!!
   ** parameters:
   ** returns:
   ***************************************************************************/
 
 function get_curs_rate($price_info, $vendor_id) {
    $db = new ps_DB;
    // Get the vendor id for this product.

    $q = "SELECT vendor_currency FROM #__{vm}_vendor WHERE vendor_id='$vendor_id'";
    $db->setQuery($q); $db->query();
    $db->next_record();
    $vendor_currency = $db->f("vendor_currency");
   

   
    if ($price_info["product_currency"] !== $vendor_currency)
      {
       $price_info_product_currency = $price_info["product_currency"];
       $q = "SELECT currency_curs FROM #__{vm}_currency WHERE currency_code = '$price_info_product_currency' ";
       $db->setQuery($q); $db->query();
       $db->next_record();

       $currency_curs = $db->f("currency_curs");

       //error_log ($currency_curs, 3, "my-errors.log");
       if($currency_curs)
        {
         return $currency_curs;

        }
      }
    return 1;
  }
Далее в функциях get_retail_price и get_price вставляем нужные части кода предложенного SB. Я не буду подробно описывать, что и после какой строки вставлять, просто скопирую сюда сразу код этих функций благо они идут одна за другой:
Код
/**
* Function to get the "pure" undiscounted and untaxed price
* of product $product_id. Used by the administration section.
*
* @param int $product_id
* @return array The product price information
*/
function get_retail_price($product_id) {

$db = new ps_DB;
        $curs = 0;
// Get the vendor id for this product.
$q = "SELECT vendor_id FROM #__{vm}_product WHERE product_id='$product_id'";
$db->setQuery($q); $db->query();
$db->next_record();
$vendor_id = $db->f("vendor_id");

// Get the default shopper group id for this product and user
$q = "SELECT shopper_group_id FROM #__{vm}_shopper_group WHERE `vendor_id`='$vendor_id' AND `default`='1'";
$db->setQuery($q); $db->query();
$db->next_record();
$default_shopper_group_id = $db->f("shopper_group_id");

$q = "SELECT product_price,product_currency FROM #__{vm}_product_price WHERE product_id='$product_id' AND ";
$q .= "shopper_group_id='$default_shopper_group_id'";
$db->setQuery($q); $db->query();
if ($db->next_record()) {
$price_info["product_price"]= $db->f("product_price");
$price_info["product_currency"]=$db->f("product_currency");
}
else {
$price_info["product_price"]= "";
$price_info["product_currency"] = $_SESSION['vendor_currency'];
}
        $curs = $this->get_curs_rate($price_info, $vendor_id);
        if (($cur)&&(!$original_price))
          $price_info["product_price"]=$price_info["product_price"] * $curs;
return $price_info;
}

/**
* Get the price of product $product_id for the shopper group associated
* with $auth['user_id'] - including shopper group discounts
*
* @param int $product_id
* @param boolean $check_multiple_prices Check if the product has more than one price for that shopper group?
* @return array The product price information
*/
function get_price($product_id, $check_multiple_prices=false) {
$auth = $_SESSION['auth'];
$cart = $_SESSION['cart'];

if( empty( $GLOBALS['product_info'][$product_id]['price'] )
|| !empty($GLOBALS['product_info'][$product_id]['price']["product_has_multiple_prices"])
|| $check_multiple_prices) {
$db = new ps_DB;

if( empty( $_SESSION['product_sess'][$product_id]['vendor_id'] )) {

// Get the vendor id for this product.
$q = "SELECT vendor_id FROM #__{vm}_product WHERE product_id='$product_id'";
$db->setQuery($q); $db->query();
$db->next_record();
$_SESSION['product_sess'][$product_id]['vendor_id'] = $vendor_id = $db->f("vendor_id");
}
else {
$vendor_id = $_SESSION['product_sess'][$product_id]['vendor_id'];
}

$shopper_group_id = $auth["shopper_group_id"];
$shopper_group_discount = $auth["shopper_group_discount"];

if( empty($GLOBALS['vendor_info'][$vendor_id]['default_shopper_group_id']) ) {
// Get the default shopper group id for this vendor
$q = "SELECT shopper_group_id,shopper_group_discount FROM #__{vm}_shopper_group WHERE ";
$q .= "vendor_id='$vendor_id' AND `default`='1'";
$db->setQuery($q); $db->query();
$db->next_record();
$GLOBALS['vendor_info'][$vendor_id]['default_shopper_group_id'] = $default_shopper_group_id = $db->f("shopper_group_id");
$GLOBALS['vendor_info'][$vendor_id]['default_shopper_group_discount']= $default_shopper_group_discount = $db->f("shopper_group_discount");
}
else {
$default_shopper_group_id = $GLOBALS['vendor_info'][$vendor_id]['default_shopper_group_id'];
$default_shopper_group_discount = $GLOBALS['vendor_info'][$vendor_id]['default_shopper_group_discount'];
}
// Get the product_parent_id for this product/item
$product_parent_id = $this->get_field($product_id, "product_parent_id");

$price_info = Array();
if( !$check_multiple_prices ) {
/* Added for Volume based prices */
// This is an important decision: we add up all product quantities with the same product_id,
// regardless to attributes. This gives "real" volume based discount, because our simple attributes
// depend on one and the same product_id
$quantity = 0;
for ($i=0;$i<$cart["idx"];$i++) {
if ($cart[$i]["product_id"] == $product_id) {
$quantity  += $cart[$i]["quantity"];
}
}

$volume_quantity_sql = " AND (('$quantity' >= price_quantity_start AND '$quantity' <= price_quantity_end)
                                OR (price_quantity_end='0') OR ('$quantity' > price_quantity_end)) ORDER BY price_quantity_end DESC";
/* End Addition */
}
else {
$volume_quantity_sql = " ORDER BY price_quantity_start";
}

// Getting prices
//
// If the shopper group has a price then show it, otherwise
// show the default price.
if( !empty($shopper_group_id) ) {
$q = "SELECT product_price, product_price_id, product_currency FROM #__{vm}_product_price WHERE product_id='$product_id' AND ";
$q .= "shopper_group_id='$shopper_group_id' $volume_quantity_sql";
$db->setQuery($q); $db->query();
if ($db->next_record()) {
$price_info["product_price"]= $db->f("product_price");
if( $check_multiple_prices ) {
$price_info["product_base_price"]= $db->f("product_price");
$price_info["product_has_multiple_prices"] = $db->num_rows() > 1;
}
$price_info["product_price_id"]=$db->f("product_price_id");
$price_info["product_currency"]=$db->f("product_currency");
$price_info["item"]=true;

      $curs = $this->get_curs_rate($price_info, $vendor_id);
      if ($curs)
      $price_info["product_price"]=$price_info["product_price"] * $curs;

$GLOBALS['product_info'][$product_id]['price'] = $price_info;
return $GLOBALS['product_info'][$product_id]['price'];
}
}
// Get default price
$q = "SELECT product_price, product_price_id, product_currency FROM #__{vm}_product_price WHERE product_id='$product_id' AND ";
$q .= "shopper_group_id='$default_shopper_group_id' $volume_quantity_sql";
$db->setQuery($q); $db->query();
if ($db->next_record()) {
$price_info["product_price"]=$db->f("product_price") * ((100 - $shopper_group_discount)/100);
if( $check_multiple_prices ) {
$price_info["product_base_price"]= $price_info["product_price"];
$price_info["product_has_multiple_prices"] = $db->num_rows() > 1;
}
$price_info["product_price_id"]=$db->f("product_price_id");
$price_info["product_currency"] = $db->f("product_currency");
$price_info["item"] = true;

      $curs = $this->get_curs_rate($price_info, $vendor_id);
      if ($curs)
      $price_info["product_price"]=$price_info["product_price"] * $curs;

$GLOBALS['product_info'][$product_id]['price'] = $price_info;
return $GLOBALS['product_info'][$product_id]['price'];
}

// Maybe its an item with no price, check again with product_parent_id
if( !empty($shopper_group_id) ) {
$q = "SELECT product_price, product_price_id, product_currency FROM #__{vm}_product_price WHERE product_id='$product_parent_id' AND ";
$q .= "shopper_group_id='$shopper_group_id' $volume_quantity_sql";
$db->setQuery($q); $db->query();
if ($db->next_record()) {
$price_info["product_price"]=$db->f("product_price");
if( $check_multiple_prices ) {
$price_info["product_base_price"]= $db->f("product_price");
$price_info["product_has_multiple_prices"] = $db->num_rows() > 1;
}
$price_info["product_price_id"]=$db->f("product_price_id");
$price_info["product_currency"] = $db->f("product_currency");

      $curs = $this->get_curs_rate($price_info, $vendor_id);
      if ($curs)
      $price_info["product_price"]=$price_info["product_price"] * $curs;

$GLOBALS['product_info'][$product_id]['price'] = $price_info;
return $GLOBALS['product_info'][$product_id]['price'];
}
}
$q = "SELECT product_price, product_price_id, product_currency FROM #__{vm}_product_price WHERE product_id='$product_parent_id' AND ";
$q .= "shopper_group_id='$default_shopper_group_id' $volume_quantity_sql";
$db->setQuery($q); $db->query();
if ($db->next_record()) {
$price_info["product_price"]=$db->f("product_price") * ((100 - $shopper_group_discount)/100);
if( $check_multiple_prices ) {
$price_info["product_base_price"]= $price_info["product_price"];
$price_info["product_has_multiple_prices"] = $db->num_rows() > 1;
}
$price_info["product_price_id"]=$db->f("product_price_id");
$price_info["product_currency"] = $db->f("product_currency");

      $curs = $this->get_curs_rate($price_info, $vendor_id);
      if ($curs)
      $price_info["product_price"]=$price_info["product_price"] * $curs;

$GLOBALS['product_info'][$product_id]['price'] = $price_info;
return $GLOBALS['product_info'][$product_id]['price'];
}
// No price found
$GLOBALS['product_info'][$product_id]['price'] = false;
return $GLOBALS['product_info'][$product_id]['price'];
}
else {
return $GLOBALS['product_info'][$product_id]['price'];
}
}
Честно говоря не проверял получившиеся функции на чистоту и всевозможные багги, просто переименовал переменные на свои. Если кто найдёт ошибки тот молодец, я ему буду очень благодарен.

Теперь мы имеем достойный калькулятор валют в нашем магазине. И клиент не будет парить вам мозг по изменению курса валюты.
Спасибо за внимание. Доработка приветствуется!)))
« Последнее редактирование: 02.02.2008, 22:14:47 от XDX »
*

-L-

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Блин админка вирта развалилась вся после последнего изменения, у мну вирт 13
*

-L-

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
Нашел гадость, поправил, спасибо огромное то что надо!
*

-L-

  • Осваиваюсь на форуме
  • 31
  • 1 / 0
последнее, как бы еще эту переменную, тобишь курс вывести в карточке товара? типа 1 уе сегодня 35 р

А зачем? По современному закону всё должно быть в рублях. Внутри цены могут храниться УЕ а выводиться в рублях. Пользователю не обязательно знать какой у вас внутренний курс.
Ну а по существу если уж так прям необходимо, то наверняка придётся писать свой модуль или прикрепить тот который уже написан кем либо ещё и переделать его маленько под себя.
*

KorSaa

  • Новичок
  • 3
  • 0 / 0
А как сделать чтобы еще и для нескольких цен так выводилось?
т.е. на данный момент получается вот так:
Продукт1
Цена: 941,05 руб.
 Количество    Цена
1 - 1          34,22 руб.
2 - 9          24,78 руб.

т.е. для цены по умолчанию пересчитывает по курсу, а для таблицы с ценами в зависимости от кол-ва не считает по курсу. Но если положить товар в корзину то , в корзине отображает правельную цену.
Помогите пожалуйста.
« Последнее редактирование: 18.11.2008, 17:22:10 от KorSaa »
*

KorSaa

  • Новичок
  • 3
  • 0 / 0
Никто не знает ответ? :(
« Последнее редактирование: 18.11.2008, 17:22:17 от KorSaa »
*

jarosstar

  • Новичок
  • 9
  • 3 / 0
К VM 1.1 вот такой есть модуль - выбор валюты. Русский. Оно?

[вложение удалено Администратором]
*

TAX

  • Захожу иногда
  • 154
  • 10 / 0
Мультивалютность для Virtuemart 1.0.x. Версия 2.1
http://forum.virtuemart.ru/index.php?topic=3081.0
*

laked

  • Новичок
  • 5
  • 0 / 0
БРАВО!!!! СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Вы просто спасли меня своим хаком!!!!!!!!!!!!!!!!!!! Я весь инет вспахала, вы меня спасли!!!!!! Очень-очень-очень нужный хак, работает супер и без галюцинаций!!!!!
 :-*
*

Gremlin

  • Захожу иногда
  • 293
  • 11 / 0
последнее, как бы еще эту переменную, тобишь курс вывести в карточке товара? типа 1 уе сегодня 35 р
Нашел гадость, поправил, спасибо огромное то что надо!
А что за гадость? У меня тоже 1.0.15 + 1.0.15, но пока хак не делал и очень хочется что-бы все прошло без последствий ;)
*

Gremlin

  • Захожу иногда
  • 293
  • 11 / 0
Вот нашел хак: http://forum.virtuemart.ru/viewtopic.php?f=6&t=450. Тока есть косячки :(... Придется еще дорабатывать модуль доставки и корзины. И еще не проверил как оплата работает...

Вот нашел хак: http://forum.virtuemart.ru/viewtopic.php?f=6&t=450. Тока есть косячки :(... Придется еще дорабатывать модуль доставки и корзины. И еще не проверил как оплата работает...
Может кто подскажет как сделать что-бы етот хак не делил начальную цену на курс, а умножал??
*

ipdesign

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Я правильно понял, мануал XDX будет работать и на VirtueMart 1.1.2
*

ipdesign

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Ребята подскажите пожалуйста что именно нужно сделать с пунктом №3? не пойму куда его вставлять? что именно заменять надо в этих двух функциях? Никак у меня не получается....Пожалуйста! В идеале бы полностью файл ps_currency.php посмотреть бы...

Цитировать
3)   Теперь нужно сделать так чтоб новая строка формы «Курс в рублях» брала значения из БД и если надо то редактировала, при апдэйте или создании новой валюты. Короче делаем её функциональной:
/administrator/components/com_VirtueMart/classes/ps_currency.php – ищем заветный код со словами Инсерт и Апдэйт.))
function add – в этой функции добавляем обработчик нового поля в таблице «Куренси» нашей БД. Заменяем похожее на это:
Код:

    $q = "INSERT INTO #__{vm}_currency (currency_name, currency_curs, currency_code)";
    $q .= " VALUES ('";
    $q .= $d["currency_name"] . "','";
    $q .= $d["currency_curs"] . "','";
    $q .= $d["currency_code"] . "')";

В функции function update делаем тоже самое:
Код:

    $q = "UPDATE #__{vm}_currency set ";
    $q .= "currency_name='" . $d["currency_name"];
    $q .= "',currency_curs='" . $d["currency_curs"]."' ";
    $q .= ",currency_code='" . $d["currency_code"]."' ";
    $q .= "WHERE currency_id='".$d["currency_id"]."'";

Заливаем файлы на сервер и обновляем станицу в админке. Вау! Круто! Теперь у нас на каждую валюту свой рублёвый множитель.

Задача и описание ситуации:
При возделывании магазина на ДJoomla 1.0.12 + VirtueMart RE 1.0.12 досталась база товаров цена которых в базе была в долларах. Так как Виртумарт одновалютный и не позволяет конвертировать валюту при выводе товаров на сайте в рублях, то пришлось залезть в /administrator/components/com_VirtueMart/classes/ps_product.php и в function show_price изменить строку
Код
$base_price = $base_price_info["product_price"];
на
Код
// Расчёт базовой цены по курсу 25руб за 1$
// $base_price = ($base_price_info["product_price"])*25;
Но это было тупое умножение цены товара на 25 и не позволяла клиенту менять курс по своему умотрению без моей помощи. Так что нужно было сделать чё нить другое, более полезное и удобное. Не вздумайте вставлять вышеописанный код, дочитайте до конца…))
Нужно было найти хак или модуль по конвертации с возможностью изменения курса на каждую валюту отдельно. Чего я так и не нашёл ни на одном из ворумов.

Сделал так и все получилось. только когда добавляешь товар в корзину появляется цена в ЕВРО, а не в рублях. Как исправить?

Нашел гадость, поправил, спасибо огромное то что надо!
А что за гадость, у меня тож VirtueMart 1.1.3, но что то не могу найти что не так???
*

Волька

  • Осваиваюсь на форуме
  • 36
  • 2 / 0
Ребята подскажите пожалуйста что именно нужно сделать с пунктом №3? не пойму куда его вставлять? что именно заменять надо в этих двух функциях? Никак у меня не получается....Пожалуйста! В идеале бы полностью файл ps_currency.php посмотреть бы...


Актуален ещё вопрос?
У меня всё получилось - могу поделиться скромным опытом!  yes!
А вообще - БРАВО XDX  :D
*

Волька

  • Осваиваюсь на форуме
  • 36
  • 2 / 0
 !
Хак прекрасный.
Но выскочил недочёт.
Если в списке свойств добавить разные цены в зависимости от свойства, то при покупке цена указывается в рублях без пересчёта по курсу, т.е. в этом случае получается, что курс = 1.  >:(

Пример: Базовую цену указываем в ЕВРО (пусть будет "5"). В списке дополнительный свойств указываем для синего цвета "7". Курс ЕВРО вводим 45,00.
При совершении покупки покупатель видит пересчитанную в рубли базовую цену (225,00 руб.), но если хочет купить товар синего цвета, то цена указана неправильно - 7 руб. (не умножается на курс).

Помогите решить! Где копать? !
« Последнее редактирование: 19.08.2009, 17:29:44 от Волька »
*

livsi

  • Осваиваюсь на форуме
  • 12
  • 1 / 0
Стандартным местом конвертации валют в VirtueMart 1.1.3 является файл конвертации /administrator/components/com_virtuemart/classes/currency/convertECB.php

Именно на него есть поле выбора в админке: Настройки->Вкладка Общие настройки -> Подраздел Дополнительные настройки -> селект Выберите модуль конвертора валют. Так что и менять логичнее именно в нем а не в ps_currency.php.

Скрипт для парсинга берем на сайте ЦБ (http://www.cbr.ru/scripts/Root.asp?Prtid=SXML) -- usd_cbr_php.zip, и переделываем по образцу конвертера валют от convertECB.php (This class uses the currency rates provided by an XML file from the European Central Bank)

Сам сейчас над этим работаю, напишу - залью для сообщества.

Если кто то задачку быстрее решит или уже решал - отпишитесь.

Есть и коммерческое (совсем не дорогое) решение, сам не пробовал, но в ходе поисков нашел: http://www.safegadget.ru/shop/vm_curr_converter.html. Стоит 150.00 руб.
« Последнее редактирование: 19.08.2009, 20:31:17 от livsi »
*

Волька

  • Осваиваюсь на форуме
  • 36
  • 2 / 0
Стандартным местом конвертации валют в VirtueMart 1.1.3 является файл конвертации /administrator/components/com_virtuemart/classes/currency/convertECB.php

Именно на него есть поле выбора в админке: Настройки->Вкладка Общие настройки -> Подраздел Дополнительные настройки -> селект Выберите модуль конвертора валют. Так что и менять логичнее именно в нем а не в ps_currency.php.

Скрипт для парсинга берем на сайте ЦБ (http://www.cbr.ru/scripts/Root.asp?Prtid=SXML) -- usd_cbr_php.zip, и переделываем по образцу конвертера валют от convertECB.php (This class uses the currency rates provided by an XML file from the European Central Bank)

Сам сейчас над этим работаю, напишу - залью для сообщества.

Если кто то задачку быстрее решит или уже решал - отпишитесь.

Есть и коммерческое (совсем не дорогое) решение, сам не пробовал, но в ходе поисков нашел: http://www.safegadget.ru/shop/vm_curr_converter.html. Стоит 150.00 руб.

Спасибо огромное за ответ!
Проблема в том, что у меня стоит версия VirtueMart семейства 1.0 и файла convertECB.php просто не существует.
Как быть?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Сравнения товара в VM 1.1.X

Автор Bear

Ответов: 464
Просмотров: 82554
Последний ответ 17.06.2016, 10:44:50
от uralmas
[Решено] Невидимая регистрация ( Покупка без регистрации ) V1.1.3

Автор urodoff

Ответов: 319
Просмотров: 108484
Последний ответ 27.10.2014, 15:27:02
от gaalferov
[Решено] Отобразить кол-во товаров из всех подкатегорий V1.1.3

Автор bazic

Ответов: 19
Просмотров: 13586
Последний ответ 18.09.2014, 06:39:33
от fila61
[Решено] Добавление Watermark к фото товара V1.0.15 V1.1.3

Автор mickymouse

Ответов: 52
Просмотров: 22533
Последний ответ 13.06.2013, 01:04:46
от richman
[Решено] Как изменить ,товаров в наличии 1 на "есть в наличии" V1.0.15 V1.1.3

Автор ButuzOFF

Ответов: 93
Просмотров: 40967
Последний ответ 17.05.2013, 21:10:44
от sa1981