Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > jQuery меню аккордеон


Автор: XpoHuk 21.3.2012, 06:06
Проблема в следующем:
Есть меню аккордеон в котором 3 раздела и на данный момент 2 из них пусты, нужно сделать так чтоб те разделы в которых пусто не выводились в меню.

Код одного из разделов меню:
Код

                <h3><a href="#">Новости</a></h3>
                <div>
                        <?$APPLICATION->IncludeComponent("news.list", "encicl", array(
                    "IBLOCK_TYPE" => "news",
                    "IBLOCK_ID" => "2",
                    "NEWS_COUNT" => "5",
                    "SORT_BY1" => "ACTIVE_FROM",
                    "SORT_ORDER1" => "DESC",
                    "SORT_BY2" => "SORT",
                    "SORT_ORDER2" => "ASC",
                    "FILTER_NAME" => "arrFilter",
                    "FIELD_CODE" => array(
                            0 => "",
                            1 => "",
                    ),
                    "PROPERTY_CODE" => array(
                            0 => "CATEGORIES",
                            1 => "",
                    ),
                    "CHECK_DATES" => "Y",
                    "DETAIL_URL" => "",
                    "AJAX_MODE" => "N",
                    "AJAX_OPTION_SHADOW" => "Y",
                    "AJAX_OPTION_JUMP" => "N",
                    "AJAX_OPTION_STYLE" => "Y",
                    "AJAX_OPTION_HISTORY" => "N",
                    "CACHE_TYPE" => "A",
                    "CACHE_TIME" => "300",
                    "CACHE_FILTER" => "N",
                    "CACHE_GROUPS" => "Y",
                    "PREVIEW_TRUNCATE_LEN" => "",
                    "ACTIVE_DATE_FORMAT" => "d.m.Y",
                    "SET_TITLE" => "N",
                    "SET_STATUS_404" => "N",
                    "INCLUDE_IBLOCK_INTO_CHAIN" => "N",
                    "ADD_SECTIONS_CHAIN" => "N",
                    "HIDE_LINK_WHEN_NO_DETAIL" => "N",
                    "PARENT_SECTION" => "",
                    "PARENT_SECTION_CODE" => "",
                    "DISPLAY_TOP_PAGER" => "N",
                    "DISPLAY_BOTTOM_PAGER" => "N",
                    "PAGER_TITLE" => "Новости",
                    "PAGER_SHOW_ALWAYS" => "Y",
                    "PAGER_TEMPLATE" => "",
                    "PAGER_DESC_NUMBERING" => "N",
                    "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
                    "PAGER_SHOW_ALL" => "Y",
                    "DISPLAY_DATE" => "N",
                    "DISPLAY_NAME" => "Y",
                    "DISPLAY_PICTURE" => "N",
                    "DISPLAY_PREVIEW_TEXT" => "N",
                    "AJAX_OPTION_ADDITIONAL" => ""
                    ),
                    $component
            );?> 
                </div>


PS: О том что можно временно закомментировать эти разделы я знаю но нужно именно скрыть, чтоб при создании в данном случае новостей раздел автоматически считался не пустым и появлялся в меню.

Автор: ksnk 21.3.2012, 07:49

Код

