Cache backend utilisant Zend Data Cache

Par défaut

Depuis la version 4.5 de TYPO3, il est possible de spécifier à votre installation d’utiliser le nouveau framework de cache. Celui-ci est une petite révolution en soit et apporte tout un tas de nouveautés et d’améliorations.

Deux types de cache
Le cache backend et le cache frontend.
Par défaut TYPO3 propose différentes façons de stocker des données en cache. Par exemple pour le cache backend, il est possible de lui spécifier de stocker ses données dans Memcached ou dans APC.
Ce qui est encore plus intéressant là dedans, c’est que ce système est extensible, il est possible de définir de nouveaux systèmes de stockage.

Extension du système de cache
Il se trouve que je m’occupe partiellement du site web des Haras-nationaux, hébergé sur un Zend Server. Ce dernier fournit un composant nommé « Zend Data Cache » qui, pour faire simple, permet de stocker des variables et des objets php en mémoire ou sur le disque.

Après quelques recherches et un ou deux coups de pousse, voici l’extension « cache_backend_zend« , disponible dés à présent sur le TER.

Pour note car ça peut toujours servir, le constructeur de la classe t3lib_cache_backend_AbstractBackend a changé depuis TYPO3 4.6. Il s’appelle maintenant avec deux arguments alors que par le passé un seul était nécessaire. D’où la petite bidouille dans le code de l’extension.

Certification d’intégrateur Typo3

Par défaut

Voilà les résultats sont enfin tombés et je suis très content de découvrir que j’ai réussi l’exam lors de l’Université d’été Typo3, me voilà donc officiellement certifié « Typo3 Integrator ».

Nous sommes pour le moment une petite quarantaine en France. Si jamais vous souhaitiez vous aussi la passer, je vous recommande vivement d’acheter l’ebook. N’hésitez pas non plus à lire le billet d’infoglobe à ce sujet, personnellement c’est ce qui m’a décidé à la passer.

Lister les fichiers d’un dossier en TypoScript

Par défaut

Petit exemple sommaire et perfectible pour liste des fichiers contenu dans un dossier en Typoscript.
L’idée ici est de lister des images pour un carrousel.

20 = TEXT
20 {
 wrap = |
 filelist = fileadmin/templates/monsite/carousel_bandeau/||name
 split {
  token = ,
  cObjNum = 1
  1 = TEXT
  1 {
   current = 1
   wrap = < img src="fileadmin/templates/monsite/carousel_bandeau/|" />
  }
 }
}

Source : http://old.nabble.com/-TYPO3-english–List-of-files-from-a-directory-with-TS-td24562172.html

Utiliser des sections à la TemplaVoilà dans une flexform

Par défaut
Il est parfois nécessaire de pouvoir saisir des éléments répétitifs au travers d’un flexform, de la même façon qu’il est possible de le faire via les FCE de TemplaVoilà.

Le FlexForm :

 

<accroche>
  <TCEforms>
    <label>Accroche</label>
    <config>
      <type>text</type>
      <cols>30</cols>
      <rows>5</rows>
    </config>
  </TCEforms>
</accroche>
<services>
  <section>1</section>
  <type>array</type>
  <el>
    <service>
      <type>array</type>
      <tx_templavoila>
        <title>Ajouter un service</title>
      </tx_templavoila>
      <el>
        <nom>
          <TCEforms>
            <label>Nom</label>
            <config>
              <type>input</type>
              <size>30</size>
            </config>
          </TCEforms>
        </nom>
        <description>
          <TCEforms>
            <label>Description</label>
            <config>
              <type>text</type>
              <cols>30</cols>
              <rows>5</rows>
            </config>
          </TCEforms>
        </description>
      </el>
    </service>
  </el>
</services>

 

La partie php (ok elle est moche et perfectible) :
&lt;?php
/**
 * Récupère les valeur du flexform
 */

function getFlexform2Array() {
 $piFlexForm = $this-&gt;cObj-&gt;data['pi_flexform'];
 foreach($piFlexForm['data'] as $sheet =&gt; $data) { 
  foreach($data as $lang =&gt; $value) { 
   foreach($value as $key =&gt; $val) {  
    if(isset($val['el']) == true) { 
     $this-&gt;lConf[$key] = $this-&gt;getFlexFormSection($val);
    } else {
     $this-&gt;lConf[$key] = $this-&gt;pi_getFFvalue($piFlexForm, $key, $sheet);
    }
   }
  }
 }
}

/**
 * Récupère les valeurs d'une section
 * @param Array Section data
 * @return Array Valeurs de la section
 */

function getFlexFormSection($sections) {
 foreach($sections['el'] as $section) {
  foreach($section as $sectionName =&gt; $sectionData) {
   if(is_array($sectionData['el'])) {
    $temp = Array();
    foreach($sectionData['el'] as $key =&gt; $value) {
     $temp[$key] = $value['vDEF'];
    }
    $sectionArray[$sectionName][] = $temp;
   }
  }
 }
 return $sectionArray;
}

 

Vous n’avez plus qu’à appeler getFlexform2Array() dans votre main, les valeurs renseignées dans le flexform se retrouverons dans le tableau $this->lConf

Typo3 – Récupérer des infos sur une page

Par défaut

Il est parfois nécessaire de récupérer le titre et diverses autres informations sur une page (titre, sous titre, id page parent, etc), notamment pour générer un lien.

// $uid étant l'id de la page
$pageInfos = $GLOBALS['TSFE']->sys_page->getPage($uid);

// Pour les pages traduites
$pageInfos = $GLOBALS['TSFE']->sys_page->getPageOverlay($uid, $GLOBALS['TSFE']->sys_language_uid);