Hallo zusammen!
Also in der Sidebar werden immer die selben Tags angezeigt.
Schön wäre, wenn die Tags zufällig (random) angezeigt werden.
Hat jemand eine Idee dafür?
LG, Marcello
Hallo zusammen!
Also in der Sidebar werden immer die selben Tags angezeigt.
Schön wäre, wenn die Tags zufällig (random) angezeigt werden.
Hat jemand eine Idee dafür?
LG, Marcello
Wie genau stellst du dir das vor?
Du hast Tags A, B und C, es sollen aber irgendwelche ganz zufälligen Wörter abgezeigt werden, wie Katze, Wurst, Banane, etc, die es gar nicht gibt?
Sorry, habe mich falsch ausgedrückt.
Ich meine, dass die eingegebenen Tags ne zufällige Reihenfolge haben.
Hab z.B. test 1 test2 test 3, usw.
Gehe ich auf die Startseite, werden z.B. test 1, test 3, test 10 angezeigt
Refreshe ich die Seite, werden z.B. test 8, test 23, usw. angezeigt.
Ich hoffe, du weißt was ich meine.
öffne mal die Datei application/models/oxtagclound.php und such dort nach “public function getCloudArray()”, irgendwo in der Nähe der Zeile 150 müsste es sein
dann musst du es so anpassen:
public function getCloudArray()
{
$sCacheIdent = $this->_formCacheKey();
if (!isset($this->_aCloudArray[$sCacheIdent])) {
$oTagList = $this->getTagList();
$this->_aCloudArray[$sCacheIdent] = $this->formCloudArray($oTagList);
}
[b] shuffle($this->_aCloudArray[$sCacheIdent]);[/b]
return $this->_aCloudArray[$sCacheIdent];
}
Ok, es werden jetzt die Tags in einer zufälligen Reihenfolge angezeigt,
aber leider immer die selben.
Weisst was ich meine?
so langsam verstehe ich das, glaube ich.
Es gibt, sagen wir mal 100 Tags, von denen werden nur 20 auf der Startseite angezeigt, diese sollen aber zufällig ausgewählt werden?
Dann such mal in der Datei oxTagSet.php nach der Funktion sortByHitCount() und ersetze
uasort($this->_aTags, array($this, '_tagHitsCmp'));
durch
shuffle($this->_aTags);
Die erste Änderung kannst du dann wieder rückgängig machen.
Ok, jetzt werden zwar andere Tags angezeigt, aber trotzdem immer die gleichen 20.
die gleichen oder die selben?
die selben
Dann verstehe ich es leider nicht. Vielleicht hat jemand anders eine Idee?
schau: Es gibt in der Datenbank 100 Tags.
Und es werden immer 20 Tags angezeigt.
[B]So sollte es sein:[/B]
Jemand kommt auf die Startseite und es werden z.B. die Tags 1,10,20,3, usw. angezeigt.
Der nächste kommt auf die Startseite, also quasi wie ein Refresh der Seite,
und es werden z.B. die Tags 5, 88, 25, 41, usw. angezeigt.
In Php gibt es ja ne Funktion (random).
Muss ja da auch so ähnlich funktionieren, oder?
im Prinzip ja, aber da OXID alles im Cache speichert, wird es nur einmalig zufällig aus der Datenbank geladen und dann immer gleich aus dem Cache
Wie kann man es sonst bitte lösen?
Ich hab jetzt schon so viel ausprobiert.
Zum Schluss
<title>[{block name="head_title"}][{$oView->getPageTitle()}][{/block}] [{if $OXKEYWORDS == ''}]TEST[{/if}]</title>
Aber es funktioniert nicht.
Manchmal muss man auch eine Idee aufgeben. Es sei denn, du möchtest programmieren lernen.
Ne nix aufgeben. Kann ja ned so schwer sein.
Bitte hilf mir.
Versuch mal folgendes:
public function formCloudArray(oxITagList $oTagList)
{
// checking if current data is already loaded
if ($oTagList->getCacheId()) {
$sCacheIdent = $this->_formCacheKey($oTagList->getCacheId());
$myUtils = oxRegistry::getUtils();
// checking cache
$aCloudArray = $myUtils->fromFileCache($sCacheIdent);
}
$aCloudArray = null;
// loading cloud info
if ($aCloudArray === null) {
$oTagList->loadList();
$oTagSet = $oTagList->get();
if (count($oTagSet->get()) > $this->getMaxAmount()) {
$oTagSet->sortByHitCount();
$oTagSet->slice(0, $this->getMaxAmount());
}
$oTagSet->sort();
$aCloudArray = $oTagSet->get();
// updating cache
if ($sCacheIdent) {
$myUtils->toFileCache($sCacheIdent, $aCloudArray);
}
}
return $aCloudArray;
}
Hab das jetzt in oxtaglist eingefügt.
Aber es passsiert leider nichts.