contao/import — Issue #3288: Hook extendCacheKey
Author: tristanlins
Created: 2011-11-29 21:17:27+00:00
State: open
Labels: backend, Feature

Ich habe folgendes Problem, ich möchte in einer Erweiterung verschiedene Ausgaben für Desktop und Mobile Geräte erzeugen. Das ganze wird sich dann jedoch mit dem Cache streiten, denn die requestUri ist immer identisch. Deshalb hätte ich gerne einen Hook, mit dem ich den $strCacheKey verändern kann, dass scheint mir die flexibelste Lösung zu sein.

Das könnte dann so aussehen:

**config.php**

```
$GLOBALS['TL_HOOKS']['extendCacheKey'][] = array('Hooks', 'hookExtendCacheKey');
```

**Hooks.php**

```
class Hooks extens System {
public function hookExtendCacheKey($strCacheKey)
{
$ua = $this->Environment->agent;
if ($ua->mobile)
{
$strCacheKey = 'mobile:' . $strCacheKey;
}
return $strCacheKey;
}
}
```

**_Notwendige Änderungen an Contao_**:

**index.php:243**

```
// HOOK: extend cache key
if (isset($GLOBALS['TL_HOOKS']['extendCacheKey']) && is_array($GLOBALS['TL_HOOKS']['extendCacheKey']))
{
foreach ($GLOBALS['TL_HOOKS']['extendCacheKey'] as $callback)
{
$this->import($callback[0]);
$strCacheKey = $this->$callback[0]->$callback[1]($strCacheKey);
}
}
```

**system/modules/frontend/FrontendTemplate.php:129**

```
// HOOK: extend cache key
if (isset($GLOBALS['TL_HOOKS']['extendCacheKey']) && is_array($GLOBALS['TL_HOOKS']['extendCacheKey']))
{
foreach ($GLOBALS['TL_HOOKS']['extendCacheKey'] as $callback)
{
$this->import($callback[0]);
$strUniqueKey = $this->$callback[0]->$callback[1]($strUniqueKey);
}
}
```

Und um eines gleich vorweg zu schieben, ein Contao internes Feature das den Cache lediglich zwischen Desktop und Mobil unterscheidet fände ich als sehr einängend ;-)
Dieser Hook ist ideal um Projektbezogene Anpassungen vorzunehmen. Ich könnte mir unter gewissen Umständen auch vorstellen, dass z.B. eine Variante für einen bestimmten Browser generiert werden könnte.

--- _Originally created on July 22nd, 2011, at 10:36am (ID 3288)_