Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Помогите подправить шаблон catalog-section-list

00 голосов
5
Добрый день. Необходимо подправить шаблон компонента. В результате работы компонента catalog.section.list получается следующий результат:

Код

<ul>
<li><a href="/e-store/xml_catalog/17/">razd_1 (77)</a></li>
<ul>   
<li><a href="/e-store/xml_catalog/18/">podrazd_1 (53)</a></li>
<li><a href="/e-store/xml_catalog/19/">podrazd_2 (14)</a></li>
<li><a href="/e-store/xml_catalog/20/">podrazd_3 (8)</a></li>
<li><a href="/e-store/xml_catalog/21/">podrazd_4 (2)</a></li>
</ul>   

<li><a href="/e-store/xml_catalog/22/">razd_2 (35)</a></li>
<ul>
<li><a href="/e-store/xml_catalog/23/">podrazd_1 (14)</a></li>
<li><a href="/e-store/xml_catalog/24/">podrazd_2 (8)</a></li>
<li><a href="/e-store/xml_catalog/25/">podrazd_3 (11)</a></li>
<li><a href="/e-store/xml_catalog/26/">podrazd_4 (2)</a></li>
</ul>

</ul>


А мне нужно, чтобы получалась следующая структура:

Код
<ul id="tree" class="treeview">         
 <li class="expandable"> <a href="/e-store/xml_catalog/17/">razd_1 (77)</a> 
  <ul style="display: none;"> 
   <li><a href="/e-store/xml_catalog/18/">podrazd_1 (53)</a></li>                        
   <li><a href="/e-store/xml_catalog/19/">podrazd_2 (14)</a></li>                            
   <li><a href="/e-store/xml_catalog/20/">podrazd_3 (8)</a></li>
   <li><a href="/e-store/xml_catalog/20/">podrazd_4 (2)</a></li>
  </ul>
 </li>
 <li class="expandable"> <a href="/e-store/xml_catalog/22/">razd_2 (35)</a> 
  <ul style="display: none;"> 
   <li><a href="/e-store/xml_catalog/23/">podrazd_1 (14)</a></li>                        
   <li><a href="/e-store/xml_catalog/24/">podrazd_2 (8)</a></li>                            
   <li><a href="/e-store/xml_catalog/25/">podrazd_3 (11)</a></li>
   <li><a href="/e-store/xml_catalog/26/">podrazd_4 (2)</a></li>
  </ul>
 </li>
</ul>


Вот как я изменил код шаблона:

Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<div class="catalog-section-list">
<ul id="tree" class="treeview">
<?
$CURRENT_DEPTH=$arResult["SECTION"]["DEPTH_LEVEL"]+1;
foreach($arResult["SECTIONS"] as $arSection):
    if($CURRENT_DEPTH<$arSection["DEPTH_LEVEL"])
        echo "<ul style='display: none;'>";
    elseif($CURRENT_DEPTH>$arSection["DEPTH_LEVEL"])
        echo str_repeat("</ul>", $CURRENT_DEPTH - $arSection["DEPTH_LEVEL"]);
    else
        echo "<li class="expandable">";
    $CURRENT_DEPTH = $arSection["DEPTH_LEVEL"];

?>
    <li><a href="<?=$arSection["SECTION_PAGE_URL"]?>"><?=$arSection["NAME"]?><?if($arParams["COUNT_ELEMENTS"]):?> (<?=$arSection["ELEMENT_CNT"]?>)<?endif;?></a></li>
<?endforeach?>
</ul>
</div>


Но при применении данного кода выдает, что не может отобразить страницу и приходится перезапускать Битрикс, заменив код шаблона на исходный. В чем здесь проблема?
спросил 29 Окт, 13 от Aypuka (340 баллов)

5 Ответы

00 голосов
Цитата
Руслан Смирнов пишет:
echo "<li class="expandable">";

минимум кавычки не те
ответил 30 Ноя, 13 от Grimmi (2,560 баллов)
00 голосов
Все исправил. Теперь код выглядит так:

Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<div class="catalog-section-list">
<ul id="tree" class="treeview">
<?
$CURRENT_DEPTH=$arResult["SECTION"]["DEPTH_LEVEL"]+1;
foreach($arResult["SECTIONS"] as $arSection):
    if($CURRENT_DEPTH<$arSection["DEPTH_LEVEL"])
        echo "<ul style='display: none;'>";
    elseif($CURRENT_DEPTH>$arSection["DEPTH_LEVEL"])
        echo str_repeat("</ul></li>", $CURRENT_DEPTH - $arSection["DEPTH_LEVEL"]);
    else
        echo "";  
    $CURRENT_DEPTH = $arSection["DEPTH_LEVEL"];