<?php 
$component_html=trim($APPLICATION->IncludeComponent("news.list", "encicl", array(
...

);
if(!empty($component_html)){
?>
<h3><a href="#">Новости</a></h3>
                <div><?=$component_html?>
</div>
<?php } ?>
                 


?

Автор: XpoHuk 21.3.2012, 08:20
Цитата(ksnk @ 21.3.2012,  07:49)
Код

<?php 
$component_html=trim($APPLICATION->IncludeComponent("news.list", "encicl", array(
...

);
if(!empty($component_html)){
?>
<h3><a href="#">Новости</a></h3>
                <div><?=$component_html?>
</div>
<?php } ?>
                 


?

Этот код просто раскрывает меню и убирает название раздела меню, то есть когда наполняем меню оно всегда остаётся раскрытым.
А меню всё таки аккордеон. smile

Автор: ksnk 21.3.2012, 08:46
Цитата(XpoHuk @  21.3.2012,  08:20 Найти цитируемый пост)
Этот код просто раскрывает меню и убирает название раздела меню

нет. этот код сначала получает содержимое будущего раздела аккордеона, и если это содержимое не пустое - выводит сам раздел вместе с названием и содержимым. А если пустой - не выводит.

Автор: XpoHuk 21.3.2012, 11:46
Когда я его ставлю на заполненный раздел меню, оно его полностью разворачивает и убирает название и меню перестаёт быть аккордеонным, 
то есть: код получает содержимое раздела, выводит его, а название и скрипт аккордеона не более не использует на данном разделе.
может я что-то не так делаю?

в общем вот конечный результат:

Код

<?php 
$component_html=trim($APPLICATION->IncludeComponent("news.list", "encicl", array(
                    "IBLOCK_TYPE" => "news",
                    "IBLOCK_ID" => "2",
                    "NEWS_COUNT" => "5",
                    "SORT_BY1" => "ACTIVE_FROM",
                    "SORT_ORDER1" => "DESC",
                    "SORT_BY2" => "SORT",
                    "SORT_ORDER2" => "ASC",
                    "FILTER_NAME" => "arrFilter",
                    "FIELD_CODE" => array(
                            0 => "",
                            1 => "",
                    ),
                    "PROPERTY_CODE" => array(
                            0 => "CATEGORIES",
                            1 => "",
                    ),
                    "CHECK_DATES" => "Y",
                    "DETAIL_URL" => "",
                    "AJAX_MODE" => "N",
                    "AJAX_OPTION_SHADOW" => "Y",
                    "AJAX_OPTION_JUMP" => "N",
                    "AJAX_OPTION_STYLE" => "Y",
                    "AJAX_OPTION_HISTORY" => "N",
                    "CACHE_TYPE" => "A",
                    "CACHE_TIME" => "300",
                    "CACHE_FILTER" => "N",
                    "CACHE_GROUPS" => "Y",
                    "PREVIEW_TRUNCATE_LEN" => "",
                    "ACTIVE_DATE_FORMAT" => "d.m.Y",
                    "SET_TITLE" => "N",
                    "SET_STATUS_404" => "N",
                    "INCLUDE_IBLOCK_INTO_CHAIN" => "N",
                    "ADD_SECTIONS_CHAIN" => "N",
                    "HIDE_LINK_WHEN_NO_DETAIL" => "N",
                    "PARENT_SECTION" => "",
                    "PARENT_SECTION_CODE" => "",
                    "DISPLAY_TOP_PAGER" => "N",
                    "DISPLAY_BOTTOM_PAGER" => "N",
                    "PAGER_TITLE" => "Новости",
                    "PAGER_SHOW_ALWAYS" => "Y",
                    "PAGER_TEMPLATE" => "",
                    "PAGER_DESC_NUMBERING" => "N",
                    "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
                    "PAGER_SHOW_ALL" => "Y",
                    "DISPLAY_DATE" => "N",
                    "DISPLAY_NAME" => "Y",
                    "DISPLAY_PICTURE" => "N",
                    "DISPLAY_PREVIEW_TEXT" => "N",
                    "AJAX_OPTION_ADDITIONAL" => ""

)));?>
<?php if(!empty($component_html)){?>
<h3><a href="#">Новости</a></h3>
<div><?=$component_html?></div>
<?php } ?>


сам скрипт аккордеона:
Код

        <script>
    $(function() {
        $( "#accordion" ).accordion({
            collapsible: true,
                        autoHeight: false,
                        active: 1
        });
    });
    </script>

Автор: ksnk 21.3.2012, 12:01
Ээээ. Так "новости" - это не раздел аккордеона, а просто заголовок всего аккордеона? Тогда нужно ковырять сам компонент

Автор: XpoHuk 21.3.2012, 12:10
Не не в общем так:

Меню:
       Статьи(Название раздела(раскрывается при нажатии))
            - Статья 1 (сами ссылки внутри раздела)
            - Статья 2 (сами ссылки внутри раздела)
            - Статья 3 (сами ссылки внутри раздела)
            - Статья 4 (сами ссылки внутри раздела)
       Новости(Название раздела(раскрывается при нажатии)Нужно скрыть)
            - ПУСТО
       Вакансии(Название раздела(раскрывается при нажатии))
            - Статья 1 (сами ссылки внутри раздела)
            - Статья 2 (сами ссылки внутри раздела)
            - Статья 3 (сами ссылки внутри раздела)
            - Статья 4 (сами ссылки внутри раздела)


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)