Jump to content

Produkte mit "Sale"-Marker an einen Menüpunkt binden


Recommended Posts

(Prestashop 1.6)

Gibt es eine Möglichkeit, alle mit einem "Sale"- bzw. Sonderangebot-Marker (Preisoption: Diesen Artikel auf der Detailseite und in der Artikelliste als "Sonderangebot" kennzeichnen) gekennzeichneten Produkte gemeinsam anzusprechen bzw. an einen Menüpunkt zu binden?

 

 

post-823576-0-70956900-1500303353_thumb.png

Edited by Lindwedler (see edit history)
Link to comment
Share on other sites

Dafür gibt es doch die Standard-Seite prices-drop bzw. discount (so die offizielle benennung im System).

 

In Deutsch heissen die leichts anders. Die erste Seite zeigt Produkte mit ermässigten Preisen, die zweite solche, welche das Häckchen als Sonderangebot gesetzt haben.

Diese Seiten kann man über das Modul horizontale Naviationsleiste in sein Menü aufnehmen und fertig ist der Zauber.

Link to comment
Share on other sites

Eine "Findungsfrage" habe ich aber noch. In der deutschen Version habe ich die Seite "Sonderangebote" wo Produkte mit Preissenkungen gelistet sind. Wo aber finde ich denn die Seite "Discount" bzw. das deutschsprachige Gegenstück. ist das in irgendeinem Modul definiert? In der Horizontalen Leiste kann ich zwar etwas hinzufügen, aber dazu müsste ich ja die betreffenden Link kennen. Bei "vorhandene Eintragungen" die ich hinzufügen kann sehe ich nur die Kategorien, Artikel-IDs, Lieferanten, Hersteller usw.

Link to comment
Share on other sites

Gehst Du zu ->Backoffice -> Voreinstellungen -> SEO & URLs

Da sieht Du dann alle Seitenstrukturen von PrestaShop, welche nicht direkt von Kategorien oder Produkten abhängig sind.

 

Wenn Du diese Seiten noch nirgends aktiviert hast, kannst Du dort die jeweilige URL sehen und ggf. handisch in die Navigation eintragen.

Oft sind diese Seiten aber auch im Footer gelistet unter "unsere Angebote" oder so.

  • Like 1
Link to comment
Share on other sites

Dafür gibt es doch die Standard-Seite prices-drop bzw. discount (so die offizielle benennung im System).

 

In Deutsch heissen die leichts anders. Die erste Seite zeigt Produkte mit ermässigten Preisen, die zweite solche, welche das Häckchen als Sonderangebot gesetzt haben.

Ich hatte auch schon nach der Lösung gesucht, aber leider keine gefunden, die Seite Discount zeigt bei mir keine Angebote, sondern Gutscheine im Kundenkonto.

  • Like 1
Link to comment
Share on other sites

@Ric - du hast Recht. prices-drop sind Produkte, discount geht in das Kundenkonto. Wir haben das schon vor langer Zeit umgeschrieben, sodass wir sowohl Produkte mit dem Häckchen aktiviert als auch Produkte mit Sonderpreisen anzeigen. Die Änderung wäre im ./classes/Product.php zu machen.

Es gibt wohl einen PricesDrop-Controller, aber dieser ruft die Methode

public static function getPricesDrop

auf. Ab Zeile 2554 wird es da spannend. Ich habe den Quellcode unserer Änderungen grad nicht im Zugriff. Aber das Feld heisst on_sale bzw.

ps_product.on_sale = 1
bzw:
ps_product_shop.on_sale = 1  (für Multishop)

Etwas Pfeffer ist dann aber doch dabei, das Original Select sieht so aus:

        $sql = '
        SELECT
            p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`,
            IFNULL(product_attribute_shop.id_product_attribute, 0) id_product_attribute,
            pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`,
            pl.`name`, image_shop.`id_image` id_image, il.`legend`, m.`name` AS manufacturer_name,
            DATEDIFF(
                p.`date_add`,
                DATE_SUB(
                    "'.date('Y-m-d').' 00:00:00",
                    INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY
                )
            ) > 0 AS new
        FROM `'._DB_PREFIX_.'product` p
        '.Shop::addSqlAssociation('product', 'p').'
        LEFT JOIN `'._DB_PREFIX_.'product_attribute_shop` product_attribute_shop
            ON (p.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop='.(int)$context->shop->id.')
        '.Product::sqlStock('p', 0, false, $context->shop).'
        LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (
            p.`id_product` = pl.`id_product`
            AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').'
        )
        LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop
            ON (image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop='.(int)$context->shop->id.')
        LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.')
        LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`)
        WHERE product_shop.`active` = 1
        AND product_shop.`show_price` = 1
        '.($front ? ' AND p.`visibility` IN ("both", "catalog")' : '').'
        '.((!$beginning && !$ending) ? ' AND p.`id_product` IN ('.((is_array($tab_id_product) && count($tab_id_product)) ? implode(', ', $tab_id_product) : 0).')' : '').'
        '.$sql_groups.'
        ORDER BY '.(isset($order_by_prefix) ? pSQL($order_by_prefix).'.' : '').pSQL($order_by).' '.pSQL($order_way).'
        LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products;

Die Herausforderung ist, on_sale = 1 als Oder-Bedingung auch mit show_price, active und visibility auszuwerten. Ist aber machbar.

Bis nach dem Urlaub, dann sehe ich hier den gesamten Code von Euch.

 

Und noch eine kleine Hilfestellung. Erst ab WHERE genau hingucken und was nach ORDER BY kommt auch ignorieren. Dazwischen steckt die Lösung.

Edited by Scully (see edit history)
  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...