История данной доработки здесь
http://forums.webscript.ru/showthread.php?s=&threadid=13715&msgnum=3Итог -
-------------------------------------------------
Вводится дополнительный тэг
<%submenu=[subtmp1],[subtmp2], ... [subtmpX].[menu_tmp]%>
Выводит в виде меню с шаблоном menu_row.txt указанным в [menu_tmp] категории, имеющие шаблоны [subtmp1], [subtmp2] и тд(свотря сколько указано).
-------------------------------------------------
Реализация
Редактируем файл Sanitarium_WL.pm
Находим процедурку sub parse_include
и перед последней ее строчкой($self->{"tmp_$option"}=$templ; ) вставляем следущее:
if ($templ =~/<%submenu=[\\w\\-\\.\\,]+%>/){
while ($templ =~/(<%submenu=([\\-\\w\\.\\,]+)%>)/g){
my $tag=$1;
my @ts;
my $t;
my $t1;
($t,$t1) = split(/\\./,$2);
@ts = split(/,/,$t);
$file = "";
foreach $t(@ts){
$file .= $self->generate_submenu($t,$t1);
}
$templ =~ s/$tag/$file/ if $tag&&$file;
}
}
Далее добавляем процедурку generate_submenu
sub generate_submenu {
#---------------------------------------------------
my ($html, $drop_list, $cat_id, $tmpl, $tmpl_list, @keys);
my $self=shift;
my $t=shift;
my $t1=shift;
my $cat_id=$self->{\'cat_id\'};
$tmpl=$self->load_tempfile("$self->{\'tmpl_dir\'}/$t1/menu_row.txt");
$self->{DB_File}=$self->{\'data\'}.\'/categories\';
$self->{DB_Field}=\'categories\';
#$self->_open_db(3,1);
$self->{\'index_url\'}="$self->{\'public_url\'}/$self->{\'index_page\'}";
unless($self->{\'cat_extr\'}){$self->extract_cat;}
foreach my $rec(grep {/cat_\\d+/} keys %{$self}){
my $key = $rec;
$key=~s/cat_//;
push(@keys, $key);
}
foreach my $key(sort {$a<=>$b} @keys){
#if (defined $self->{$key}){
$self->{\'cat_id\'}=$key;
$self->{\'cat_url\'}="$self->{\'public_url\'}/$key/$self->{\'index_page\'}";
$self->unpack_rec($self->{"cat_$key"});
if ($self->{\'template\'} eq $t) {
$html .= $self->small_parsing($tmpl);
}
}
#Memory remains!
#Load category info
#$self->{\'cat_extr\'}=1;
#&_close_db;
$self->{\'cat_id\'}=$cat_id;
$self->unpack_rec($self->{"cat_$cat_id"}) if $cat_id ne \'index\';
#$self->{\'drop_list\'}=$drop_list;
return $html;
#end sub
}
----------------------------
По идее было бы неплохо завести отдельный параметр, а не использовать название шаблона, но я с перлом мало знаком - заломало разбираться с БД.
С помощью данного тэга можно реализовать подкатегории.
Т.е. подкатегориями они будут в вашем уме, конечно, но отобразить их как подкатегории можно.
Спасибо за внимание.