« Mai 2012»
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Kategorien

Blogrolls

Letzte Kommentare

Inline
04.02.2011 13:09

Archiv

Kopieren Sie diesen Link in Ihren RSS-Reader

RSS 0.91Nachrichten
RSS 2.0Nachrichten

Meist gelesene Posts

Wochentag lokalisiert mit Fluid aus einem DateTime Objekt...
918 mal angeschaut
03.02.2011 15:38
TYPO3 Backend Layouts
675 mal angeschaut
27.04.2011 23:57
TYPO3 4.5 und kb_nescefe und Security Token
658 mal angeschaut
18.03.2011 17:43
JQuery und IE9
625 mal angeschaut
24.03.2011 10:31

Zur Zeit wird gefiltert nach: typoscript
Filter zurücksetzen

28.11.2011
12:30

Extbase, AJAX und sys_language_mode = strict

Aufgabenstellung

Datensätze sollen in einem JQGrid angezeigt werden. Es sollen jedoch nur die lokalisierten Datensätze dargestellt werden. Standardmäßig werden die Datensätze der Standardsprache angezeigt, wenn keine Übersetzung in der ausgewählten Sprache vorliegt.

sys_language_mode = strict

Im TYPOScript für die XML Ausgabe den sys_language_mode setzten:

tx_toco3whatever_ajax = PAGE
tx_toco3whatever_ajax {
 typeNum = 6001
  config {
    disableAllHeaderCode = 1
    disablePrefixComment = 1
    additionalHeaders = Content-type: text/xml
    xhtml_cleaning = 0
    admPanel = 0
    sys_language_mode = strict
  }

 

  10 = COA_INT
  10.10 < tt_content.list.20.toco3whatever_ajax
}

 

Zurück

11.05.2011
13:54

automatische Sprachwahl bei der Integration von TYPO3 in Facebook

Automatische Sprachwahl bei der Integration von TYPO3 in Facebook

In unserem letzten Blog Eintrag haben wir beschrieben, wie man TYPO3 in Facebook integrieren kann. Dieser Beitrag erklärt, wie man zusätzlich noch die Sprache der integrierten TYPO3 Site automatisch auf die in Facebook gewählte Sprache schaltet.

Vorbereitung

Zunächst legt man ganz gewöhnlich die Sprachen in TYPO3 an und übersetzt die Seiten. Wir zeigen hier ein Beispiel für einen Single-Tree, dieses läßt sich aber auch auf den Multi-Tree Ansatz übertragen. Das TYPOScript sollte schon soweit funktionieren, dass sich die Sprache über einen Parameter auswählen läßt, d.h. es sollte etwas in diese Art im TYPOScript zu finden sein:

 

config.linkVars = L

#English, sys_language.uid = 0
[globalVar = GP:L = 0]
config.sys_language_uid = 0
config.language = en
config.locale_all = en_GB
config.htmlTag_langKey = en

#German, sys_language.uid = 1
[globalVar = GP:L = 1]
config.sys_language_uid = 1
config.language = de
config.locale_all = de_DE
config.htmlTag_langKey = de
[global]

Die ausgwählte Sprache von Facebook abfragen

Die Sprache, die der Facebook User eingestellt hat, läßt sich über eine User Funktion in TYPOScript abfragen.

Hierzu benötigt man zunächst ein entsprechendes Skript. Da der TYPO3 Core die localconf.php teilweise öfter ausführt kommt es zu Fehlern, wenn man die Funktion direkt dort hineinschreibt. Daher erstellt man ein neues File in typo3conf, z.B. facebook.php mit folgenden Inhalt:

<?php
function parse_signed_request($signed_request, $secret)
{
    list($encoded_sig, $payload) = explode('.', $signed_request, 2);
    // decode the data
    $sig = base64_url_decode($encoded_sig);
    $data = json_decode(base64_url_decode($payload), true);

    if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
        error_log('Unknown algorithm. Expected HMAC-SHA256');
        return null;
    }
    // check sig
    $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
    if ($sig !== $expected_sig) {
        error_log('Bad Signed JSON signature!');
        return null;
    }
    return $data;
}
function base64_url_decode($input)
{
    return base64_decode(strtr($input, '-_', '+/'));
}

function user_facebook($lan)
{
    $app_secret = "f170ea8186b8acf89a511a4295148f27";
    $data = parse_signed_request($_REQUEST['signed_request'], $app_secret);
    $page_user = $data['user'];
    if ($lan == $page_user['locale']) {
        return true;
    } else {
        return false;
    }
}

?>

 

diese wir dann in der localconf.php inkludiert:

include_once('facebook.php');

(wichtig: include_once verwenden!) 

TYPOScript anpassen

Im letzten Schritt wird über eine UserFunc die Facebook Locale abgefragt und dementspechend die Sprache gesetzt:

[userFunc = user_facebook(de_DE)]
config.sys_language_uid = 1
config.language = de
config.locale_all = de_DE
config.htmlTag_langKey = de
[end]

(das PHP File muss vorher nicht über TYPOScript inkludiert werden, der Eintrag in der localconf.php reicht aus)

Zurück

27.04.2011
23:57

TYPO3 Backend Layouts

Ein noch recht neues Feature in TYPO3 sind Backendlayouts. Mit Hilfe dieser kann man im Backend die Spalten analog zum Frontend anordnen und pro Seite ein Layout wählen. Das ist sehr hilfreich, wenn das Design z.B. einen ein- oder zweispaltigen Inhaltsbereich vorsieht.

Eine schöne Anleitung wie man de Backendlayouts in TYPO3 verwendet, findet man bei den undkonsorten.

Für die Einbindung im TypoSript Template habe ich noch einen etwas anderen Ansatz:

zunächst definiert man die Inhalte, abhängig des Layouts, z.B.:

#1 col
temp.1col = COA
temp.1col {
  10 < styles.content.get
  wrap = <div id="main">|</div>
}  

#2 cols
temp.2cols = COA
temp.2cols {
  10 < styles.content.get
  10.wrap = <div class="left">|</div>
  20 < styles.content.getRight
  20.wrap = <div class="right">|</div>
  wrap = <div id="main">|</div>
}

 

dann wählt man mit einer Bedingung aus, welches dieser Konstrukte eingebunden werden soll:

page {

  #1 or 2 cols
  10 = CASE
  10 {
    key.data = levelfield:-1,backend_layout_next_level,slide
    key.override.field = backend_layout
    1 < temp.1col
    2 < temp.2cols
  }

}

Zurück