[calc] ## set match_count here, gets screwed up later, for some reason $mc = $Values->{mv_search_match_count}; return; [/calc] [tmp page_title]__COMPANY__ -- [L]Search Results[/L][/tmp] [tmpn display_class]leftonly[/tmpn] [if value more_link] [tmp page_title]__COMPANY__ -- [either][value-extended name=mv_searchspec joiner=" / "][or][value name=more_link filter=uri2string keep=1][/either][/tmp] [/if] [control reset=1] [control-set] [component]product_tree[/component] [output]left[/output] [/control-set] [control reset=1] @_TOP_@ [search-region] [on-match] [tmp meta_header] [calcn] return unless $Values->{more_link}; (my $more_page = $Session->{last_url}) =~ s|^/.*/([^\..]+)(?:\.html)?|$1|; if ($more_page =~ /^(Next|Prev)/) { $Tag->tag({ op => 'header' }, qq{Cache-control: no-cache\nCache-control: no-store\nPragma: no-cache\nExpires: 0\nContent-type: text/html}); } ## $mc set above. my $ml = $Values->{mv_matchlimit} || ''; my $fm = $Values->{mv_first_match} || ''; my ($canon, $rel_prev, $rel_next); #Debug("more_page=$more_page, ml=$ml, fm=$fm, mc=$mc"); my ($prev, $next); REL: { last REL if $mc < $ml; if($fm == 0 || $fm == 1) { # first page $rel_next = $Values->{more_link} . '/2'; } elsif( ($mc - $fm - $ml) <= 0 ) { # last page $prev = sprintf("%.0f", (($fm+$ml) / $ml) - 1); $rel_prev = $Values->{more_link} . '/' . ($prev ? $prev : '1'); } else { # page 2 to second-to-last $prev = sprintf("%.0f", ($fm / $ml)); $next = $prev + 2; $rel_prev = $Values->{more_link} . "/$prev"; $rel_next = $Values->{more_link} . "/$next"; } } CANON: { last CANON if $more_page !~ /^1|(Next|Prev)/; if ($more_page eq '1') { $canon = ''; } else { $canon = sprintf("%.0f", ($fm+$ml) / $ml); $canon = '' if $canon == 1; } $canon = $Values->{more_link} . ($canon ? "/$canon" : ''); } my @out; my $url = ($Variable->{SAMPLEURL} . $Variable->{CGI_URL}) || ''; my $ext = $Scratch->{mv_add_dot_html} ? '.html' : ''; $url !~ /\/$/ and $url .= '/'; push @out, qq{} if $rel_prev; push @out, qq{} if $rel_next; $Tag->tmp('rel_next', 1) if $rel_next; push @out, qq{} if $canon; if ($prev || $next) { $Scratch->{page_title} = $Scratch->{page_title} . ' - Page ' . (($prev || $next)+1) }; return "\t" . join "\n\t", @out; [/calcn] [/tmp]

[either][value name=more_link filter=uri2string keep=1][or]Search Results[/either]

[/on-match] [tmp bw_more] [more-list] [first-anchor][/first-anchor][last-anchor][/last-anchor] [link-template]
  • $ANCHOR$
  • [/link-template] [/more-list] [/tmp] [calc] my $more = $Scratch->{bw_more}; $more and $more =~ s,,
  • ,; $more and $more =~ s, *,
  • ,g; $Scratch->{bw_more} = $more; return $Values->{more_link} ? $more : undef; [/calc] [search-list] [item-change 1][condition][item-field category][/condition] [scratch category_close] [tmpn category_close][/tmpn] [if-item-field category]

    [either][value banner_text][or][item-field category][/either]

    [/if-item-field]
    [/item-change 1]
    [/search-list]
    [no-match]
    [comment] Don't show the search string if it was empty, since it looks weird and the user will see the error below anyway. [/comment] [tmp matchstring][value-extended name=mv_searchspec joiner=" | " filter=encode_entities][/tmp] [if scratch matchstring] [msg arg.0="[scratch matchstring]"]Sorry, no matches for %s.[/msg] [/if] [if value mv_search_error] [L]Errors[/L]:
    [value-extended name=mv_search_error joiner="
    " filter=encode_entities]
    [/if]
    [/no-match] [if value more_link] [scratch bw_more] [else] [more-list]
    [msg arg.0="[matches]" arg.1="[match-count]"]Matches %s of %s found.[/msg] [link-template]$ANCHOR$[/link-template]
    [more]
    [/more-list] [/else] [/if] [/search-region] @_BOTTOM_@