[ic] Subcategories display
Mike Heins
mikeh@minivend.com
Mon, 28 Aug 2000 19:39:43 -0400
Quoting Samvel Kocharjan (design@bluestar.ru):
> Hi All!
>
> May be it's dummie question and I still don't understand philosophy of IC
> but plz, plz help me.
> I wanna make catalog of products with categories, subcategories and may be
> sub-sub-categories (2-4 levels deep). Items will be available at all levels
> of catalog. How to display this catalog step-by-step.
> For example, when user click on "level 1" system display items which belong
> to this level and in some area of the page display available sub-levels.
>
The way I have done this in the past is to make a field called "hierarchy"
which is indexed and parsed during a search. For example:
hierarchy code
Art:Renaissance 99-001
Art:Surrealists 00-404
Art:Surrealists:European 00-343
Art:Surrealists:European 00-344
Art:Surrealists:American 19-203
Art:Surrealists:American 19-204
When the search is done, you can read the hierarchy field and break
down the hierarchy with embedded Perl and/or usertags. It will cause
the 00-404 SKU to be displayed on the search page, with links to further
categories. I will send you a URL separately which shows this, but cannot
answer any questions.
NOTE: Both the exloding left-side list and the hierarchical list use this index.
UserTag hierarchy Order path joiner profile
UserTag hierarchy PosNumber 3
UserTag hierarchy Routine <<EOF
sub {
my ($input, $joiner, $profile) = @_;
$joiner = ':' unless $joiner;
$profile = 'guide' unless $profile;
$input =~ s/^\s+//;
$input =~ s/\s+$//;
$input =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/chr(hex($1))/eg;
my ($search, $bit, $anchor, $out);
$out = Vend::Interpolate::tag_page('index');
$out .= "Top</A>:";
my @levels;
@levels = split /:/, $input;
my $last = pop(@levels);
foreach $bit (@levels) {
$search .= $joiner if $search;
my $string = $bit;
$string =~ s/(\W)/'%' . sprintf ('%02x', ord($1))/eg;
$search .= $string;
$anchor = 'scan/dl=';
$anchor .= $search;
$anchor .= "/mp=$profile";
$anchor = Vend::Util::vendUrl($anchor);
$out .= qq{<A HREF="$anchor">$bit</A>$joiner};
}
$out .= $last;
}
EOF
(Originally done with help of Bob Jordan of Akopia.)
I don't have time to go into this further, but an upcoming release with
have a template "Buyer's Guide" which has those Yahoo-style categories.
--
Akopia, Inc., 131 Willow Lane, Floor 2, Oxford, OH 45056
phone +1.513.523.8220 fax 7501 <heins@akopia.com>
Unix version of an Outlook-style virus:
It works on the honor system. Please forward this message to everyone
you know, and delete a bunch of your files at random.