[Помощь] Как определить первую и последнюю категорию в дереве категорий webasyst?

Тема в разделе "WebAsyst", создана пользователем vicsk, 24 май 2012.

Модераторы: mdss
  1. vicsk

    vicsk Постоялец

    Регистр.:
    19 янв 2010
    Сообщения:
    147
    Симпатии:
    8
    Мне нужно в дереве категорий определить первую и последнюю категорию в дереве чтобы задать им свой стиль через smarty, как это можно сделать и какое условие прописать,примерно такого вида
    Код:
    <ul><li {if...} class="first" {/if} {if...} class="last" {/if}></li></ul>
     
  2. Voshal

    Voshal Мизантроп

    Регистр.:
    30 мар 2009
    Сообщения:
    286
    Симпатии:
    108
    Производите условие на первую и последнюю итерацию
    HTML:
    {if $smarty.section.i.first} class="first"
    {elseif $smarty.section.i.last} class="last"
    {/if}
     
  3. vicsk

    vicsk Постоялец

    Регистр.:
    19 янв 2010
    Сообщения:
    147
    Симпатии:
    8
    Подскажите пожайлуста поточнее,вот код моего function.newtree.php,мне куда прописать условие?
    PHP:
    <?php
    function smarty_function_newtree($params, &$smarty){
    $disp.='<ul id="navmenu-v"> ';
    $sql='SELECT categoryID, slug, parent, '.LanguagesManager::sql_prepareField('name').' AS name from '.CATEGORIES_TABLE' where parent=1 order by sort_order,name';
    if(
    $r=mysql_query($sql))
    while(
    $res=mysql_fetch_assoc($r)){
    $disp.='<li>';

    if(
    $res['slug']!='')

    $disp.='<a href="/category/'.$res['slug'].'/">'.$res['name'].'</a>';
    else
    $disp.='<a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';
    $disp.=subcat($res['categoryID']).'';
    }
    $disp.='</li></ul>';
    return 
    $disp;
    }

    function 
    subcat($parid){
    $sql='SELECT categoryID, slug, parent, '.LanguagesManager::sql_prepareField('name').' AS name from '.CATEGORIES_TABLE' where parent='.$parid.' order by sort_order, name';
    if(
    $r=mysql_query($sql)){
    if(
    mysql_num_rows($r)>0){
    $disp.='<ul>';
    while(
    $res=mysql_fetch_assoc($r)){
    $disp.='<li >';
    if(
    $_GET['categoryID'] == $res['categoryID']) ;
    if(
    $res['slug']!='')
    $disp.='<a href="/category/'.$res['slug'].'/">'.$res['name'].'</a>';
    else
    $disp.='<a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';
    $disp.=subcat($res['categoryID']).'';
    }
    $disp.='</li></ul>';
    }
    }
    return 
    $disp;
    }

    ?>
    Пробовал так: <li {if $smarty.section.i.first} class="first" {elseif $smarty.section.i.last} class="last" {/if}> ,не срабатывает...
     
  4. Voshal

    Voshal Мизантроп

    Регистр.:
    30 мар 2009
    Сообщения:
    286
    Симпатии:
    108
    так у вас нестандартный вывод дерева категорий. Здесь подругому нужно. Один из вариантов first определять по счетчику, который нужно создать вначале и увеличивать в цикле, а last определять по count(), то есть сравнивать общее количество категорий с счетчиком.
     
  5. vicsk

    vicsk Постоялец

    Регистр.:
    19 янв 2010
    Сообщения:
    147
    Симпатии:
    8
    Я не очень силен во всем этом,сможете помочь вывести это у меня?
    <-------------- добавлено через 44 сек. -------------->
    Я не очень силен во всем этом,сможете помочь вывести это у меня?
     
  6. mdss

    mdss ♖♘♗♕♔♗♘♖

    Moderator
    Регистр.:
    20 фев 2007
    Сообщения:
    1.126
    Симпатии:
    668
    проще не маяться и через стили задать

    HTML:
    #navmenu-v li:first-child a {
     
    color:#f00;
     
    }
     
    #navmenu-v li:last-child a {
     
    color:#000;
     
    }
     
    vicsk нравится это.