Jump to content
xt:Commerce Community Forum

oldbear

Members
  • Content Count

    3,319
  • Joined

  • Last visited

  • Days Won

    52

Everything posted by oldbear

  1. hallo Franziska, das geht z.B. so : zum Hookpoint "class.product.php:BuildData_bottom" im Plugin xt_master_slave im Backend hinzufügen: // STANDARD include _SRV_WEBROOT . _SRV_WEB_PLUGINS . 'xt_master_slave/hooks/class.product.php_BuildData_bottom.php'; // HINZU $master_qty = 0; if ($this->data['products_master_flag'] == 1) { $rs = $db->Execute("SELECT products_quantity FROM ".TABLE_PRODUCTS." WHERE products_master_model = '".$this->data['products_model']."' AND products_status = 1"); while (!$rs->EOF) { $master_qty += $rs->fields['products_quantity']; $rs->MoveNext(); } $this->data['products_quantity'] = $master_qty; } // ODER KÜRZER: if ($this->data['products_master_flag'] == 1) { $rs = $db->Execute("SELECT SUM(products_quantity) AS master_qty FROM ".TABLE_PRODUCTS." WHERE products_master_model = '".$this->data['products_model']."' AND products_status = 1"); $this->data['products_quantity'] = $rs->fields['master_qty']; } der ermittelt die Summe der Slave-Bestände dieses Masters ( natürlich nur die aktiven ) und setzt den Bestand des Masterartikel auf diese Summe ( ohne Speicherung ) Grüsse
  2. hallo Louis, ich habe dafür ein "angefangenes" Plugin. Wirkungsweise: Sind im Warenkorb nur "digitale Produkte" wird die alternative Mail versandt. In der lkönnte ein Link direkt auf "Mein Konto" > "Downloads verwalten" sein ( etwas kompliziert, da ja erstmal eine Anmeldung erfolgen muss ). Alternativ könnte man statt auf die "Checkout-Success"-Seite direkt auf "Mein Konto" > "Downloads verwalten" verlinken ... Grüsse
  3. keine Header-Zeile ( im Export aber vorhanden ) oder falsches Format Grüße
  4. noch ein Fehler im Backend: die row_actions ( z.B. Artikel mehrfach verlinken ) funktioniert nicht mehr - der Kategoriebaum wird nicht aufgeklappt Grüsse
  5. Hallo, habe eigenartiges Problem: Ein Lazyload-Plugin funktioniert mit 6.3.2, aber nicht mit den Folgeversionen. Getriggert wird das Plugin über den Selektor .product-listing. Bei der 6.3.2 wird das Listing an der richtigen Stelle nachgeladen bei 6.3.3 und 6.4.0 wird jedoch die komplette Seite an dieser Stelle ausgegeben mit Navigation, Boxen, etc. pp. und rutscht dann natürlich mit jeder Seite weiter nach rechts. Was kann das sein ? Grüsse
  6. habe ähnliches Problem mit PayPal, der Kunde meldet:
  7. auch gerade getestet, geil die neuen Templates von 8works sind dabei => schreib mir ne Mail an [email protected] und ich schicke Dir die Doku von 8works
  8. auch gerade getestet, geil die neuen Templates von 8works sind dabei
  9. auch gerade getestet, geil die neuen Templates von 8works sind dabei
  10. naja, zumindest den Order-Status könnte man am Hook "order:_get_order_list_while_tmp_data" farblich ändern, vereinfacht etwa so: if ($tmp_data['orders_status'] == 'Offen') { $tmp_data['orders_status'] = '<span style="background-color:red;color:white;">'.$tmp_data['orders_status'].'</span>'; } if ($tmp_data['orders_status'] == 'Versandt') { $tmp_data['orders_status'] = '<span style="background-color:green;color:white;">'.$tmp_data['orders_status'].'</span>'; } ( getestet ) Grüsse OK, du wirst dann ja wohl nicht selber ein Plugin schreiben, aber einen Hookpoint erstellen geht ganz einfach z.B. so: In einem beleibigen benutzten Plugin neuen Hookpoint anlegen: Name: order:_get_order_list_while_tmp_data Inhalt: Code siehe oben Aktiv: anhaken Reihenfolge: 1 Der Code kann natürlich auch in einer Datei gespeichert werden, im Hookpoint ist dann diese Datei aufzurufen ( Beispiel include(_SRV_WEBROOT._SRV_WEB_PLUGINS.'PLUGIN-NAME/hooks/order_get_order_list_while_tmp_data.php'); Grüsse
  11. naja, zumindest den Order-Status könnte man am Hook "order:_get_order_list_while_tmp_data" farblich ändern, vereinfacht etwa so: if ($tmp_data['orders_status'] == 'Offen') { $tmp_data['orders_status'] = '<span style="background-color:red;color:white;">'.$tmp_data['orders_status'].'</span>'; } if ($tmp_data['orders_status'] == 'Versandt') { $tmp_data['orders_status'] = '<span style="background-color:green;color:white;">'.$tmp_data['orders_status'].'</span>'; } ( getestet ) Grüsse
  12. in der includes/product_listing_base.html des Templates einfügen: {$module_data.products_model} Grüsse
  13. na dann ... ein Kunde von mir macht das mit AFS-Faktura auf einem Windows-Server mit Anbindung an den Online-Shop mit 2 Filialen ( www.strampelwicht.com ) Führendes System ist hier natürlich die Warenwirtschaft. Ist natürlich eine Kostenfrage .... Grüße
  14. heisst offline lokaler Betrieb auf PC / MAC ? geht problemlos mit XAMPP ( Windows ) bzw. MAMP ( OSX ) Sollen die Daten abgeglichen werden ? Grüsse
  15. tja, wieder einer weniger ...., dito läufts mit newsletter2go, auch noch drin, aber sendinblue bietet keine xtc-Integration mehr an kann mir aber vorstellen, 8works liefert das Template noch aus ( auf eigene Gefahr ), ruf doch mal den Herrn Stiegler an ! Grüsse
  16. hallo, Hookpoint hinzufügen: class.cross_selling.php:getCrossSellingProductListing Inhalt: $this->sql_products->setSQL_WHERE(" and products_quantity > 0"); Grüsse
  17. hallo, die Variable steht an sich nicht zur Verfügung. Man kann aber einen Hookpoint erstellen ( class.export.php:_extractData_data ) in einem beliebigen Plugin folgenden Inhalts: $rs = $db->execute("SELECT m.file FROM xt_media_link AS ml LEFT JOIN xt_media AS m ON ( ml.m_id = m.id ) WHERE ml.link_id = '".$product->data['products_id']."' AND ml.type = 'images' AND ml.class = 'product' AND m.type = 'images' AND m.class = 'product' ORDER BY ml.ml_id"); while (!$rs->EOF) { $data_array['additional_image_thumb'] = $base_media . '/images/thumb/' . $rs->fields['file']; $data_array['additional_image_info'] = $base_media . '/images/info/' . $rs->fields['file']; $data_array['additional_image_popup'] = $base_media . '/images/popup/' . $rs->fields['file']; $data_array['additional_image_org'] = $base_media . '/images/org/' . $rs->fields['file']; break; // nur erster Eintrag $rs->MoveNext(); } Das Bild steht dann z.B. als "{$data.additional_image_info}" im Export-Manager zur Verfügung ( falls vorhanden ) Grüsse
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. einfach den Hook "product_info_tpl" des Plugins deaktiveren Grüsse
×
×
  • Create New...