Автор Тема: Реализация псевдо-субкатегорий.  (Прочитано 3257 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн nerv

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.takeoff.mipt.ru
Реализация псевдо-субкатегорий.
« : 15 Сентября 2003, 19:39:40 »
История данной доработки здесь
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
}   

----------------------------

По идее было бы неплохо завести отдельный параметр, а не использовать название шаблона, но я с перлом мало знаком - заломало разбираться с БД.

С помощью данного тэга можно реализовать подкатегории.
Т.е. подкатегориями они будут в вашем уме, конечно, но отобразить их как подкатегории можно.

Спасибо за внимание. :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28