Как сделать "добавить в список сравнения" без ссылки по аналогии с "добавить в избранное"

Меняем кнопку:

Спойлер
{$comp_list = $smarty.session.comparison_list}

{* constant *}
{$compare_button_type = $compare_button_type|default:"icon"}
{$but_name = "dispatch[product_features.add_product..$product_id]"}
{$but_id = $compare_but_id|default:"button_compare_$product_id"}
{$but_role = $compare_but_role|default:"text"}
{$but_href = $compare_but_href|default:$but_href}
{$but_onclick = $compare_but_onclick|default:$but_onclick}

{* dynamic *}
{$but_title = $compare_but_title|default:__("add_to_comparison_list")}
{$but_meta = $compare_but_meta|default:"compare"}

{* change active *}
{if $comp_list && in_array($product_id, $comp_list)}
	{$but_title = "Убрать из сравнения"}
	{$but_meta = "compare uk-active"}
{/if}

{if $compare_button_type == "icon"}
	{$but_icon = $compare_but_icon|default:"barchart"}
	{$but_text = $compare_but_text|default:false}
{else}
	{$but_icon = ($compare_but_icon === true) ? "barchart" : $compare_but_icon}
	{$but_text = $compare_but_text|default:__("add_to_comparison_list")}
{/if}

{include file="buttons/button.tpl"
	but_id=$but_id
	but_meta=$but_meta
	but_name=$but_name
	but_text=$but_text
	but_title=$but_title
	but_role=$but_role
	but_onclick=$but_onclick
	but_href=$but_href
	but_icon=$but_icon
}

И модифицируем контроллер product_features:

Спойлер
$list = 'features';

Tygh::$app['session']['excluded_features'] = isset(Tygh::$app['session']['excluded_features']) ? Tygh::$app['session']['excluded_features'] : [];
Tygh::$app['session']['comparison_list'] = isset(Tygh::$app['session']['comparison_list']) ? Tygh::$app['session']['comparison_list'] : [];
$comp_list = & Tygh::$app['session']['comparison_list'];
/*$auth = & Tygh::$app['session']['auth'];*/

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
	// Add feature to comparison list
	if ($mode === 'add_feature') {
		if (!empty($_REQUEST['add_features'])) {
			Tygh::$app['session']['excluded_features'] = array_diff(Tygh::$app['session']['excluded_features'], $_REQUEST['add_features']);
		}
	}

	if ($mode === 'add_product') {
		if (empty($comp_list)) $comp_list = array();
		$list = $_REQUEST['product_data'];

		foreach($list as $item) {
			$p_id = (int)$item['product_id'];
		}

		if (!in_array($p_id, $comp_list)) {
			array_unshift($comp_list, $p_id);
			$product_data = fn_get_product_data($p_id, $auth);
		}

		if (defined('AJAX_REQUEST')) {
			if (!empty($product_data)) {
				fn_gather_additional_product_data($product_data, true, true);
				$product_data['amount'] = 1;
				$product_data['display_price'] = $product_data['price'];

				$added_products = [$p_id => $product_data];
				Tygh::$app['view']->assign('added_products', $added_products);

				fn_set_notification('N', __('notice'), __('product_added_to_cl'));
			} else {
				$key = array_search($p_id, $comp_list);
				unset($comp_list[$key]);

				fn_set_notification('W', __('notice'), "Товар удалён из списка избранного");
			}
		} else {
			unset($_REQUEST['redirect_url']);
		}
	}

	return [CONTROLLER_STATUS_OK];
}

// Add product to comparison list
if ($mode === 'add_product') {
...

В common/product_data указываем id блоков, в которых будут ссылки и кнопки:

<input type="hidden" name="result_ids" value="cart_status*,comp_list*,wish_list*,checkout*,account_info*" />

Получилось вот так: CS Cart: избранное и сравнение ajax - YouTube

3 лайка