---
title: Configuration multitienda — por tienda y por grupo
section: multistore
slug: config
description: "Como usar la API Configuration de PrestaShop en entornos multitienda: leer y escribir configuracion por tienda, por grupo, y manejar la herencia de valores."
keywords: prestashop multitienda Configuration get updateValue por tienda id_shop herencia configuracion
last_updated: 2024-12-01
source_url: "https://ayudaprestashop.es/multistore/config"
---

# Configuration multitienda — por tienda y por grupo

> Como usar la API Configuration de PrestaShop en entornos multitienda: leer y escribir configuracion por tienda, por grupo, y manejar la herencia de valores.

La API `Configuration` de PrestaShop soporta multitienda de forma nativa. Puedes guardar valores diferentes para cada tienda y leer el valor de la tienda activa con la misma llamada `Configuration::get()`. Los valores se heredan del nivel superior si no se han sobreescrito.

## Configuration::get() en multitienda

*Leer configuracion con soporte multitienda*

```php
<?php

// Lee el valor del contexto actual (tienda activa)
// Si la tienda no tiene valor propio, hereda del grupo/global
$value = Configuration::get('MY_MODULE_KEY');

// Leer valor de una tienda especifica
$value = Configuration::get(
    'MY_MODULE_KEY',
    null,  // id_lang (null = sin idioma)
    null,  // id_shop_group (null = ignorar)
    5      // id_shop = 5
);

// Leer valor de un grupo de tiendas
$value = Configuration::get(
    'MY_MODULE_KEY',
    null,
    2,     // id_shop_group = 2
    null
);

// Con valor por defecto
$value = Configuration::get('MY_MODULE_KEY') ?: 'valor_default';

// Obtener todos los valores por tienda (array id_shop => valor)
$allValues = Configuration::getMultiShopValues('MY_MODULE_KEY');
```

## Configuration::updateValue() por tienda

*Guardar configuracion para una tienda especifica*

```php
<?php

// Guardar globalmente (para todas las tiendas / herencia)
Configuration::updateValue('MY_MODULE_KEY', 'valor_global');

// Guardar para una tienda especifica
Configuration::updateValue(
    'MY_MODULE_KEY',
    'valor_tienda_1',
    false,  // html (false = sin HTML)
    null,   // id_shop_group
    1       // id_shop = 1
);

// Guardar para un grupo de tiendas
Configuration::updateValue(
    'MY_MODULE_KEY',
    'valor_grupo_2',
    false,
    2,      // id_shop_group = 2
    null
);

// Guardar para todas las tiendas activas
foreach (Shop::getShops(true) as $shop) {
    Configuration::updateValue(
        'MY_MODULE_KEY',
        'valor_' . $shop['id_shop'],
        false, null,
        (int) $shop['id_shop']
    );
}
```

## Herencia de valores entre contextos

| Nivel donde se guarda | Quien lo hereda |
| --- | --- |
| Global (sin id_shop, sin id_group) | Todas las tiendas que no tienen valor propio |
| Grupo (id_shop_group) | Tiendas del grupo que no tienen valor propio |
| Tienda (id_shop) | Solo esa tienda (maxima especificidad) |

## Patron: guardar para el contexto actual

*Guardar configuracion segun el contexto activo del BO*

```php
<?php

/**
 * Guardar configuracion respetando el contexto multitienda activo.
 * Llamar en postProcess() o processConfigForm().
 */
private function saveConfiguration(string $key, $value): void
{
    if (!Shop::isFeatureActive()) {
        // Tienda simple — guardar globalmente
        Configuration::updateValue($key, $value);
        return;
    }

    $context = Shop::getContext();

    if ($context === Shop::CONTEXT_ALL) {
        // Modo 'Todas las tiendas' — guardar globalmente
        Configuration::updateValue($key, $value);

    } elseif ($context === Shop::CONTEXT_GROUP) {
        // Por grupo
        Configuration::updateValue($key, $value, false, Shop::getContextShopGroupID(), null);

    } elseif ($context === Shop::CONTEXT_SHOP) {
        // Por tienda especifica
        Configuration::updateValue($key, $value, false, null, Shop::getContextShopID());
    }
}
```

## ObjectModel con campos multitienda

*Definir un ObjectModel con soporte multitienda*

```php
<?php

class MyModuleItem extends ObjectModel
{
    public $id_shop;
    public $name;
    public $active;

    public static $definition = [
        'table'   => 'mymodule_item',
        'primary' => 'id_mymodule_item',
        'multishop' => true,  // Activa el soporte multitienda
        'fields'  => [
            'id_shop' => ['type' => self::TYPE_INT],
            'name'    => [
                'type'     => self::TYPE_STRING,
                'required' => true,
                'size'     => 255,
            ],
            'active'  => ['type' => self::TYPE_BOOL],
        ],
        // Campos que se almacenan separados por tienda (en tabla _shop)
        'multilang_shop' => false,
    ];
}
```


---

*Fuente: [https://ayudaprestashop.es/multistore/config](https://ayudaprestashop.es/multistore/config). Version Markdown generada automaticamente para consumo por LLMs.*
