Tag Archives: virtuemart

Desplegar fotos en la búsqueda de Virtuemart

4 Feb

Es posible desplegar imágenes en los resultados de búsqueda de Virtuemart.

Para ello, en el archivo plugins\search\virtuemart.search.php , en donde se hace la búsqueda agregamos “,p.product_thumb_image AS thumb,”  en :

SELECT DISTINCT p.product_id, p.product_name as title,
FROM_UNIXTIME( p.cdate, ‘%Y-%m-%d %H:%i:%s’ ) AS created,
p.product_s_desc AS text, p.product_thumb_image AS thumb,

Luego, para mostrar el thumb, en COMPONENTS\COM_SEARCH\views\SEARCH\ tmpl\ default_results.php (o mejor aún en el template que estemos usando /templates/mitemplate/html/com_search/search/default_results.php – si no existe copiamos el archivo y lo modificamos -); agregamos en el lugar que queramos mostrar la imagen las líneas:

php:

if ($result->thumb != NULL && $result->thumb != “”) {

echo ‘<img src = “http://www.misitio.com/components/com_virtuemart/shop_image/product/&#8217;.$result->thumb.’ ” />’;

}

Tomado de: http://forum.joomla.org/viewtopic.php?p=2204510

Menu Items en Virtuemart

27 Feb

Virtuemart presenta algunos problemas cuando tenemos varios items de menú que despliegan una determinada categoría de Virtuemart. A veces aparecen módulos que no corresponden, y el módulo de breadcrumbs de Joomla! no funciona correctamente.

Para solucionar estos problemas, puede editarse el archivo ps_session.php dentro de administrator\components\com_virtuemart\classes y sustituir la función getShopItemid por lo siguiente:

function getShopItemid() {

// MODTAG: RICHARD G. MAYER MOD
if ( empty( $_REQUEST[‘shopItemid’] )) {
$_REQUEST[‘shopItemid’] = $_REQUEST[‘Itemid’];
}

/*
if( empty( $_REQUEST[‘shopItemid’] )) {
$db = new ps_DB;
$db->query( “SELECT id FROM #__menu WHERE link=’index.php?option=com_virtuemart’ AND published=1”);
if( $db->next_record() ) {
$_REQUEST[‘shopItemid’] = $db->f(“id”);
}
else {
if( !empty( $_REQUEST[‘Itemid’] )) {
$_REQUEST[‘shopItemid’] = intval( $_REQUEST[‘Itemid’] );
}
else {
$_REQUEST[‘shopItemid’] = 1;
}
}
} */

return intval($_REQUEST[‘shopItemid’]);

}

 

Tomado de: http://forum.virtuemart.net/index.php?topic=70482.0

Moneda múltiple en Virtuemart

31 Ene

Virtuemart permite trabajar con múltiples monedas. El funcionamiento es correcto, excepto cuando se visualiza el detalle de las órdenes, tanto por el usuario desde el front-end, como por los administradores desde el back-end.

El sistema guarda el pedido con los datos de la moneda con los que se efectuó la compra, pero cuando se despliega el pedido, los valores aparecen con la moneda de la compra, pero el símbolo de moneda es siempre $. Esto es confuso para los administradores del sitio, que no saben si por ejemplo la compra se realizó con Euros o con Dólares, ya que el símbolo es en todos los casos es $.

Para solucionar este problema, y que se muestre la moneda correcta con que se realizó la compra, los pasos a seguir son los siguientes:

1. Para el front-end:

Editar el archivo account.order_details.tpl.php en
components/com_virtuemart/themes/default/templates/pages/ (default o la plantilla que estemos utilizando)

Allí, se deberán buscar las líneas que contienen “$CURRENCY_DISPLAY” por ejemplo:

echo $CURRENCY_DISPLAY->getFullValue($item_price, ”, $db->f(‘order_currency’));

Esas líneas, las sustituiremos por echo $db->f(‘order_currency’).” “.$item_price; o lo que corresponda según lo que se está imprimiendo. Lo que hace esta línea es imprimir la moneda con “$db->f(‘order_currency’)” , y luego imprimir el valor a mostrar, en este caso el precio del producto $item_price.

2. Para el back-end:

a. Para que aparezca la moneda en el listado de pedidos, vamos a editar el archivo order.order_list.php que se encuentra en administrator/components/com_virtuemart/html .  Se deberá buscar la línea

$listObj->addCell( $GLOBALS[‘CURRENCY_DISPLAY’]->getFullValue($db->f(“order_total”), ”, $db->f(‘order_currency’)));

y sustituirla por

$listObj->addCell( $db->f(‘order_currency’).” “.$db->f(“order_total”));
b. En el detalle de Pedido, mi solución fue desplegar la Moneda dentro del listado. Para ello, en el archivo order.order_print.php dentro de
/administrator/components/com_virtuemart/html  se debe agregar el siguiente código en la línea 93 en mi caso, o en lugar que se desee dentro de la página:

<tr>
<td><strong><?php echo “Moneda” ?>:</strong></td>
<td><?php echo $db->f(‘order_currency’); ?></td>
</tr>

