1. Extension-Dateien/-Inhalte auslagern:
- metatags/ext_typoscript_setup.ts ins eigene TypoScript (Setup) kopieren
- metatags/ext_typoscript_constants.ts ins eigene TypoScript (Constants) kopieren
- metatags/meta.php z.b. nach fileadmin/php/meta.php kopieren
2. Anpassungen TypoScript-Setup:
- PHP_SCRIPT durch USER ersetzen, und "includeLibs" und "userFunc" statt "file" verwenden:
plugin.meta = USER
plugin.meta {
#file = EXT:metatags/meta.php
includeLibs = fileadmin/php/meta.php
userFunc = user_metatags
...
- ggf. page.headerData (in plugin.meta) auskommentieren und im eigenen PAGE-Objekt neu einfuegen
3. Anpassungen PHP:
- den Inhalt von meta.php in eine Funktion gemaess "userFunc" (siehe oben) verpacken, und Referenzen auf "$this" entfernen/ersetzen:
function user_metatags($content, $conf) {
//if (!is_object($this)) die('Not called from cObj!');
...
//$localDescription = trim($this->stdWrap($local['description'],$local['description.']));
//$localKeywords = trim($this->stdWrap($local['keywords'],$local['keywords.']));
$obj = $GLOBALS['TSFE']->cObj;
$localDescription = trim($obj->stdWrap($local['description'],$local['description.']));
$localKeywords = trim($obj->stdWrap($local['keywords'],$local['keywords.']));
Das Extension-Verzeichnis "metatags" kann abschliessend geloescht werden.
Hilft Dir bei Deiner Arbeit. Zeigt Dir das was nicht im Handbuch steht. Loest unloesbare Probleme. Das Schweizer Taschenmesser und die milchgebende Eier-Sau im Wollpelz in Sachen TYPO3.
Showing posts with label php. Show all posts
Showing posts with label php. Show all posts
Thursday, December 14, 2017
Wednesday, April 30, 2014
Tipps zur Migration von TYPO3 4.x auf 6.x / Extensions auf TYPO3 6.0 / 6.1 / 6.2 anpassen
http://wiki.typo3.org/TYPO3_6.0_Extension_Migration_Tips
Thursday, April 3, 2014
Wie kann ich eine TypoScript-Constants Datei ohne die TYPO3-Frontend-Umgebung benutzen/lesen/parsen/auswerten?
Eine grundlegende Beschreibung zum parsen von TypoScript-Dateien befindet sich hier:
http://docs.typo3.org/typo3cms/TyposcriptSyntaxReference/TypoScriptParserApi/Index.html
Diese wendet sich aber an (Core-)Extension-Entwickler, die z.b. TypoScript-Erweiterungen implementieren moechten.
Falls man die bestehenden TypoScript-Moeglichkeiten, d.h. das bestehende Framework nutzen moechte, wird etwas mehr benoetigt.
Hier ein gekuerztes Beispiel, das aus folgender Situation entstanden ist: in einem eigenen PHP-Page-Not-Found-Handler sollen Werte aus einer TypoScript-Constants-Datei verwendet werden. Im Page-Not-Found-Handler stehen die Werte aus $GLOBALS['TSFE'] nur unvollstaendig zur Verfuegung (da ja keine Seite gefunden wurde), und vor allem kein $GLOBALS['TSFE']->tmpl->setup (d.h. ausgewertetes TypoScript-Setup).
require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('core') . 'Classes/Utility/GeneralUtility.php');
require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('core') . 'Classes/TypoScript/Parser/TypoScriptParser.php');
require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('frontend') . 'Classes/Configuration/TypoScript/ConditionMatching/ConditionMatcher.php');
class myPhpObjectClass {
function myMethod() {
// 1. read our typoscript constants file:
$constants_ts = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/path/to/your/constantsfile.ts');
// 2. build typoscript parser:
$TSparserObject = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Core\TypoScript\Parser\TypoScriptParser');
// 3. build matchObject for TypoScript conditions to work (ooh, very typo3-ish...):
$matchObject = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Frontend\Configuration\TypoScript\ConditionMatching\ConditionMatcher');
// 4. add to (incomplete, because page-not-found) $GLOBALS['TSFE'], required by our $matchObject
// (actually only rootLine required, but we build complete tmpl object, just for the sake of typo3-ness...):
$GLOBALS['TSFE']->tmpl = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Core\TypoScript\TemplateService');
$GLOBALS['TSFE']->tmpl->rootLine = $pObj->rootLine;
// 5. parse typoscript (ooh, again, very typo3-ish: must check include lines... separately...)
$constants_ts = \TYPO3\CMS\Core\TypoScript\Parser\TypoScriptParser::checkIncludeLines($constants_ts);
$TSparserObject->parse($constants_ts, $matchObject);
// 6. whatever we have parsed is now in $TSparserObject->setup:
$constants = $TSparserObject->setup;
// 7. finally, we can grab the values needed! :-)
$myValue = $constants['myValueFromConstantsfile'];
}
}
(entwickelt mit TYPO3 6.1.7)
Moegliche Verbesserungen:
- Wie parsed man eine Setup-Datei einschliesslich Konstanten (z.b. {$myConstant})?
- bessere Methode (statt file_get_contents($_SERVER['DOCUMENT_ROOT']...)) zum Einlesen der TypoScript-Datei?
Wednesday, February 26, 2014
Wie kann ich PHP TYPO3-Datenbank-Abfragen debuggen?
(fuer TYPO3 <= 4.7 ?)
Hier ein kurzes Beispiel:
$GLOBALS['TYPO3_DB']->debugOutput = true;
$GLOBALS['TYPO3_DB']->store_lastBuiltQuery = true;
$res = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
...
);
echo $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
Extbase SQL Queries ausgeben
(fuer TYPO3 >= 6.0 ?)
Quelle:
http://www.in2code.de/community/snippet-datenbank/snippets/detail/extbase-sql-queries-debuggen/
Extbase SQL Queries werden in der Datei...
typo3\sysext\extbase\Classes\Persistence\Storage\Typo3DbBackend.php
...in der Methode "buildQuery" erstellt. Hier koennen diese ausgegeben werden.
Um nicht jede Query (gesamter Seitenaufbau) auszugeben kann die gewuenschte Tabelle herausgefiltert werden:
Quelle:
http://www.in2code.de/community/snippet-datenbank/snippets/detail/extbase-sql-queries-debuggen/
Extbase SQL Queries werden in der Datei...
typo3\sysext\extbase\Classes\Persistence\Storage\Typo3DbBackend.php
...in der Methode "buildQuery" erstellt. Hier koennen diese ausgegeben werden.
Um nicht jede Query (gesamter Seitenaufbau) auszugeben kann die gewuenschte Tabelle herausgefiltert werden:
if (in_array("table_name", $sql['tables'])) {
echo $statement;
}
Subscribe to:
Posts (Atom)