MaZa 10 Опубликовано 2 мая, 2013 Жалоба Share Опубликовано 2 мая, 2013 Добрый день. в /templates/template/module/cross_selling.html есть метка: {$products_data.PRODUCTS_BUTTON_BUY_NOW} в результате, на сайте (в блоке реком.след.товары) ссылка получается вот такая: http://site.com/seo-path?action=buy_now это при включенной аякс-корзине и на товар у которого есть атрибуты. а должно быть так: http://site.com/seo-path?action=buy_now&BUYproducts_id=9999 как должно быть и чтоб работало посмотрел на главной странице, там всё ок. на главной используется шаблон /templates/template/module/new_products_default.html, но метка у него другая: {$module_data.PRODUCTS_BUTTON_BUY_NOW} помогите, подскажите, что исправить. из-за неправильной ссылки нельзя перейти на страницу карточки товара при нажатии на "купить"/"добавить" в корзину в блоке "рекомендуемые товары". Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 2 мая, 2013 Жалоба Share Опубликовано 2 мая, 2013 Добавьте на vamshop.ru/forum/tracker/ Так сразу вряд ли исправление будет. Там вроде есть проблема с получением id номера товара. Ссылка на сообщение Поделиться на другие сайты
MaZa 10 Опубликовано 2 мая, 2013 Автор Жалоба Share Опубликовано 2 мая, 2013 Запостил: http://vamshop.ru/forum/tracker/issue-132-неверная-ссылка-на-карточку-товара/ Да, я тоже думал, что проблема с получением id товара, т.к. в ф. которая рисует кнопку "Купить" getBuyNowButton передаются всего 2 аргумента ID и NAME. Хоть getBuyNowButton и использует ф. vam_href_link, но аргументы передаются ей одни и те же, что при включенной аякс-корзине, что при выключенной (и что имеет товар атрибуты, что не имеет), за исключением параметра onclick. То есть сам href для тега A должен быть один и тот же, в принципе так оно и работает в new_products_default. Подскажите, пожалуйста, куда копать чтобы пофиксить? (уж очень хочется по-скорее решить эту проблему) :( Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 2 мая, 2013 Жалоба Share Опубликовано 2 мая, 2013 Да вроде пытались исправить эту ошибку, но пока не получилось. Попробуем ещё раз. Но как я говорил, сразу не получится, придётся ждать. Сопутствующие достаются из /includes/classes/product.php В методе getCrossSell вроде так. Ссылка на сообщение Поделиться на другие сайты
MaZa 10 Опубликовано 7 мая, 2013 Автор Жалоба Share Опубликовано 7 мая, 2013 Блин. Я костыльных дел мастер.. Ну, не знаю я как лучше для системы сделать багфикс. Но в проблеме я разобрался и сейчас расскажу в чём заковырка. Но сперва мой костылёк: В includes/classes/product.php в функции (далее сокр. "ф.") getBuyNowButton($id, $name), после: global $PHP_SELF; добавляем: $vam_get_all_get_params_return = (basename($PHP_SELF) == 'product_info.php') ? preg_replace('/products_id=\d+&/', '', vam_get_all_get_params(array ('action'))) : vam_get_all_get_params(array ('action')); теперь немножко изменим переменную $link, меняем: if (AJAX_CART == 'true' && !vam_has_product_attributes($id)) { $link = '<a href="'.vam_href_link(basename($PHP_SELF), 'action=buy_now&BUYproducts_id='.$id.'&'.vam_get_all_get_params(array ('action')), 'NONSSL').'" onclick="doBuyNow(\''.$id.'\',\'1\'); return false;">'.vam_image('templates/'.CURRENT_TEMPLATE.'/buttons/' . $_SESSION['language'] . '/button_buy_now.png', TEXT_BUY.$name.TEXT_NOW).'</a>'; } else { $link = '<a href="'.vam_href_link(basename($PHP_SELF), 'action=buy_now&BUYproducts_id='.$id.'&'.vam_get_all_get_params(array ('action')), 'NONSSL').'">'.vam_image('templates/'.CURRENT_TEMPLATE.'/buttons/' . $_SESSION['language'] . '/button_buy_now.png', TEXT_BUY.$name.TEXT_NOW).'</a>'; } на это: if (AJAX_CART == 'true' && !vam_has_product_attributes($id)) { $link = '<a href="'.vam_href_link(basename($PHP_SELF), 'action=buy_now&BUYproducts_id='.$id.'&'.$vam_get_all_get_params_return, 'NONSSL').'" onclick="doBuyNow(\''.$id.'\',\'1\'); return false;">'.vam_image('templates/'.CURRENT_TEMPLATE.'/buttons/' . $_SESSION['language'] . '/button_buy_now.png', TEXT_BUY.$name.TEXT_NOW).'</a>'; } else { $link = '<a href="'.vam_href_link(basename($PHP_SELF), 'action=buy_now&BUYproducts_id='.$id.'&'.$vam_get_all_get_params_return, 'NONSSL').'">'.vam_image('templates/'.CURRENT_TEMPLATE.'/buttons/' . $_SESSION['language'] . '/button_buy_now.png', TEXT_BUY.$name.TEXT_NOW).'</a>'; } То есть мы просто заменили vam_get_all_get_params(array ('action')) на переменную $vam_get_all_get_params_return, которую выше этого условия создали. Теперь поясню в чём же проблема Всё просто. Например в cross_selling.html кнопка "Купить" рисуется след. вызовом: {$products_data.PRODUCTS_BUTTON_BUY_NOW}. Эти данные шаблонизатор берёт из файла: includes/classes/product.php из ф. buildDataArray(&$array,$image='thumbnail') Ф. buildDataArray(&$array,$image='thumbnail') вызывает ф. $this->getBuyNowButton($array['products_id'], $array['products_name']) Ф. getBuyNowButton($id, $name) для формирования атрибута href для тега <A> вызывает ф. vam_href_link, передавая ей разные необходимые аргументы. Среди передаваемых аргументов, один из них формируется вызовом ф. vam_get_all_get_params(array ('action')) из файла /inc/vam_get_all_params.inc.php Так вот, этот вызов возвращает строку: "products_id=9999&", (9999 - id товара), которая, напомню, передается ф. vam_href_link. Если последняя ф. принимает такой стринг, то она в конечном счёте не добавляет строку &BUYproducts_id=9999 в атрибут href тега A. Ничего удивительного в том, что ф. vam_get_all_get_params(array ('action')) возвращает нам products_id нет, т.к. она вызывается на карточке товара, данная функция черпает информацию из суперглобального массива $_GET, а там products_id просто обязан быть, иначе мы не сможем узнать какой товар мы должны отобразить на странице. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 7 мая, 2013 Жалоба Share Опубликовано 7 мая, 2013 Спасибо Ссылка на сообщение Поделиться на другие сайты
hobbat 0 Опубликовано 15 октября, 2014 Жалоба Share Опубликовано 15 октября, 2014 низкий поклон тебе, MaZa Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения