it-swarm.com.de

Stellen Sie den gewünschten Artikel zuerst in der benutzerdefinierten Reihenfolge ein

Ich verwende ein maßgeschneidertes Modul (das mit der Site vererbt wurde) und das Modul sortiert die angezeigten Artikel basierend auf der ausgewählten Sortierreihenfolge aus den XML-Parametern:

<field name="sortopt" type="list" default="none" label="Sort Options">
    <option value="none">Select a Sort option</option>
    <option value="priceasc">Price Ascending</option>
    <option value="pricedesc">Price Descending</option>
    <option value="titleasc">Title Ascending</option>
    <option value="titledesc">Title Descending</option>
    <option value="priceascfeatured">Price Ascending - Featured First</option>
    <option value="pricedescfeatured">Price Descending - Featured First</option>
</field>

Ich erstelle dann das Produktarray:

$products[] = array('id' => $id, 'title' => $title, 'image' => $image,
'product_url' => $product_url, 'region' => $region, 
'featured' => $article->featured, 'product_price' => $product_price);

Dann ist die Sortierreihenfolge:

    if($sortopt == 'priceasc') {

        array_multisort($sort['product_price'], SORT_NUMERIC, SORT_ASC, $products);

    // Sort Price DESC
    } elseif($sortopt == 'pricedesc') {

        array_multisort($sort['product_price'], SORT_NUMERIC, SORT_DESC, $products);

    // Sort Title ASC   
    } elseif($sortopt == 'titleasc') {

        array_multisort($sort['title'], SORT_NUMERIC, SORT_ASC, $products);

    // // Sort Title DESC
    } elseif($sortopt == 'titledesc') {

        array_multisort($sort['title'], SORT_NUMERIC, SORT_DESC, $products);

    // Sort region ASC (Default)
    } elseif($sortopt == 'none') {

        array_multisort($sort['title'], SORT_NUMERIC, SORT_ASC, $products);

    }

Wenn ein Artikel auf "Hervorgehoben" gesetzt ist, muss ich dies zuerst in allen Bestellszenarien anzeigen. Ich weiß, dass ich array_multisort verwenden kann, um nach Funktionsumfang und Preis zu sortieren. Im Folgenden werden die Funktionsumfang zuerst angezeigt, aber nicht, um sie dann in die Sortierreihenfolge für den Preis einzufügen.

    // Sort Price ASC - Featured First
    elseif($sortopt == 'priceascfeatured') {
        array_multisort($sort['product_price'], SORT_NUMERIC, SORT_ASC, $products,
                        $sort['featured'], SORT_NUMERIC, SORT_DESC, $products);
    }
    // Sort Price DESC - Featured First
    elseif($sortopt == 'pricedescfeatured') {
        array_multisort($sort['product_price'], SORT_NUMERIC, SORT_DESC, $products,
                        $sort['featured'], SORT_NUMERIC, SORT_DESC, $products);
    }
1
RustyJoomla

Ich habe das folgendermaßen für die Sortierreihenfolge gelöst:

    // Sort Price ASC - Featured First
    elseif($sortopt == 'priceascfeatured') {
        array_multisort($sort['featured'], SORT_NUMERIC, SORT_DESC, $sort['product_price'], SORT_NUMERIC, SORT_ASC,$products);
    }
    // Sort Price DESC - Featured First
    elseif($sortopt == 'pricedescfeatured') {
        array_multisort($sort['featured'], SORT_NUMERIC, SORT_DESC, $sort['product_price'], SORT_NUMERIC, SORT_DESC,$products);
    }
1
RustyJoomla