Espero que les sea de utilidad. Realmente hay poca información sobre este tema en los foros!

Configurar 2CO en Virtuemart

9 Mar

Configurar 2 Check Out en Virtuemart tiene sus vueltas. Particularmente, el script que viene con Virtuemart parece que no está del todo bien.

Por suerte encontré este post: https://forum.virtuemart.net/index.php?topic=55302.0

Y por las dudas, pego abajo el código que tiene que quedar en Virtuemart:

 

<?php       // Get ship_to information
if( $db->f(“user_info_id”) != $dbbt->f(“user_info_id”)) {
$q2  = “SELECT * FROM #__vm_user_info WHERE user_info_id='”.$db->f(“user_info_id”).”‘”;
$dbst = new ps_DB;
$dbst->setQuery($q2);
$dbst->query();
$dbst->next_record();
}
else  {
$dbst = $dbbt;
}

$q3 = “SELECT * FROM #__vm_order_item WHERE user_info_id='”.$db->f(“user_info_id”).”‘”;
$dbcprod = new ps_DB;
$dbcprod->setQuery($q3);
$dbcprod->query();
$dbcprod->next_record();

for($i = 0; $i < count($dbcprod->record); $i++){ //sort out user orders
$orders[$i] = $dbcprod->record[$i]->order_id;
}
arsort($orders);
$this_order_id = current($orders); //sets most recent order number for user

for($i = 0; $i < count($dbcprod->record); $i++){ //gets all product info entries for this order number
if($dbcprod->record[$i]->order_id == $this_order_id){
$this_order[$i] = $dbcprod->record[$i];
}
}
sort($this_order);

//2co c_prods to send
for($i = 0; $i < count($this_order); $i++){ //creates 2co c_prod parameters
$twoco_prod_info[“c_prod_$i”] = $this_order[$i]->order_item_sku .”,”. $this_order[$i]->product_quantity;
$twoco_prod_info[“c_name_$i”] = $this_order[$i]->order_item_name;
$twoco_prod_info[“c_price_$i”] = $this_order[$i]->product_final_price;
$twoco_prod_info[“c_description_$i”] = $this_order[$i]->order_item_name .”,”. $this_order[$i]->product_attribute;
}

//Authnet vars to send
$formdata = array (
‘x_login’ => TWOCO_LOGIN,
‘x_email_merchant’ => ((TWOCO_MERCHANT_EMAIL == ‘True’) ? ‘TRUE’ : ‘FALSE’),
‘id_type’ => 1, //added for c_prod compliance

// Customer Name and Billing Address
‘x_first_name’ => $dbbt->f(“first_name”),
‘x_last_name’ => $dbbt->f(“last_name”),
‘x_company’ => $dbbt->f(“company”),
‘x_address’ => $dbbt->f(“address_1”),
‘x_city’ => $dbbt->f(“city”),
‘x_state’ => $dbbt->f(“state”),
‘x_zip’ => $dbbt->f(“zip”),
‘x_country’ => $dbbt->f(“country”),
‘x_phone’ => $dbbt->f(“phone_1”),
‘x_fax’ => $dbbt->f(“fax”),
‘x_email’ => $dbbt->f(“email”),

// Customer Shipping Address
‘x_ship_to_first_name’ => $dbst->f(“first_name”),
‘x_ship_to_last_name’ => $dbst->f(“last_name”),
‘x_ship_to_company’ => $dbst->f(“company”),
‘x_ship_to_address’ => $dbst->f(“address_1”),
‘x_ship_to_city’ => $dbst->f(“city”),
‘x_ship_to_state’ => $dbst->f(“state”),
‘x_ship_to_zip’ => $dbst->f(“zip”),
‘x_ship_to_country’ => $dbst->f(“country”),

‘x_invoice_num’ => $db->f(“order_id”),
‘x_receipt_link_url’ => SECUREURL.”2checkout_notify.php”
);

$formdata = array_merge($twoco_prod_info, $formdata); //combine formdata with twoco_prod_info so c_prod info gets sent to 2co

if( TWOCO_TESTMODE == “Y” )
$formdata[‘demo’] = “Y”;
$version = “2”;
$url = “https://www2.2checkout.com/2co/buyer/purchase&#8221;;
$formdata[‘x_amount’] = number_format($db->f(“order_total”), 2, ‘.’, ”);

//build the post string
$poststring = ”;
foreach($formdata AS $key => $val){
$poststring .= “<input type=’hidden’ name=’$key’ value=’$val’ />
“;
}

?>   <form id=”cho” action=”<?php echo $url ?>” method=”post” target=”_self”>   <?php echo $poststring ?>   <p>Click on the Image below to pay…</p>   <input type=”image” name=”submit” src=”https://www.2checkout.com/images/buy_logo.gif&#8221; border=”0″ alt=”Make payments with 2Checkout, it’s fast and secure!” title=”Pay your Order with 2Checkout, it’s fast and secure!” />   </form>   <script language=”JavaScript” type=”text/javascript”>   <!–   document.getElementById(‘cho’).submit();   //–>   </script>

A %d blogueros les gusta esto: