Hallo Forum,
ich versuche gerade einen neuen Marker in die Extension pbsurvey einzubauen:
/**
* Fill the test marker
*
* @return string String containing the filled marker.
*/
function test() {
$arrMarker = "123";
$strOutput = $this->cObj->substituteMarkerArray($this->cObj->getSubpart($this->arrConfig['templateCode'],'TEST'),$arrMarker,'###|###',1);
return $strOutput;
}
Der Marker wird ersetzt bzw. er taucht nicht so ###TEST### auf der Seite auf. Leider wird aber auch nicht 123 ausgegeben. Sieht jemand meinen Fehler?
Grüße und Danke.
Walter
ist das ein quix und wir sollen jetzt raten
- ob function test() überhaupt eingebunden ist
- wo function test() geladen wird
- wie die lottozahlen sind?
georg
Hallo just2b,
sorry, natürlich schlecht, wenn da nur die Glaskugel helfen so
1. Die function text() wurde direkt in den pbsurvey_pi1.php eingebunden
2.Hier werden die Marker gesetzt und normalerweise auch ersetzt:
/**
* Define all possible markers in the survey template.
*
* @return string String containing the filled template.
*/
function setMarkers() {
$arrMarkers = array(
'url' => '$this->url',
'pagenumbering' => '$this->pageNumber($this->arrConfig["page_numbering"])',
'backbutton' => '$this->setButton("back")',
'cancelbutton' => '$this->setButton("cancel")',
'submitbutton' => '$this->setButton("submit")',
'items' => '$this->strOutItems',
'totalitems' => 'count($this->arrSurveyItems)',
'doneitems' => '$this->intPastItems',
'currentids' => '$this->markerCurrentIds()',
'stage' => '$this->intStage',
'header' => '$this->processQuestion($this->arrPage)',
'submitvalues' => '$this->strCsCalls',
'validation' => '$this->strSsCalls',
'validationerr' => '$this->validationError($this->arrValidationErrors)',
'formstyle' => '$this->formStyle()',
'noscript' => '$this->noScript()',
//Hier wird test() aufgerufen
'test' => '$this->test()'
);
return $strOutput = $this->getMarkers($arrMarkers);
}
/**
* Process the marker array.
*
* @param array Definition array for TypoScipt and FlexForm
* @return array Configuration array made from TypoScript and FlexForm
*/
function getMarkers($arrMarkers) {
$strEmpty = '';
$arrTemp = array();
foreach ($arrMarkers as $strKey => $strItem) {
if (!$strItem) {
$strItem = '$strEmpty';
}
eval("\$arrTemp['".$strKey."'] = ".$strItem.";");
}
$strTemplate = $this->cObj->getSubpart($this->arrConfig['templateCode'],'SURVEYFORM');
$strOutput = $this->cObj->substituteMarkerArray($strTemplate,$arrTemp,'###|###',1);
return $strOutput;
}
3. Die könntest Du mir auch noch hier posten. Bei der Community, würde sicherlich jeder noch nen 1€ bekommen ;-)
Ich hoffe das reicht an Informationen, oder brauchst Du noch was mehr?
Grüße und Danke
Walter
EDIT: Problem gefunden: Fehlerhafter Subpart im HTML-Template hatte das ! im Kommentar vergessen. Mann, Mann... Sorry für die voreilige Thread-Eröffnung. Versuche das in Zukunft zu vermeiden.
Oh Mann, ich muss nochmals zurückrudern.
Ich versuche nun an einer anderen Stelle einen Marker zu ersetzen. Das HTML sieht so aus:
<!-- ###SINGLEVIEW### begin -->
###FIELD1###
<!-- ###SINGLEVIEW### end -->
Nun möchte ich mit folgendem Code den Marker ###FIELD1### ersetzen:
$this->templateCode = $this->cObj->fileResource('EXT:pbsurvey/pi1/template.html');
$template['test'] = $this->cObj->getSubpart($this->templateCode,'SINGLEVIEW');
$markerArray['###FIELD1###'] = 'Testtext';
$strOutput = $this->cObj->substituteMarkerArrayCached($template['test'], $markerArray);
return $strOutput;
Das funktioniert nicht, ich weiß aber nicht warum.
Brächte da wohl doch etwas Hilfe. :o
Danke und Gruß
Walter
Hallo,
$template['test'] = $this->cObj->getSubpart($this->templateCode,'###SINGLEVIEW###');
georg
Hallo Georg,
danke für deine Hilfe. Jetzt passt es. Ich habe das Ganze jetzt auch noch über einen Hook gelöst, da ich dort jetzt ein separates Template habe und ich mein Zeug nun schön getrennt von der pbsurvey-Ext entwickeln kann.
Danke, du bist klasse!
Gruß
Walter
Hallo,
nochmal zu dem Thema. Ich musste gerade feststellen, dass ich mich wohl doch etwas zu früh gefreut habe und mir mein Marker nur ausgegeben wird, weil er in die $content-Variable "gerutscht" ist.
Nochmal die Frage, kann ich über einen normalen Hook dieser Art:
function callHook($arrItem) {
if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey][$this->prefixId]['processHookItem'])) {
foreach($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey][$this->prefixId]['processHookItem'] as $_classRef) {
$_procObj = & t3lib_div::getUserObj($_classRef);
$strOutput = $_procObj->hookItemProcessor($arrItem, $this);
}
return $strOutput;
}
}
meinen eigenen Marker einschleußen? Ich habe mir das so vorgestellt:
<?php
class tx_extkey {
function hookItemProcessor($arrItem,&$pObj) {
...
//loading template
$pObj->templateCode = $pObj->cObj->fileResource('EXT:pbsurvey/pi1/template.html');
$template['test'] = $pObj->cObj->getSubpart($pObj->templateCode,'###SINGLEVIEW###');
$markerArray['###FIELD1###'] = 'mein Text'
$strOutput.= $pObj->cObj->substituteMarkerArrayCached($template['test'], $markerArray);
}
return $strOutput;
...
?>
Leider wird ###FIELD1### nicht ersetzt. Ich kapier das anscheinend doch noch nicht so ganz. Vielleicht jemand, der sich meinem Problem annehmen kann?
Grüße
Walter
Also in Zeile 10 fehlt schonmal ein Semikolon.
Sorry, für die Leichenfledderei. Bin gerade auf der Suche darauf gestoßen...