Produkte Rotieren auf der Startseite

[QUOTE=Hebsacker;100990]wie genau sieht denn der / die Fehler aus?[/QUOTE]

Hallo Ray,
Hier ist der Fehler:
Parse error: syntax error, unexpected ‘}’ in /srv/www/vhosts/##########.de/modules/Rotate/rotaterandom.php on line 37

Dann geht Im Admin und im Shop nichts mehr.

CE 4.6.1

dann überprüf doch mal Deine Klammern im Code - 3 öffnende und 4 schliessende ist eine schliessende zuviel

Danke Ray,
Der Fehler ist weg.
Die neuen Artikel werden aber nicht mehr angezeigt.
Woran könnte es liegen?

/tmp geleert und Views aktualisiert?
Steht was im Exception Log?

/tmp geleert und Views aktualisiert?

Natürlich.
Im Log steht nichts mit modules oder rotate…

nein, nicht unbedingt mit diesen Stichwörtern, aber zeig doch mal den letzten Block (so ca. 10 bis 15 Zeilen sind das jeweils), wenn das Datum / Uhrzeit passt

So, hier der letzte Eintrag.


oxException (time: 2012-09-07 15:53:37): [0]: Template block file (/srv/www/vhosts/###.de//modules/efi_paypal/out/blocks/partnerbox.tpl) not found for ‘efi_paypal’ module.
Stack Trace: #0 /srv/www/vhosts/###.de/core/oxutilsobject.php(125): oxUtilsObject->_getObject(‘oxexception’, 1, Array)
#1 /srv/www/vhosts/###.de/core/oxfunctions.php(316): oxUtilsObject->oxNew(‘oxException’, ‘Template block …’)
#2 /srv/www/vhosts/###.de/core/oxutilsview.php(449): oxNew()
#3 /srv/www/vhosts/###.de/core/oxutilsview.php(503): oxUtilsView->_getTemplateBlock(Array, Array)
#4 /srv/www/vhosts/###.de/core/smarty/plugins/prefilter.oxblock.php(44): oxUtilsView->getTemplateBlocks(‘oxException’, ‘Template block …’)
#5 /srv/www/vhosts/###.de/core/smarty/Smarty_Compiler.class.php(249): smarty_prefilter_oxblock(‘efi_paypal’, ‘partnerbox’)
#6 /srv/www/vhosts/###.de/core/smarty/Smarty.class.php(1489): Smarty_Compiler->_compile_file(‘widget/sidebar/…’)
#7 /srv/www/vhosts/###.de/core/smarty/Smarty.class.php(1422): Smarty->_compile_source(’<div class="box…’, Object(Smarty_Compiler))
#8 /srv/www/vhosts/###.de/core/smarty/Smarty.class.php(1867): Smarty->_compile_resource(‘smarty_prefilte…’, Array)
#9 /srv/www/vhosts/###.de/tmp/ba32b192d5593566694c65989964df9e^%%F5^F5E^F5EE4DF7%%sidebar.tpl.php(45): Smarty->_smarty_include(‘widget/sidebar/…’, ‘<div class="box…’, NULL)
#10 /srv/www/vhosts/###.de/core/smarty/Smarty.class.php(1869): include(’/srv/www/vhosts…’)
#11 /srv/www/vhosts/###.de/tmp/ba32b192d5593566694c65989964df9e^%%36^366^366ECF91%%page.tpl.php(31): Smarty->_smarty_include(‘widget/sidebar/…’, ‘<div class="box…’, NULL, ‘/srv/www/vhosts…’)
#12 /srv/www/vhosts/###.de/core/smarty/Smarty.class.php(1869): include(’/srv/www/vhosts…’)
#13 /srv/www/vhosts/###.de/tmp/ba32b192d5593566694c65989964df9e^%%40^405^405277AF%%start.tpl.php(101): Smarty->_smarty_include(‘widget/sidebar/…’, ‘/srv/www/vhosts…’)
#14 /srv/www/vhosts/###.de/core/smarty/Smarty.class.php(1263): include(’/srv/www/vhosts…’)
#15 /srv/www/vhosts/###.de/views/oxshopcontrol.php(446): Smarty->fetch(Array)
#16 /srv/www/vhosts/###.de/views/oxshopcontrol.php(317): oxShopControl->_render(Array)
#17 /srv/www/vhosts/###.de/views/oxshopcontrol.php(114): oxShopControl->_process(Array)
#18 /srv/www/vhosts/###.de/modules/d3log/views/d3_oxshopcontrol_errorhandler.php(14): oxShopControl->start(‘page/shop/start…’, ‘ox|0|0|0|0’)
#19 /srv/www/vhosts/###.de/modules/d3clrtmp/views/d3_oxshopcontrol_clrtmp.php(19): d3_oxshopcontrol_errorhandler->start(Object(birthday_start))
#20 /srv/www/vhosts/###.de/modules/d3/autoload/views/d3_oxshopcontrol_autoload.php(33): d3_oxshopcontrol_clrtmp->start(‘start’, NULL)
#21 /srv/www/vhosts/###.de/index.php(103): d3_oxshopcontrol_autoload->start()
#22 {main}


hmmm… da bemängelt er die fehlende partnerbox.tpl die er für paypal benötigt (da wird ein Logo abgelegt)

Das habe ich gesehen, ist momentan unwichtig. Kannst du was merkwürdiges erkennen? was mich weiter bringen kann.

nein, nicht in diesem Block, da gehts nur um ddas fehlende Template für PayPal

ohne dieses neue Modul werden die Artikel für die Aktion angezeigt?

Ja. Wenn es deaktiviert ist wird “frisch eingetroffen” ganz normal angezeigt.

Hab’s!
ich habe noch mal den kompletten Code der Funktion “loadAktionArticles” kopiert und nur statt
"order by oxactions2article.oxsort" >> “order by rand() desc limit 12” eingefügt und siehe da, es funktioniert!
Also, wenn es jemand braucht:


<?php
class rotaterandom extends rotaterandom_parent {

public function loadAktionArticles ($sActionID, $iLimit = null)
{
// Performance
if ( !trim( $sActionID) ) {
return;
}

    $sShopID        = $this-&gt;getConfig()-&gt;getShopId();
    $sActionID      = oxDb::getDb()-&gt;quote(strtolower( $sActionID));

    //echo $sSelect;
    $oBaseObject    = $this-&gt;getBaseObject();
    $sArticleTable  = $oBaseObject-&gt;getViewName();
    $sArticleFields = $oBaseObject-&gt;getSelectFields();

    $oBase = oxNew("oxactions");
    $sActiveSql = $oBase-&gt;getSqlActiveSnippet();
    $sViewName = $oBase-&gt;getViewName();

    $sLimit = ( $iLimit &gt; 0 ) ? "limit " . $iLimit : '';

   $sSelect = "select $sArticleFields from oxactions2article
                          left join $sArticleTable on $sArticleTable.oxid = oxactions2article.oxartid
                          left join $sViewName on $sViewName.oxid = oxactions2article.oxactionid
                          where oxactions2article.oxshopid = '$sShopID' and oxactions2article.oxactionid = $sActionID and $sActiveSql
                          and $sArticleTable.oxid is not null and " .$oBaseObject-&gt;getSqlActiveSnippet(). "
                          order by rand() desc limit 12 $sLimit";


    $this-&gt;selectString( $sSelect );
}

}


als rotaterandom.php speichern

in /module/rotaterandom ablegen

mit oxarticlelist=>rotaterandom/rotaterandom aktivieren.

sehr fein!

Im Quelltext steht order by rand() desc limit 12 $sLimit";

ändere ich auf imit 4 $sLimit, werden jetzt auch noch 4 Produkte angezeigt.

Wie kann ich es einstellen, dass der eingestellt Wert des Backend (Grundeinstellungen - Einstell.) verwendet wird?

Hier werden die gesamten Artikel hergenommen die unter “Frisch eingetroffen” zugeordnet sind, oder?

Wie ist es möglich Artikel aus einer Kategorie auszulesen?

indem du die Select Query so umbaust, dass sie die Artikel aus einer bestimmten Kategorie rausholt.
Und die Joins braucht man eigentlich auch nicht, da man die oxIds nehmen kann und sie an die loadIds() Funktion weitergeben
http://docu.oxid-esales.com/CE/sourcecodedocumentation/4.7.0.51243/classox_article_list.html#a2306dcbdd3b3bf41f16b477a63e97614

Ich habe das Modul erfolgreich eingebunden. Vielen Dank dafür!
Weiß jemand wie man dieses dahingehend erweitern kann, das nur Artikel, welche momentan vorrätig sind angezeigt werden? Also die Abfrage über StockStatus?

[QUOTE=vanilla thunder;109575]indem du die Select Query so umbaust, dass sie die Artikel aus einer bestimmten Kategorie rausholt.
[/QUOTE]

Ich muss ehrlich sagen, ich blick hier nicht wirklich durch.
Kannst du mir sagen wie ich die Query so umbaue, dass ich aus einer bestimmten Katid die Artikel hole und NICHT alle Artikel des gesamten Shops?

welche Shop Version hast du denn?

Für eine aktuelle 4.7 er muss natürlich die aktuelle Version der loadAktionArticles umgetauft werden, da diese nun


loadActionArticles

heißt. Hatte mir nämlich genau dasselbe Modul geschrieben :wink: Geschrieben kann man ja fast nicht sagen, ist ja nur eine bestehende Funktion überladen und order by rand() dazu schreiben.