Ключ товара minishop2 fenom [MODX]

Ключ товара в minishop2 из сессии modx
02 Ноября 2023
php

Согласно исходникам ключ товара генирируется так

protected function getProductKey(array $ product, array $ options = [])
{ 
    $ key_fields = explode(',', $ this->config['cart_product_key_fields']);
    $ product['options'] = $ options;
    $ key = '';

    foreach ($ key_fields as $ key_field) { 
        if (isset($ product[$ key_field])) { 
            if (is_array($ product[$ key_field])) { 
                $ key .= json_encode($ product[$ key_field]);
            }  else { 
                $ key .= $ product[$ key_field];
            } 
        } 
    } 

    return 'ms' . md5($ key);
} 

Следующий код только для отчаяных

{ var $ key = ($ id ~ $ .php.round($ price |  replace:" ":"",2) ~ $ weight ~ ([] |  toJSON)) |  md5} 
  1. Код $ .php.round($ price | replace:" ":"",2) будет работать только если включена настройка Разрешить PHP в Fenom, он нужен для того чтобы округлить цену и убрать пробелы

  2. Код ([] | toJSON) подразумивает что у товара нет опций

Теперь можно, например, проверить есть ли товар в сессии корзины или нет

{ if $ .session['minishop2']['cart'][$ key]} 
    { var $ count=$ .session['minishop2']['cart'][$ key]['count']} 
{ /if}