Hallo,
ich habe folgendes "Problem":
temp.ao_bannercode = COA
temp.ao_bannercode {
10 = CONTENT
10 {
stdWrap.required = 1
stdWrap.wrap = {$plugin.ao_bannercodes.stdWrap}
table = tx_aobannercodes_bannercodes
select {
pidInList = {$plugin.ao_bannercodes.pid}
orderBy = sorting
}
renderObj = TEXT
renderObj.field = bannercode
renderObj.wrap = {$plugin.ao_bannercodes.wrap}
}
}
Dieser Code (aus der Extension ao_bannercodes) holt mir alle Banner aus meinen Recods. Soll er aber nicht, ich will immer nur ein Banner. Einen Teil der Aufgabe habe ich bereits gelöst, mit
temp.ao_bannercode = COA
temp.ao_bannercode {
10 = CONTENT
10 {
stdWrap.required = 1
stdWrap.wrap = {$plugin.ao_bannercodes.stdWrap}
table = tx_aobannercodes_bannercodes
select {
pidInList = {$plugin.ao_bannercodes.pid}
############
max = 1
############
orderBy = sorting
}
renderObj = TEXT
renderObj.field = bannercode
renderObj.wrap = {$plugin.ao_bannercodes.wrap}
}
}
bekomme ich nur mehr den ersten Satz.
Ich möchte aber irgendeinen Satz. Ich dachte, dass das mit
begin = random
oder etwas in der Richtung gehen müsste - finde aber dazu nichts in der Doku.
Kann mir wer weiterhelfen?
lg
Herbert
allerdings nicht mit "Bordmittel" TS, sondern mit einer sehr guten Extension, die ich dann nur mehr aufbohren musste: RandomRecords.
Damit kann man nun zusätzlich bestimmen, aus welchen Bannern jeweils ein zufälliges auf der Seite angezeigt werden soll. Zudem kann man Banner damit nun als "normalen" Content anzeigen lassen.
Die Codeänderung muss man in class.tx_jhrandomrecords_pi1.php vornehmen:
<?php
require_once(PATH_tslib."class.tslib_content.php");
class ux_tslib_cObj extends tslib_cObj {
function RECORDS($conf) {
$theValue="";
$originalRec=$GLOBALS["TSFE"]->currentRecord;
if ($originalRec) { // If the currentRecord is set, we register, that this record has invoked this function. It's should not be allowed to do this again then!!
$GLOBALS["TSFE"]->recordRegister[md5($originalRec)]++;
}
$conf["source"] = $this->stdWrap($conf["source"],$conf["source."]);
if ($conf["tables"] && $conf["source"]) {
$allowedTables = $conf["tables"];
$allowedTables.=","."tx_aobannercodes_bannercodes";
if (is_array($conf["conf."])) {
reset($conf["conf."]);
while(list($k)=each($conf["conf."])) {
if (substr($k,-1)!=".") $allowedTables.=",".$k;
}
}
$loadDB = t3lib_div::makeInstance("FE_loadDBGroup");
$loadDB->start($conf["source"], $allowedTables);
reset($loadDB->tableArray);
while(list($table,)=each($loadDB->tableArray)) {
if (is_array($GLOBALS["TCA"][$table])) {
$loadDB->additionalWhere[$table]=$this->enableFields($table);
}
}
$loadDB->getFromDB();
reset($loadDB->itemArray);
$data = $loadDB->results;
$cObj =t3lib_div::makeInstance("tslib_cObj");
$cObj->setParent($this->data,$this->currentRecord);
$this->currentRecordNumber=0;
$this->currentRecordTotal = count($loadDB->itemArray);
$random = 0;
if ($this->stdWrap($this->cObjGet($conf["conf."]["random."], "conf.random"),$conf["conf."]["random."])) {
mt_srand((double)microtime()*1000000);
$random = mt_rand(1, $this->currentRecordTotal);
}
reset($loadDB->itemArray);
while(list(,$val)=each($loadDB->itemArray)) {
$row = $data[$val["table"]][$val["id"]];
if (!$conf["dontCheckPid"]) {
$row = $this->checkPid($row["pid"]) ? $row : "";
}
if ($row && !$GLOBALS["TSFE"]->recordRegister[md5($val["table"].":".$val["id"])]) {
if ($val["table"]=="tx_aobannercodes_bannercodes") {
$renderObjName = "";
$renderObjKey = "";
$renderObjConf = "";
}
if (!($val["table"]=="tx_aobannercodes_bannercodes")) {
$renderObjName = $conf["conf."][$val["table"]] ? $conf["conf."][$val["table"]] : "<".$val["table"];
$renderObjKey = $conf["conf."][$val["table"]] ? "conf.".$val["table"] : "";
$renderObjConf = $conf["conf."][$val["table"]."."];
}
$this->currentRecordNumber++;
$GLOBALS["TSFE"]->currentRecord=$val["table"].":".$val["id"];
$this->lastChanged($row["tstamp"]);
$cObj->start($row,$val["table"]);
if ($random == 0 || $random == $this->currentRecordNumber) {
if ($GLOBALS["TSFE"]->config["config"]["insertDmailerBoundaries"]) {$theValue.="<!--DMAILER_SECTION_BOUNDARY_".intval($row["module_sys_dmail_category"])."-->";}
if ($val["table"]=="tx_aobannercodes_bannercodes") {
$theValue.=$cObj->data[bannercode];
}
if ($val["table"]!=="tx_aobannercodes_bannercodes") {
$theValue.=$cObj->cObjGetSingle($renderObjName, $renderObjConf, $renderObjKey);
}
if ($GLOBALS["TSFE"]->config["config"]["insertDmailerBoundaries"]) {$theValue.="<!--DMAILER_SECTION_BOUNDARY_END-->";}
}
}
}
}
$GLOBALS["TSFE"]->currentRecord=$originalRec;
return $this->wrap($theValue,$conf["wrap"]);
}
}
if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/jh_random_records/pi1/class.tx_jhrandomrecords_pi1.php"]) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/jh_random_records/pi1/class.tx_jhrandomrecords_pi1.php"]);
}
?>
Das anhaken von "Random" im Content nicht vergessen...
lg
Herbert
die Antwort fällt nun nicht mehr wirklich in das Thema "Anfängerfragen" ...
lg
Herbert
hallo,
ich habe mir jetzt mal das "ao_bannercodes" und "jh_random_records" installiert.
dann habe ich in "jh_random_records" die änderungen vorgenommen die computerdoktor gepostet hat.
doch nun stehe ich vor dem problem, das ich den haken "random" nirgends finden kann o.O
funktioniert diese lösung nicht mehr mit typo 3.7.0 ?
oder hat noch jemand eine andere lösung?
das mit dem orderBy = rand() funktioniert zwar, aber mit random_records muss es ja auch irgendwie gehen.
habe auch mal die änderungen von herbert lackner von hier
#121586 probiert. aber auch dort kein "random" zu finden.
bin für jede hilfe dankbar.
gruß micha
ok.. kommando zurück.. hat sich erledigt..... #giggle# #giggle# #giggle#
hab es jetzt gefunden durch zufall :o
für alle die es vielleicht auch noch suchen bzw. noch suchen werden:
auf die seite gehen wo der werbebanner eingeblendet werden soll -> neuen Datensatz in der Seite einfügen z.Bsp "normaler Text" (nicht anlegen sondern einfügen) 😉 -> dann den Typ auf "Datensatz einfügen" -> entsprechenden Sysordner auswählen bei Objekte -> und dann ist auch unten der Haken zu setzen/finden
so einfach kann es sein wenn man weiß wie #giggle#
könnte natürlich auch sein das es einen einfacheren weg gibt, aber das ist der einzigste den ich bis jetzt gefunden habe
gruß micha
Bei mir klappt das tatsächlich auch. Danke für die Tipps.
Allerdings ergibt sich gleich ein neues Problem: Damit beim neu Laden zufällig ein anderer Datensatz ausgewählt wird, muss ich auf der Seite den Cache deaktivieren. Der ist aber nötig, damit die Indexed Search korrekt läuft. Gibt es eine Möglichkeit, diese Schwanzbeisserei zu umgehen?
Gruss
mamo
HAllo
bei mir werden alle Datensätze die in dem SysOrdner liegen angezeigt und nicht nur einer per Zufall ausgewählt. Der Haken ist gesetzt.
Ich habe Version 3.8.1
Ich habe gelesen, dass es da ein Problem bei dieser Version gibt. Wurde das inzwischen gelöst oder hat jemand einen Tipp für mich?
Gruß
Thorsten