Zum Inhalt springen

JavaScript-Variablen setzen mit TS

Erstellt am 2. Juli 2008 · 3 Antworten · letzte Antwort am 9. Juli 2008

Tags: Frage

goood.​guy ·

Hallo,

ich würde gerne per TS ein paar JavaScript-Variablen mit Werten aus der Datenbank setzen.

Typo3 4.1.7
Realurl 1.0.0

page.headerData.90 = COA
page.headerData.90{
  ...
  wrap = <script type="text/javascript">|</script>
  40 = CONTENT
  40{
    table = tx_realurl_pathcache
    select {
       selectFields = pagepath
       where = language_id = 0
       andWhere = TEXT
       andWhere.dataWrap = page_id = {TSFE:id}
    }
    renderObj = TEXT
    renderObj.field = pagepath
    renderObj.wrap = var jsTitle = '|';
  }
  
}

Wenn ich das mache bekomme ich bei der Ausgabe der Seite folgende Fehlermeldung:

NO entry in the $TCA-array for the table "tx_realurl_pathcache". This means that the function enableFields() is called with an invalid table name as argument.

Gibt es irgendeine Möglichkeit ihm die Abfrage der enableFields abzugewöhnen (die es nicht gibt in der Tabelle)?

Alternativ wäre auch folgendes denkbar:

page.headerData.90 = COA
page.headerData.90{ 
  10 = TEXT
  10.field = title
  10.case = lower
  10.rawUrlEncode = 1
  10.wrap = var jsTitle = '|';
  wrap = <script type="text/javascript">|</script>
}

Gäbe es hier eine andere Möglichkeit den Seitennamen schöner darzustellen als mit rawurlencode?

var jsTitle = 'seitentitel_mit_leerzeichen'; // wäre schöner als
var jsTitle = 'seitentitel%20mit%20leerzeichen';
goood.​guy ·

ok, ich habe mich jetzt für die einfachere variante ohne realurl entschieden.

allerdings habe ich jetzt wiederum ein anderes problem: ich möchte, dass auf allen übersetzungen einer seite, der seitentitel der standardsprache verwendet wird:

folgendes geht jedoch nicht. das cObj ist einfach leer:

  10 = CONTENT
  10{
    table = pages
    select {
     pidInList = this
     andWhere.dataWrap = uid={TSFE:id}
     max = 1
    }
    renderObj = TEXT
    renderObj.field = title
    renderObj.case = lower
    renderObj.rawUrlEncode = 1
    renderObj.wrap = var jsTitle = '|';
  }

ich bin schon recht verzweifelt, also bitte helft mir!

Folgendes habe ich noch probiert:

dataWrap = uid={page:uid}
dataWrap = uid={field:uid}
dataWrap = uid={GPvar:id}

verwende. #angry#

goood.​guy ·

hab's:

10 = CONTENT
  10{
    table = pages
    select {
     pidInList.field = pid
     andWhere.dataWrap = uid={TSFE:id}
     max = 1
    }
    renderObj = TEXT
    renderObj.field = title
    renderObj.case = lower
    renderObj.rawUrlEncode = 1
    renderObj.wrap = var jsTitle = '|';
  }
goood.​guy ·

mir ist noch was zum problem
"NO entry in the $TCA-array for the table "tx_realurl_pathcache". This means that the function enableFields() is called with an invalid table name as argument."
eingefallen:

Man könnte die tabelle 'pages' durch einen JOIN-Befehl mit 'tx_realurl_pathcache' verbinden.

dann nimmt er die enableFields von 'pages' und kann doch auf das feld 'pagepath' zugreifen.

werde das mal bei gelegenheit ausprobieren und hier ggf das TS posten.