2017-10-18 11 views
0

J'ai un module backend simple, où vous pouvez basculer entre ou créer de nouveaux "thèmes". Pour simplifier, disons que le modèle ne contient qu'un logo et un code de couleur. Dans ma configuration typoscript J'utilise le code suivant pour obtenir les éléments de la DB:Comment diviser CONTENT -> renderObj en variables en utilisant typoscript?

temp.theme= CONTENT 
temp.theme{ 
      select{ 
       ... 
      } 
      renderObj = COA 
      renderObj { 
        #theme color 
        10 = TEXT 
        10.field = color 
        ... 
        #theme logo 
        40 = FILES 
        40{ 
         references { 
           ... 
         } 
         renderObj = IMAGE 
         renderObj { 
           wrap = <div class="logo">|</div> 
           file.import.data = file:current:originalUid 
         } 
        } 
      } 
} 

Comment puis-je diviser cet objet en variables? Cela ne fonctionnera pas, mais je suppose que c'est une bonne représentation de ce que je suis en train de réaliser:

lib.logo = COA 
lib.logo < temp.theme.renderObj.40 

Je veux aussi définir la couleur comme suit (évidemment cela ne fonctionnera pas non plus):

page.cssInline.1010 < temp.theme.renderObj.10 

Y a-t-il un meilleur moyen de réaliser ce que j'essaie de faire? Ce qui fonctionne jusqu'à présent pour moi est de copier cet objet, puis unset ce que je ne suis pas en utilisant:

temp.logo = COA 
temp.logo{ 
      10 < temp.theme 
      10.renderObj.10 > 
      ... 
      #10.renderObj.40 > 
      ... 
} 

Je suis sûr qu'il ya une façon plus simple, mais je ne pouvais pas trouver.

+0

Pouvez-vous expliquer ce que vous voulez imprimer sur la page? –

+0

oui, par exemple, je voudrais rendre le logo comme ceci: Pendant qu'il travaille de cette façon, je voudrais savoir s'il y a une solution plus élégante à mon problème, où je peux assigner le logo directement comme ceci: lib.logo

+0

Si votre objet PAGE utilise FLUIDTEMPLATE pour créer la page, vous pouvez assigner des "variables" à votre modèle de fluide: https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/Fluidtemplate/Index.html#variables –

Répondre

1

Vous devez en savoir plus sur les opérateurs et les cObjects de Typocript.

lib.logo = COA 
lib.logo < temp.theme.renderObj.40 

Cela rend lib.logo devenir un COA cObject puis vous copier seulement le renderObj de temp.theme à l'intérieur. Mais le renderObj est inutile sans l'objet CONTENT auquel il appartient. Donc, changez-le en

lib.logo < temp.theme 

et il copiera tout l'objet. Vous n'avez pas à le déclarer comme un COA avant. Peut-être n'avez-vous même pas besoin de temp. object - vous pouvez faire en sorte que lib.logo devienne l'objet CONTENT.

La même chose s'applique à page.cssInline.1010 - vous pouvez non seulement copier le renderObj. Copier un objet entier à ou faire devenir directement un objet CONTENU:

page.cssInline.1010 = CONTENT 
page.cssInline.1010 { 
    select{ 
    ... 
    } 
    renderObj = TEXT 
    renderObj { 
    field = color  
    } 
} 

La seule façon de stocker des résultats temporaires d'un renderObj est d'utiliser objets LOAD_REGISTER:https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/LoadRegister/Index.html?highlight=load_register

Tous cObjects docs: https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/Index.html Opérateurs: