Hallo zusammen,
__Situation:
Einstellung: Artikel pro Seite 6 + 9 + 12.
Wird nun eine Kategorieseite aufgerufen ist standardmäßig 6 aktiv.
Gibt es evtl. eine Möglichkeit die 9 als Standard/Default Wert festzulegen?
Eine Sortierung im Backend nach 9 + 6 + 12, sorgt dafür, dass die 9 beim Seitenaufruf aktiv ist, sieht aber bescheiden aus.
Evtl. jemand eine Idee?
Danke und Gruss
Hi Eddie,
Du möchtest also den mittleren Teil als Default haben, das funktioniert standardmäßig so nicht, guck Dir hierfür mal das locator.tpl an, da könnte man bestimmt irgendwas schrauben, damit das defaultmäßig so klappt, wie Du Dir das vorstellst.
Viele Grüße vom Chris
Hi Chris,
danke dir. Die list_locator.tpl hab ich schon bearbeitet. Leider fällt mir da keine Idee bzgl. Smarty ein. Hab’s jetzt mal auf 9+12+15 gesetzt.
Wäre das evtl. einen Feature-Request wert?
Gruss
Hi,
in oxubase.php findet sich folgende Funktion:
protected function _setNrOfArtPerPage()
{
$myConfig = $this->getConfig();
$aViewData = array();
//setting default values to avoid possible errors showing article list
$iNrofCatArticles = $myConfig->getConfigParam( 'iNrofCatArticles' );
$iNrofCatArticles = ( $iNrofCatArticles) ? $iNrofCatArticles : 10;
// checking if all needed data is set
$aNrofCatArticles = $myConfig->getConfigParam( 'aNrofCatArticles' );
if ( !is_array( $aNrofCatArticles ) || !isset( $aNrofCatArticles[0] ) ) {
$myConfig->setConfigParam( 'aNrofCatArticles', array( $iNrofCatArticles ) );
} else {
$iNrofCatArticles = $aNrofCatArticles[0];
}
Wenn man da den else Zweig am Ende ändert:
else {
$iNrofCatArticles = $aNrofCatArticles[1];
}
wird der 2. Wert zum Default.
Ich bin begeistert. Danke!
Mensch, wie kommt man darauf? Vor allem, wie sucht man nach so etwas? Aus den .tpl, z.B.
from=$oViewConf->getNrOfCatArticles()
und dann mit grep (o.ä) nach der Funktion durch die core-Dateien?
Und wie müsste ich jetzt vorgehen um dieses Verhalten in ein Modul umzusetzen?
Danke Danke 
Mensch, wie kommt man darauf?
Wenn du im Ordner views nach dem Parameter suchst, mit dem im Template die Anzahl gesetzt wird, “_artperpage”, dann landest du direkt bei der Funktion. Für ein Modul sollte es funktionieren wenn man die ganze Funktion in ein Modul für alist kopiert.
… und wenn ich jetzt jeder View eine andere Anzahl an default-Werten zuweisen möchte ???
in der oxubase.php habe ich
// checking if all needed data is set
switch ( $this->getListDisplayType() ) {
case 'grid':
$aNrofCatArticles = $myConfig->getConfigParam( 'aNrofCatArticlesInGrid' );
break;
case 'line':
case 'infogrid':
default:
$aNrofCatArticles = $myConfig->getConfigParam( 'aNrofCatArticles' );
}
Dupliziere ich jetzt die Zeilen ‘grid’ auf case ‘line’ => klappt es nicht
Füge ich eine weiteres Feld Bsp. aNrofCatArticlesInLine in die DB wird mir dieses Feld im tpl nicht geparst … => klappt also auch nicht
Wie kann ich jetzt der View “Line -> Liste” einen eigenen Wert zuweisen, der aber nicht von Gallerie/Gallerie zweispaltig gezogen wird???
Ratlose Grüße,
Stefan
“Problem” wurde auch in Bug #3425 geöffnet … um den Standard-Produktcounter (iNrofCatArticles) zu überschreiben und zum Beispiel für eine spezielle Ansicht nur XYZ Produkte zu zeigen, habe ich es jetzt so gelöst:
/**
* list outfit-category
*
* alist => modules/olg_listoutfit
*/
class olg_listoutfit extends olg_listoutfit_parent
{
/**
* Template variable getter. Returns category's article list
*
* @return array
*/
public function getOutfitList()
{
if ( $this->_aOutfitList === null ) {
if ( /*$this->_isActCategory() &&*/ ( $oCategory = $this->getActCategory() ) ) {
$aArticleList = $this->_loadOutfits( $oCategory );
if ( count( $aArticleList ) ) {
$this->_aOutfitList = $aArticleList;
}
}
}
return $this->_aOutfitList;
}
/**
* Loads and returns article list of active category.
*
* @param string $oCategory category object
*
* @return array
*/
protected function _loadOutfits( $oCategory )
{
$myConfig = $this->getConfig();
$iNrofCatArticles = (int) $myConfig->getConfigParam( 'iNrofCatArticles' );
// mod - stefan - Counter für Produkte
//$iNrofCatArticles = $iNrofCatArticles?$iNrofCatArticles:1;
$iNrofCatArticles = 3 // Counter hier ändern;
// load only articles which we show on screen
$oArtList = oxNew( 'oxarticlelist' );
$oArtList->setSqlLimit( $iNrofCatArticles * $this->_getRequestPageNr(), $iNrofCatArticles );
$oArtList->setCustomSorting( $this->getSortingSql( $oCategory->getId() ) );
if ( $oCategory->isPriceCategory() ) {
$dPriceFrom = $oCategory->oxcategories__oxpricefrom->value;
$dPriceTo = $oCategory->oxcategories__oxpriceto->value;
$this->_iAllArtCnt = $oArtList->loadPriceArticles( $dPriceFrom, $dPriceTo, $oCategory );
} else {
$aSessionFilter = oxSession::getVar( 'session_attrfilter' );
$sActCat = oxConfig::getParameter( 'cnid' );
$this->_iAllArtCnt = $oArtList->loadCategoryArticles( $sActCat, $aSessionFilter );
}
$this->_iCntPages = round( $this->_iAllArtCnt/$iNrofCatArticles + 0.49 );
return $oArtList;
}
Ist es ohne großen Aufwand möglich, auch ein “Alle Artikel anzeigen” als Option einzufügen?
der schnellste Weg wäre wohl so … artperpage=9999
push sehe ich das richtig, dass diese Konfigurations-Variable NICHT über das Admin-Frontend einzustellen ist? Dann hat die auch nichts in der DB zu suchen, ODER aber es wird ein [B]vernünftiger[/B] Weg gefunden diese zu behandeln oder einzustellen!
Glaub das siehst du falsch, kann man bei den Theme Options einstellen.
Hi zusammen,
mir ist beim Update aufgefallen, dass der List Locator nun auch im Newstemplate eingebaut ist. Leider werden hier die Einstellungen vom Theme übernommen. Eine spezielle Einstellung für die Anzahl der News pro Seite ist mir wohl entgangen, oder?