Корзина и оформление товара Virtuemart 1.1.х (VM) - переадресация на главную index.php

Дата редактирования: 12.03.2015 Просмотрен: 4393

Если Вы используете на сайте 2 разных шаблона для главной страницы и для внутренних. То может появится проблема с virtuemart 1.1.х при оформлении заказа или при обновлении или удалении товаров в корзине магазина. Проблема заключается в том что при клике на кнопку "Оформить заказ" или обновить Вас переадресуют на главную страницу вот так: http://ваш-сайт.ру/index.php а на ней к примеру совсем отсутствует вывод содержания компонентов или вид отличается от задуманного для корзины. В таком случае можно решить проблему следующим образом:

Откройте файл:

/administrator/components/com_virtuemart/html/basket.php

И в строке

// UPDATE CART / DELETE FROM CART 
		$action_url = $mm_action_url.basename($_SERVER['PHP_SELF']);</pre>
<p>
Замените PHP_SELF на REQUEST_URI
</p>
<pre class="brush:php">// UPDATE CART / DELETE FROM CART 
		$action_url = $mm_action_url.basename($_SERVER['REQUEST_URI']);

В файле

/administrator/components/com_virtuemart/classes/ps_checkout.php

Замените код

// Redirect to the last step when there's only one payment method
		if( $VM_CHECKOUT_MODULES['CHECK_OUT_GET_PAYMENT_METHOD']['order'] != $VM_CHECKOUT_MODULES['CHECK_OUT_GET_FINAL_CONFIRMATION']['order'] ) {
			if ($count <= 1 && $cc_payments==false) {
				vmRedirect($sess->url(SECUREURL.basename($_SERVER['PHP_SELF'])."?page=checkout.index&payment_method_id=$first_payment_method_id&ship_to_info_id=$ship_to_info_id&shipping_rate_id=".urlencode($shipping_rate_id)."&checkout_stage=".$VM_CHECKOUT_MODULES['CHECK_OUT_GET_FINAL_CONFIRMATION']['order'], false, false ),"");
			}
			elseif( isset($order_total) && $order_total <= 0.00 ) {
				// In case the order total is less than or equal zero, we don't need a payment method
				vmRedirect($sess->url(SECUREURL.basename($_SERVER['PHP_SELF'])."?page=checkout.index&ship_to_info_id=$ship_to_info_id&shipping_rate_id=".urlencode($shipping_rate_id)."&checkout_stage=".$VM_CHECKOUT_MODULES['CHECK_OUT_GET_FINAL_CONFIRMATION']['order'], false, false),"");
			}
		}

На

// Redirect to the last step when there's only one payment method
		if( $VM_CHECKOUT_MODULES['CHECK_OUT_GET_PAYMENT_METHOD']['order'] != $VM_CHECKOUT_MODULES['CHECK_OUT_GET_FINAL_CONFIRMATION']['order'] ) {
			if ($count <= 1 && $cc_payments==false) {
				vmRedirect($sess->url(SECUREURL.basename($_SERVER['REQUEST_URI'])."?page=checkout.index&payment_method_id=$first_payment_method_id&ship_to_info_id=$ship_to_info_id&shipping_rate_id=".urlencode($shipping_rate_id)."&checkout_stage=".$VM_CHECKOUT_MODULES['CHECK_OUT_GET_FINAL_CONFIRMATION']['order'], false, false ),"");
			}
			elseif( isset($order_total) && $order_total <= 0.00 ) {
				// In case the order total is less than or equal zero, we don't need a payment method
				vmRedirect($sess->url(SECUREURL.basename($_SERVER['REQUEST_URI'])."?page=checkout.index&ship_to_info_id=$ship_to_info_id&shipping_rate_id=".urlencode($shipping_rate_id)."&checkout_stage=".$VM_CHECKOUT_MODULES['CHECK_OUT_GET_FINAL_CONFIRMATION']['order'], false, false),"");
			}
		}

В файле

/administrator/components/com_virtuemart/html/checkout.index.php

// We have something in the Card so move on
    if ($perm->is_registered_customer($auth['user_id'])) { // user is logged in and a registered customer
		$basket_html .= '<form action="'. SECUREURL.basename($_SERVER['PHP_SELF']) .'" method="post" name="adminForm">

На

// We have something in the Card so move on
    if ($perm->is_registered_customer($auth['user_id'])) { // user is logged in and a registered customer
		$basket_html .= '<form action="'. SECUREURL.basename($_SERVER['REQUEST_URI']) .'" method="post" name="adminForm">

В файле

/administrator/components/com_virtuemart/classes/ps_userfield.php

if( $startForm ) {
			echo '<form action="'. $mm_action_url .basename($_SERVER['PHP_SELF']) .'" method="post" name="adminForm">';
		}

На

if( $startForm ) {
			echo '<form action="'. $mm_action_url .basename($_SERVER['REQUEST_URI']) .'" method="post" name="adminForm">';
		}

 

ВсЁ. Есть и другие способы, но я решил так. Гугл в помощь если что.



Создан: 21.03.2013 03:57 | Отредактирован: 12.03.2015 06:39