Chrome, аналогично. Только что попробовал еще раз. Добавил 2 товара, после чего попробовал удалить. Один удалился нормально, второй - нет. Канал хороший, из-за перебоев соединения такого быть не может. Глючит модуль.
Теперь по делу. Когда мы нажимаем кнопку "в корзину" отправляется ajax запрос к файлу ajax.php, который есть в обоих версиях модуля. В этом файле формируется блок корзины и отсылается нам обратно. Когда же страница обновляется, то блок этот формируется уже в файле /tmpl/default.php.
/* лирическое отступление begin */
Это дичайший маразм - когда код и шаблон смешаны в одну кучу. Да, ajax-корзину сложно сделать иначе, вынося шаблон в отдельные файлы, но в joomlа так смешано собственно говоря, все. Я, вообще не понимаю мазохистов, которые пишут, используют дорабатывают жумлу с архитектурой 15-летней давности.
/* лирическое отступление end */
Собственно вывод картинок находится в цикле
PHP:
foreach ($data->products as $product) {}
, который начинается на 148 строке (модуль 1). Картинка выводится вот тут:
PHP:
<div class="imag">
<?php
foreach($prodcart as $key=>$v){
if($v->virtuemart_product_id == $product['product_vm_id']) {
$thumb = !empty($v->images[0]) ? $v->images[0]->displayMediaThumb('class="image"', false, 'class="modal"', true, true) : '';
echo $thumb;
}
}
?>
</div>
А вот что это за foreach($prodcart as $key=>$v) - я вообще не понял. Какие-то переменные и функции из жумла-фреймворка. Я не знаю, в общем. Но явно картинку оно нифига не отображает.
Во втором модуле картинки в аякс-выдаче (ajax.php) выводятся вот так:
PHP:
foreach ($data->products as $product){
$product["image"] = JString::str_ireplace( 'modules/mod_ice_virtuemart_cart/', '', $product["image"]);
?><div style="clear:both;"></div>
<div class="lof_item">
<a href="<?php echo $product["link"];?>"><img src="<?php echo $product["image"]; ?>" alt="<?php print htmlspecialchars($product['product_name']);?>"/></a>
Но перед этим есть подготовка данных по товарам, начиная со строки 105 (модуль 2).
PHP:
if(!empty($data->products)){
foreach($data->products as $key=>$value){
$product = isset($tmp[$value["product_sku"]])?$tmp[$value["product_sku"]]:null;
if(empty($product)){
$product_name = strip_tags($value["product_name"]);
$product_name = JFilterOutput::stringURLSafe($product_name);
$product = isset($tmp2[$product_name])?$tmp2[$product_name]:null;
}
if(!empty($product)){
$tmpArray = array();
$data->products[$key]["virtuemart_product_id"] = $product->virtuemart_product_id;
$data->products[$key]["product_name"] = $product->product_name;
$data->products[$key]["product_in_stock"] = $product->product_in_stock;
$data->products[$key]["virtuemart_media_id"] = $product->virtuemart_media_id;
$data->products[$key]["categories"] = $product->categories;
$data->products[$key]["virtuemart_category_id"] = $product->virtuemart_category_id;
$data->products[$key]["link"] = $product->link;
$data->products[$key]["image"] = "";
$mediaModel = VmModel::getModel('Media');
$tmpProduct = new stdClass;
$tmpProduct->virtuemart_media_id = $data->products[$key]["virtuemart_media_id"];
$mediaModel->attachImages($tmpProduct, "products", "image", 0);
if(isset($tmpProduct->images) && !empty($tmpProduct->images)){
$data->products[$key]["image"] = $tmpProduct->images[0]->file_url_thumb;
}
if(strpos( $data->products[$key]["image"], "http") === FALSE && strpos($data->products[$key]["image"], "https") === FALSE){
$data->products[$key]["image"] = JURI::base().$data->products[$key]["image"];
}
}
}
}
В общем, попробуйте заменить файл ajax.php
Если не получится, попробуйте вставить код подготовки данных по товарам из 2 модуля в первый, между 107 и 108 строкой. Ну и соответственно заменить все между <div class='imag'>...</div>. За то, что будет работать не ручаюсь - проверить негде, да и жумлянская внутренняя архитектура для меня всегда была загадкой.
P.S. Дружеский совет - переходите на Opencart^)