Jump to content
xt:Commerce Community Forum

oldbear

Members
  • Content Count

    3,301
  • Joined

  • Last visited

  • Days Won

    50

Everything posted by oldbear

  1. hallo, habe den Sachverhalt auch auch xtc gemeldet. Abhilfe: in der class.products_price.php auskommentieren: $header['discount_quantity'] = ['regex' => '^(?:[2-9]|\d\d\d*)$']; Dann kann man wieder die 1 eingeben. Leider reicht das nicht ... habe deshalb Hookpoint zu beliebigem Plugin hinzugefügt: HOOK: class.product.php:getGroupPrice_top INHALT: $prices = array(); if ($customers_status->customers_status_graduated_prices != 0) { if ($sp_type=='group') { $record = $db->Execute("SELECT * FROM ".TABLE_PRODUCTS_PRICE_GROUP.$price->p_group." WHERE products_id=? ORDER BY discount_quantity ASC",array($this->data['products_id'])); } else { $record = $db->Execute("SELECT * FROM ".TABLE_PRODUCTS_PRICE_GROUP."all WHERE products_id=? ORDER BY discount_quantity ASC",array($this->data['products_id'])); } if ($record->RecordCount() >= 1) { $single_price = $this->data['products_price_db']; if (is_null($single_price) && !is_array($this->data['products_price'])) { $single_price = $this->data['products_price']; } else if(is_array($this->data['products_price'])) { $single_price = $this->data['products_price']['plain_otax']; } if ($special_price) { $single_price = $special_price; } $prices[] = array('qty'=>1,'price'=>$single_price); while (!$record->EOF) { if ($record->fields['discount_quantity']!=0) { $prices[] = array('qty'=>$record->fields['discount_quantity'],'price'=>$record->fields['price']); } else if ($record->fields['discount_quantity']!=1) { $prices[0] = array('qty'=>1,'price'=>$record->fields['price']); } $record->MoveNext(); } $record->Close(); $qty = $this->qty; if ($qty_force!=-1) $qty = $qty_force; $data = array(); for ($i = 0, $n = sizeof($prices); $i < $n; $i++) { if ($prices[$i+1]['qty']>$qty) { $data['price']=$prices[$i]['price']; break; } else { // kleiner if (!isset($prices[$i+1]['qty'])) { $data['price']=$prices[$i]['price']; break; } else { if ($prices[$i+1]['qty']>$this->qty) { $data['price']=$prices[$i]['price']; break; } } } } if (count($prices) == 2 && $prices[1]['qty'] == 1) { $data['price']=$prices[1]['price']; unset($prices[0]); $prices[0] = $prices[1]; unset($prices[1]); } $data['no_graduated']=0; $data['graduated_single']=0; //only one check rule if (sizeof($prices) == 1 && $prices[0]['qty']<2) { for ($i = 0, $n = sizeof($prices); $i < $n; $i++) { $prices[$i]['price'] = $price->_calcCurrency($prices[$i]['price']); } $data['no_graduated']=1; $data['graduated_single']=1; } else { for ($i = 0, $n = sizeof($prices); $i < $n; $i++) { $prices[$i]['price'] = $price->_calcCurrency($prices[$i]['price']); } $data['prices']=$prices; $size = count($prices); if ($size==0) $data['no_graduated']=1; //$last = array_pop($prices); $data['cheapest'] = $prices[$size-1]['price']; } ($plugin_code = $xtPlugin->PluginCode('class.product.php:getGroupPrice_data')) ? eval($plugin_code) : false; $plugin_return_value = $data; return $plugin_return_value; } else { return false; } } else { return false; } Grüsse hallo, das ist die xtFramework(classes/class.product_price.php Auskommentieren oder löschen ist egal, nur weg mit ... Grüsse
  2. hallo, habe den Sachverhalt auch auch xtc gemeldet. Abhilfe: in der class.products_price.php auskommentieren: $header['discount_quantity'] = ['regex' => '^(?:[2-9]|\d\d\d*)$']; Dann kann man wieder die 1 eingeben. Leider reicht das nicht ... habe deshalb Hookpoint zu beliebigem Plugin hinzugefügt: HOOK: class.product.php:getGroupPrice_top INHALT: $prices = array(); if ($customers_status->customers_status_graduated_prices != 0) { if ($sp_type=='group') { $record = $db->Execute("SELECT * FROM ".TABLE_PRODUCTS_PRICE_GROUP.$price->p_group." WHERE products_id=? ORDER BY discount_quantity ASC",array($this->data['products_id'])); } else { $record = $db->Execute("SELECT * FROM ".TABLE_PRODUCTS_PRICE_GROUP."all WHERE products_id=? ORDER BY discount_quantity ASC",array($this->data['products_id'])); } if ($record->RecordCount() >= 1) { $single_price = $this->data['products_price_db']; if (is_null($single_price) && !is_array($this->data['products_price'])) { $single_price = $this->data['products_price']; } else if(is_array($this->data['products_price'])) { $single_price = $this->data['products_price']['plain_otax']; } if ($special_price) { $single_price = $special_price; } $prices[] = array('qty'=>1,'price'=>$single_price); while (!$record->EOF) { if ($record->fields['discount_quantity']!=0) { $prices[] = array('qty'=>$record->fields['discount_quantity'],'price'=>$record->fields['price']); } else if ($record->fields['discount_quantity']!=1) { $prices[0] = array('qty'=>1,'price'=>$record->fields['price']); } $record->MoveNext(); } $record->Close(); $qty = $this->qty; if ($qty_force!=-1) $qty = $qty_force; $data = array(); for ($i = 0, $n = sizeof($prices); $i < $n; $i++) { if ($prices[$i+1]['qty']>$qty) { $data['price']=$prices[$i]['price']; break; } else { // kleiner if (!isset($prices[$i+1]['qty'])) { $data['price']=$prices[$i]['price']; break; } else { if ($prices[$i+1]['qty']>$this->qty) { $data['price']=$prices[$i]['price']; break; } } } } if (count($prices) == 2 && $prices[1]['qty'] == 1) { $data['price']=$prices[1]['price']; unset($prices[0]); $prices[0] = $prices[1]; unset($prices[1]); } $data['no_graduated']=0; $data['graduated_single']=0; //only one check rule if (sizeof($prices) == 1 && $prices[0]['qty']<2) { for ($i = 0, $n = sizeof($prices); $i < $n; $i++) { $prices[$i]['price'] = $price->_calcCurrency($prices[$i]['price']); } $data['no_graduated']=1; $data['graduated_single']=1; } else { for ($i = 0, $n = sizeof($prices); $i < $n; $i++) { $prices[$i]['price'] = $price->_calcCurrency($prices[$i]['price']); } $data['prices']=$prices; $size = count($prices); if ($size==0) $data['no_graduated']=1; //$last = array_pop($prices); $data['cheapest'] = $prices[$size-1]['price']; } ($plugin_code = $xtPlugin->PluginCode('class.product.php:getGroupPrice_data')) ? eval($plugin_code) : false; $plugin_return_value = $data; return $plugin_return_value; } else { return false; } } else { return false; } Grüsse
  3. naja, sieht eher so aus, als exisitiert die xt_media_languages nicht in der Datenbank. Die gibt es noch nicht so lange, kann sein, dass die beim Shop-Update nicht angelegt wurde. Grüsse
  4. kann nicht sein, wenn der Tabelleneintrag stimmt: # Name Typ Kollation Attribute Null Standard Kommentare Extra Aktion 1 products_id int(11) Nein kein(e) Bearbeiten Löschen Mehr 2 products_id_cross_sell int(11) Nein kein(e) Bearbeiten Löschen Mehr 3 sort_order int(4) Ja NULL Bearbeiten Löschen Me
  5. Der Fehler komt aus dem Plugin xt_cross_selling, dort fehlt die Spalte sort_order. Also entweder Plugin updaten oder Spalte per phpMyAdmin hinzufügen und Hook wieder aktivieren. Grüsse
  6. einfach den Hook "product_info_tpl" des Plugins deaktiveren Grüsse
  7. hallo jörg, eine einfache Möglichkeit wäre über die Versandkosten ( ab € 135 bis € 10000 => kein Vesand darunter ) kommt natürlich etwas spät, aber mit diversen Hinweistexten ( mit Länderabfrage ) könnte man schon bei der Anmeldung darauf aufmerksam machen ein Plugin dafür hätte ich - aber wie Du schon sagst, solls wenig kosten Grüsse
  8. naja, wenn Du auf Angebotspreise verzichten kannst, dann das Plugin xt_special_prices abschalten. Ursache ist eine ( unperformante ) CASE / WHEN-Abfrage in den Hooks class.product_sql_query.phpF_Sorting_price.php class.product_sql_query.phpF_Sorting_price_desc.php: $sqlCols = ", CASE WHEN p.products_master_flag=1 THEN (SELECT MIN(ps.products_price)FROM " . TABLE_PRODUCTS . " ps WHERE ps.products_master_model=model) "; if (isset($xtPlugin->active_modules['xt_special_products'])) { $sqlCols .= "WHEN pps.specials_price>0 THEN pps.specials_price "; } $sqlCols .= "ELSE p.products_price END AS sort_price "; von Master-Slave, hatte das schon mal gepatched , finde den Code aber gerade nicht. Wenn die Slaves keine Angebotspreise haben, könnte man diese beiden Hooks testweise auch mal deaktivieren Grüsse
  9. hallo, bei einem Kunden häufen sich Zahlungsabbrüche wegen "Duplicate invoice id" Was bekannt ? Grüße
  10. hallo, das gibts bereits, ist nur etwas versteckt bei den Lagerampel-Einstellungen: Einstellungen -> Systemstatus -> Lagerampel dort gibts für jeden Wert "Einordnung schema.org" Grüsse
  11. in der xt_config stehen die Variablen unter _SYSTEM_METATAGS_XXXXXXX Grüsse In der Datenbank ( im phpMyAdmin )
  12. in der xt_config stehen die Variablen unter _SYSTEM_METATAGS_XXXXXXX Grüsse
  13. hallo, aber was wäre wenn Du einfach bei den Varianten jeweils "ohne Fixkosten" und "ohne Druckkosten" oder "ohne Veredelung"mit erzeugst ? Sind halt dann keine 3 Slaves ( ups, darf man ja nicht mehr sagen ) sondern 4 Grüsse
  14. hallo, geht im Prinzip schon, habe ein Plugin, das bei Multishops Admin-Zugriffe auf Bestellungen und Kunden auf Shop-Ebene beschränkt. Liesse sich auf Produkte eines Hersteller erweitern. Kategorien sollten allerdings geperrt sein ( bis auf die Kategorien-Zuordnung der Artikel ) habe das mal kurz getested ( natürlcih darf auch kein anderer Hersteller im Produkt auswählbar sein ) Grüsse
  15. tja, langsam geht mir das auch auf die Nerven es heisst ja: "wir hoffen, dass die Unternehmen die MwSt-Senkung auch weitergeben .....", was sicher nicht jeder tun wird. Da muss man wohl auf die Hersteller-Preise bei preisgebundenen Artikeln warten. Man kann natürlich ein Plugin schreiben, dass bestimmte Rundungen durchführt, z.B. "Neuer Preis mit 16% wird auf XXX.99 aufgerundet oder XXX.49" etc.pp, habe das schon mal per Plugin gemacht, aber "presgebunden" geht da natürlich nicht. Eher kann man neue Preise importieren, wenn die auch rechtzeitig zur Verfügung gestellt werden - dürfte halte bei jedem SHop anders sein ... Grüsse
  16. Hallo Jörg, Du brauchst keinen Cronjob. Ich führe den Bestand beim Master in meiner Master-Slave-Extension und zwar bei der Bestandsabbuchung im Warenkorb am Hook: class.order.php:_saveProductData_bottom Sinnvollerweise auch bei der Bestandsänderung im Backend: am Hook: class.product.php:_set_top und am Hook: class.stock.php:_addStock für Stornierungen Dabei wird je nach Plugin-Einstellung der Master inaktiv gesetzt, wenn die Summe der Slaves auf 0 geht Grüsse
  17. hallo, habe das Plugin mit kleinen Anpassungen in mehreren 4.2-Installationen eingebaut ( auch für die Login-Seite ) melde Dich doch mal bei mir Grüsse
  18. hatte das auch bei einem Kunden: man muss nur die breadcrumb.html umbauen auf schema.org ist ein Beispiel: <ol itemscope itemtype="http://schema.org/BreadcrumbList"> <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a itemprop="item" href="https://example.com/dresses"> <span itemprop="name">Dresses</span></a> <meta itemprop="position" content="1" /> </li> <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a itemprop="item" href="https://example.com/dresses/real"> <span itemprop="name">Real Dresses</span></a> <meta itemprop="position" content="2" /> </li> </ol> den Wert für Content liefert z.B. {$smarty.foreach.aussen.iteration} Grüsse
  19. hallo, nimm doch die Version aus dem Backup, ist doch unverschlüsselt Größe
  20. Für die Auswahl ist in der class.content.php das Dropdown: DropdownData.php?get=content_forms hinterlegt. Dort müsste man am Hook "admin_dropdown.php:dropdown_bottom" sein Formular mit einbinden ( also an $result anhängen im Falle "content_forms" ) ....
  21. ein Plugin zur Preisfindung installiert ? evt. läuft das nicht mit der neuen Version / PHP-Umgebung
  22. gute Erfahrungen habe ich mit der fuzzy-search von coe gemacht Link: https://www.centerofefficiency.com/de/plugins-xtcommerce/fuzzy-search-fehlertolerante-suche-sofortvorschau.html Live z.B. bei strampelwicht.com Grüsse
  23. also es stimmt was mit SSL nicht, evt. ein .htaccess-Eintrag, die URLS sehen alle so aus: href="https://https://www.optical-starsite.de/" oder es stimmt der Eintrag in der xt_stores nicht ... Grüsse
  24. ist wohl ein Performance-Problem -- dauert zulange. die Seite zu rendern, auch schon öfter gesehen ( könnte auch mit dem SSL bzw. dessen Behandlung in der .htaccess zusammenhängen bzw. irgendwelchen Umleitungen dort ) Grüsse
×
×
  • Create New...