?>
    <li><a href="<?=$arSection["SECTION_PAGE_URL"]?>"><?=$arSection["NAME"]?><?if($arParams["COUNT_ELEMENTS"]):?>&nbsp;(<?=$arSection["ELEMENT_CNT"]?>)<?endif;?></a></li>
<?endforeach?>
</li>
</ul>
</div>


Но в результате получается следующее. Там в коде показано, что в одном месте лишняя </li>:

Код
<ul id="tree" class="treeview">        
<li class="expandable"> <a href="/e-store/xml_catalog/17/">razd_1 (77)</a></li>//вот здесь лишняя </li>
  <ul style="display: none;">
   <li><a href="/e-store/xml_catalog/18/">podrazd_1 (53)</a></li>                        
   <li><a href="/e-store/xml_catalog/19/">podrazd_2 (14)</a></li>                            
   <li><a href="/e-store/xml_catalog/20/">podrazd_3 (8)</a></li>
   <li><a href="/e-store/xml_catalog/20/">podrazd_4 (2)</a></li>
  </ul>
</li>
<li class="expandable"> <a href="/e-store/xml_catalog/22/">razd_2 (35)</a></li>//и здесь лишняя </li>
  <ul style="display: none;">
   <li><a href="/e-store/xml_catalog/23/">podrazd_1 (14)</a></li>                        
   <li><a href="/e-store/xml_catalog/24/">podrazd_2 (8)</a></li>                            
   <li><a href="/e-store/xml_catalog/25/">podrazd_3 (11)</a></li>
   <li><a href="/e-store/xml_catalog/26/">podrazd_4 (2)</a></li>
  </ul>
</li>
</ul> 


Я так понимаю в последних строчках кода шаблона нужно добавить некое условие, но как.
ответил 12 Март, 14 от Aypuka (340 баллов)
00 голосов
Попробовать так:
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> 
<div class="catalog-section-list"> 
<ul id="tree" class="treeview"> 
<? 
$CURRENT_DEPTH=$arResult["SECTION"]["DEPTH_LEVEL"]+1; 
foreach($arResult["SECTIONS"] as $arSection): 
    if($CURRENT_DEPTH<$arSection["DEPTH_LEVEL"]) 
        echo "<ul style='display: none;'>"; 
    elseif($CURRENT_DEPTH>$arSection["DEPTH_LEVEL"]) 
        echo str_repeat("</ul></li>", $CURRENT_DEPTH - $arSection["DEPTH_LEVEL"]); 
    else 
        echo "</li>";   
    $CURRENT_DEPTH = $arSection["DEPTH_LEVEL"]; 

?> 
    <li><a href="<?=$arSection["SECTION_PAGE_URL"]?>"><?=$arSection["NAME"]?><?if($arParams["COUNT_ELEMENTS"]):?> (<?=$arSection["ELEMENT_CNT"]?>)<?endif;?></a> 
<?endforeach?> 
</li> 
</ul> 
</div>
ответил 02 Июль, 14 от Grimmi (2,560 баллов)
00 голосов
Николай Санников,
Огромное спасибо - все получилось. Еще есть момент, который я ни как не могу победить. У меня в шаблоне для данного компонента прописаны следующие строки:

Код
<link tppabs="jquery.css" href="jquery.css" rel="stylesheet"></link>
 
<script src="jquery_1.js" tppabs="jquery_1.js" type="text/javascript"></script>
 
<script src="jquery_2.js" tppabs="jquery_2.js" type="text/javascript"></script>
 
<script src="jquery_3.js" tppabs="jquery_3.js" type="text/javascript"></script>


Данный каталог используется в шаблоне сайта, т.е. он (каталог) отображается на каждой странице.
Но все срабатывает, если эти файлы находятся в папке с файлами страницы. Если в папке нет файлов jquery_1.js, jquery_2.js, jquery_3.js, то шаблон не срабатывает. Как прописать и где положить эти файлы (jquery.css, jquery_1.js, jquery_2.js, jquery_3.js). А то получается мне нужно в каждую папку их копировать, чтобы эти файлы срабатывали везде.
ответил 02 Ноя, 14 от Aypuka (340 баллов)
00 голосов
Руслан Смирнов
положить в папку /js/ в корне сайта а в путях прописать src="/js/jquery_1.js"
ответил 02 Март, 15 от KAKYWA (180 баллов)

Похожие вопросы

0 голосов
2 ответов
0 голосов
2 ответов
спросил 17 Дек, 13 от wintik (100 баллов)
0 голосов
7 ответов
спросил 21 Май, 13 от KLORIS (200 баллов)
0 голосов
1 ответ
спросил 25 Июль, 15 от аноним