Crossartikel in zufälliger Reihenfolge ausgeben

Begonnen von dobra, November 11, 2017, 19:49:39

« vorheriges - nächstes »

0 Mitglieder und 2 Gäste betrachten dieses Thema.

dobra

"normalerweise" kann man bei Crossartikel ja nur nach einigen Kriterien sortieren

ZitatZitat von cru
ssp::embedded("csearch", "cross.txt", $suchstring . ":10000000:0:200:3:<0")
>>> ":10000000" <--- Das Feld/ die Felder in welchen gesucht werden soll
>>> 0 <-- Ab welchem Betrag (Preis) gesucht werden soll (weglassen, damit Preis keine Rolle spielt)
>>>200  <--- Bis zu welchem Betrag (Preis) gesucht werden soll (weglassen, damit Preis keine Rolle spielt)
>>> 3  <--- Nummerischer Wert nach welchem Feld sortiert werden soll (0 = nicht sortieren, 1 = Preis, 2=Artikelnummer, 3=Beschreibung, 4= Zusatztext usw.)
>>> 0  <--- Legt die Sortierrichtung fest ( 0=aufsteigend, 1= absteigend)

Kann man die Crossartikel auch in zufälliger Reihenfolge ausgeben ?

Lösung:
Voraussetzung bei dieser Lösung ist allerdings leider, dass alle Artikelnr. die selbe Anzahl Zeichen haben müssen.
Im Beispiel 4 Zeichen -> && length($_) > 4

<!--spmacro:module(embed)
sub cross {
    my $str = ssp::get_var_article('<Feld in dem die Crossartikel stehen>');
    ssp::embedded("csearch","embedded/cross_detail.txt",$str);
}
-->


ersetzen mit

<!--spmacro:module(embed)
sub randomcross {
use strict;
use warnings;

use List::Util qw/ shuffle /;

my $str = ssp::get_var_article('<Feld in dem die Crossartikel stehen>');

my @str = map {
  /\S/ && length($_) > 4? shuffle_word($_) : $_
} split /(\s+)/, $str;

my $string = join(',', @str), "\n";

sub shuffle_word {
  my ($word) = @_;
  my @word = split /,/, $word;
  join ',', $word[0], shuffle(@word[1..$#word-1]), $word[-1];
}

    ssp::embedded("csearch","embedded/cross_detail.txt",$string);
}


Der erste Crossartikel ist fix, alle anderen werden zufällig gereiht.
mfG
dobra