We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 8324
    • 1 Posts
    Из чанка вызываю сниппет с параметрами
    <ul class="b_goals">
    [[services-list? &id=`9` &class=`b_goals_itm` &pid=`[*id*]`]]
    </ul>

    Суть сниппета вернуть список состоящий из родительского элемента и его дочерних, для того чтобы пометить активный элемент в сниппете проверяется переданный id он же pid в чанке, с полученным id элементов полученных функцией getActiveChildren и если id совпали ставиться ссылке класс active, так вот условие срабатывет, будто бы никогда не совпадают они. Просто отобразил в тексте оба id каждой ссылки и у нужно ссылки id выводятся одинаковыми, но условие все равно не срабатывает в чем дело может кто знает?
    сам сниппет:
    <?php
    $result="";
    $url="";
    $tmp=$modx->getParent ($id);
    $url="/".$tmp['alias']."/";
    $arr = $modx->getDocument($id);
    $url.=$arr['alias'];
    $result.="<li class='$class'><a href='".$url.".html' class='link' title='".$arr['menutitle']."'>".$arr['menutitle']."</a></li>";
    if($arr['isfolder']=='1')
    {
    $tmp=$modx->getActiveChildren($id);
     foreach($tmp as $row)
     {
    if($pid==$row['id']) $l='active'; else $l='link';//vot eto uslovie ne rabotaet
    $result.="<li class='$class'><a href='$url/".$row['alias'].".html' class='$l' title='".$row['menutitle']."'>".$row['menutitle']."</a></li>";
    }
    }
    return $result;
    ?>
      • 25165
      • 2 Posts
      Quote from: dzh0n at Jul 21, 2011, 04:17 PM

      Из чанка вызываю сниппет с параметрами
      <ul class="b_goals">
      [[services-list? &id=`9` &class=`b_goals_itm` &pid=`[*id*]`]]
      </ul>

      Суть сниппета вернуть список состоящий из родительского элемента и его дочерних, для того чтобы пометить активный элемент в сниппете проверяется переданный id он же pid в чанке, с полученным id элементов полученных функцией getActiveChildren и если id совпали ставиться ссылке класс active, так вот условие срабатывет, будто бы никогда не совпадают они. Просто отобразил в тексте оба id каждой ссылки и у нужно ссылки id выводятся одинаковыми, но условие все равно не срабатывает в чем дело может кто знает?
      сам сниппет:
      <?php
      $result="";
      $url="";
      $tmp=$modx->getParent ($id);
      $url="/".$tmp['alias']."/";
      $arr = $modx->getDocument($id);
      $url.=$arr['alias'];
      $result.="<li class='$class'><a href='".$url.".html' class='link' title='".$arr['menutitle']."'>".$arr['menutitle']."</a></li>";
      if($arr['isfolder']=='1')
      {
      $tmp=$modx->getActiveChildren($id);
       foreach($tmp as $row)
       {
      if($pid==$row['id']) $l='active'; else $l='link';//vot eto uslovie ne rabotaet
      $result.="<li class='$class'><a href='$url/".$row['alias'].".html' class='$l' title='".$row['menutitle']."'>".$row['menutitle']."</a></li>";
      }
      }
      return $result;
      ?>


      ну я думаю надо писать так

      if($pid==$row['id']) {
      
      $l='active';
       
      } else {
      
      $l='link' ;
      
      }


      фигурные скобки нужно расставлять всегда несмотря на то, что можно обойтись и без них
        • 25165
        • 2 Posts
        Quote from: dzh0n at Jul 21, 2011, 04:17 PM

        Из чанка вызываю сниппет с параметрами
        <ul class="b_goals">
        [[services-list? &id=`9` &class=`b_goals_itm` &pid=`[*id*]`]]
        </ul>



        В общем

        if( $modx->documentIdentifier == $row['id'] ) {
        
        $l='active';
         
        } else {
        
        $l='link' ;
        
        }

        параметр &pid по сути не нужен

        $modx->documentIdentifier - возвращает идентификатор ресурса

          • 8324
          • 1 Posts
          Спасибо! Действительно о скобках не подумал.
            • 18573
            • 30 Posts
            вызывает сомнение строка
            $result.="<li class='$class'><a href='$url/".$row['alias'].".html' class='$l' title='".$row['menutitle']."'>".$row['menutitle']."</a></li>";
            


            лучше для чтения и быстрее для исполнения
            $result.='<li class="'.$class.'"><a href="'.$url.'"/"'.$row['alias'].'".html' class="'.$l.'" title="'.$row['menutitle'].'">"'.$row['menutitle'].'"</a></li>';
            


            кроме того познайте дзен
            $modx->makeUrl($id);
            http://wiki.modxcms.com/index.php/API:makeUrl

            и насколько я понимаю твои запросы полностью удовлетворит wayfinder