Чтобы узнать адрес страницы, который, к примеру сгенирировал sh404SEF, воспользуйтесь переменной $_SERVER[‘REDIRECT_URL’].
А не-SEF ссылка содержится в более часто упоминаемой переменной $_SERVER[‘REQUEST_URI’].
Архив метки: Joomla
Совет: Для того, чтобы добавить этот товар в Вашу корзину Вы должны выбрать свойства товара на странице с его описанием
Это сообщение может появится в интернет-магазине VirtueMart на Joomla в случае использования подтоваров, плюс если у родительского товара есть свои свойства. Стоит попытаться положить подтовар в корзину и вы увидите это сообщение, а товар в корзину не попадет.У меня проблема решилась следующим образом:
- В фаиле /administrator/components/com_virtuemart/classes/ps_cart.php, в функции add() закомментировал строки (отличается в разных версиях VirtueMart, но найти по смыслу можно):
if ( ($result["attribute_given"] == false && !empty( $result["advanced_attribute_list"] )) || ($multiple_products == 1 && ($result["custom_attribute_given"] == false && !empty( $result["custom_attribute_list"] ))) ) { $_REQUEST['flypage'] = ps_product::get_flypage($product_id); $GLOBALS['page'] = 'shop.product_details'; $vmLogger->tip( $VM_LANG->_('PHPSHOP_CART_SELECT_ITEM',false) ); return true; }
- Чтобы в списке товаров в корзине не вылезли свойства родительской позиции, во всех файлах php в папке /components/com_virtuemart/themes/default/templates/basket/ код:
<?php echo $product['product_name'] . $product['product_attributes'] ?>
заменил на:
<?php $brPos = strpos($product['product_name'], "<br />"); if ($brPos !== false) $product['product_name'] = substr($product['product_name'], 0, $brPos); echo $product['product_name']; ?>
Перехват вывода в Joomla
Бывает что на сайте, сделанном на Joomla, нужно сделать небольшие изменения, и при этом не хочется разбираться в дебрях стандартных и сторонних шаблонов. В этом случае может помочь перехват и частичная замена стандартного вывода. Для этого меняем в корне сайта файл index.php. В его конце нужно заменить код:
echo JResponse::toString($mainframe->getCfg('gzip'));
на:
$iBuffer = JResponse::toString($mainframe->getCfg('gzip'));
require_once ('intercept.php');
echo $iBuffer;
А в файле intercept.php как раз можно произвести необходимые замены в выводе, находящемся в данном случае в переменной $iBuffer.
Кстати этот подход можно применить практически к любому движку.