ich würde gerne eine Abfrage für die listitem_infogrid bereitstellen, ob ein Artikel aus der Liste bereits auf dem Merkzettel steht. Dies würde ich gerne grafisch darstellen.
Welche Variable oder Funktion ist dafür verantwortlich ?
Im Block [{block name=“widget_product_listitem_infogrid_tobasket”}].
Bevor der Block zu ende ist, habe ich die Zeilen ( besser wäre sicherlich am Kopf der Datei )
[{if $oxcmp_user}]
[{assign var=userid value=$oxcmp_user->oxuser__oxid->value}]
[{assign var=articleid value=$product->oxarticles__oxid->value}]
[{php}]
if (isset($_GET[‘down’]) && $_GET[‘down’]!=’’ && $_GET[‘down’]==$this->get_template_vars(‘articleid’)) {
$down_article = $_GET[‘down’];
$userid = $this->get_template_vars(‘userid’);
$articleid = $this->get_template_vars(‘articleid’);
$verbindung = mysqli_connect($this->dbHost,$this->dbUser,$this->dbPwd,$this->dbName) or die (“Error”);
$sql=“select oxid from oxuserbaskets where oxuserid = '”.$userid."’ and oxtitle = ‘noticelist’ limit 1";
$row = mysql_query($sql);
$basketid = mysql_fetch_object($row)->oxid;
if ($basketid!=’’) {
$sql=“update oxuserbasketitems set oxartid = ‘’ where oxbasketid = '”.$basketid."’ and oxartid = ‘".$articleid."’";
$row = mysql_query($sql);
}
mysqli_close($verbindung);
}
$ok = false;
include($_SERVER[‘DOCUMENT_ROOT’]."/config.inc.php");
$userid = $this->get_template_vars(‘userid’);
$articleid = $this->get_template_vars(‘articleid’);
$verbindung = mysqli_connect($this->dbHost,$this->dbUser,$this->dbPwd,$this->dbName) or die (“Error”);
$sql=“select oxid from oxuserbaskets where oxuserid = '”.$userid."’ and oxtitle = ‘noticelist’ limit 1";
$row = mysql_query($sql);
$basketid = mysql_fetch_object($row)->oxid;
if ($basketid!=’’) {
$sql=“select oxid from oxuserbasketitems where oxbasketid = '”.$basketid."’ and oxartid = ‘".$articleid."’";
$row = mysql_query($sql);
if (mysql_fetch_object($row)->oxid != ‘’) { $ok = true; }
}
mysqli_close($verbindung);
if ($ok) {
[{/php}]
<a class=“merkbox” id=“linkToNoticeList” style=“background:rgba(85,144,248,0.61);border:1px solid #6E93D6;box-shadow:1px 1px #4D469E;” href=“http://[{php}]echo $_SERVER[‘HTTP_HOST’];[{/php}]/index.php?cl=alist&cnid=[{$oView->getCategoryId()}]&down=[{$product->oxarticles__oxid->value}]&#[{php}]echo $jumper;[{/php}]” alt=“Artikel nicht mehr merken” title=“Artikel nicht mehr merken” rel=“nofollow”>M</a>
[{php}]
} else {
[{/php}]
<a class=“merkbox” id=“linkToNoticeList” href="[{ oxgetseourl ident=$oViewConf->getSelfLink()|cat:“cl=”|cat:$oViewConf->getTopActiveClassName() params=“aid=$product->oxarticles__oxnid->value&anid=$product->oxarticles__oxnid->value&fnc=tonoticelist&am=1”|cat:$oViewConf->getNavUrlParams() }]&#[{php}]echo $jumper;[{/php}]" alt=“Artikel merken” title=“Artikel merken” rel=“nofollow”>M</a>
[{php}]
}
[{/php}]
[{/if}]
Ich hatte danach lediglich mit zu kämpfen, das die Seite nach dem reload immer am Kopf neu angezeigt wurde. Deshalb bediente ich mich von Sprungmarken, welche ich zuerst oberhalb des ersten Formelementes definierte:
Sicherlich gibt es einfachere Möglichkeiten, nur konnte ich anderes nicht umsetzen.
Auch nicht, wie ich anders die SQL Abfragen über das Framework durchführen könnte.
Puuuh, da haste Dir aber viel Arbeit gemacht. Sowas gibt’s ja schon. Ich habe mir erlaubt, Deine CSS-Formatierung zu benutzen und es etwas umgeschrieben
[QUOTE=foxido.de;149107]Puuuh, da haste Dir aber viel Arbeit gemacht. Sowas gibt’s ja schon. Ich habe mir erlaubt, Deine CSS-Formatierung zu benutzen und es etwas umgeschrieben ;)[/QUOTE]
Kein Problem… gerne doch
Hat ja auch Spaß gemacht…
Ich habe das ganze mittels Modul gelöst.
Vielleicht hilft es jmd
class notice_articleBox extends notice_articleBox_parent{
/**
* Abfrage ob Artikel auf Wunschliste steht
*
* @param string $id
* @return boolean
*/
public function isArticleWishlist($id = ""){
$oWishList = oxNew("Account_Noticelist");
$oWishListArticle = $oWishList->getNoticeProductList();
if(!empty($oWishListArticle)){
foreach($oWishListArticle as $key => $value ){
if($oWishListArticle[$key]->oxarticles__oxid->value == $id)
return true;
}
}
return false;
}
/**
* AjaxFunktion zum setzen des Artikels auf die Merkliste
* @return / echo True / False
*/
public function setArticleToWishlistAjax(){
$id = oxRegistry::getConfig()->getRequestParameter('id');
if(!isset($id) || empty($id)){
echo "false";
die();
}else{
/*
* Setzt den Artikel auf die Merkliste, wenn dieser noch nicht enthalten ist.
* Entfernt den Artikel von der Merkliste, wenn dieser bereits vorhanden ist.
*/
$oNoticeList = oxNew("oxcmp_utils");
if($this->isArticleWishlist($id))
$oNoticeList->toNoticeList($id,0);
else
$oNoticeList->toNoticeList($id,1);
echo "true";
die();
}
}
}