Ключ товара 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}