|
|
28.01.2015, 12:57
|
|
zhenya_mzmo
Зарегистрирован: 2006-11-08
Сообщений: 40
|
Здравствуйте, необходимо в компоненте сделать небольшое меню.
Компонент состоит из объектов, на которых стоят якоря, а вначале страницы небольшое якорное меню, если можно так сказать, на эти объекты.
В системных настройках компонента пишу следующее:
Код:<?php
$anchor_menu['prefix'] = "<div class='nav-bloks anchor'><ul>";
$anchor_menu['suffix'] = "</ul></div>";
$anchor_menu['unactive'] = "<li><a href='#"<?= $f_Anchor?>"'><?= $f_Topic?></a></li>";
?>
Соответственно, Anchor - имя якоря объекта, Topic - заголовок объекта (из заголовков будет состоять меню).
Вывод в компоненте:
Код:<?= nc_browse_level(1, $anchor_menu); ?>
Не работает((( Так понимаю дело в синтаксисе (испробовала кучу вариантов), а вообще я верно действую? Могу я в навигации убирать %URL и %Name, и ставить другие значения?
korvin
|
|
|
28.01.2015, 14:34
|
|
zhenya_mzmo
Зарегистрирован: 2006-11-08
Сообщений: 40
|
Техподдержка ответила, что Цитата:Шаблон навигации - строка, там нельзя использовать скобки PHP <? ?> и код в обычном виде, правильнее всего использовать макросы %URL и %Name.
Может кто знает как это реализовать по другому?
korvin
|
|
|
29.01.2015, 00:27
|
|
Игорь
Игорь Мишарин

Зарегистрирован: 2011-11-20
Сообщений: 482
|
Можно реализовать или запросом к БД или через s_list_class, т.е. вывести список объектов, но со своим шаблоном, в котором присутствуют только ссылка (якорь и Название).
Stark
|
|
|
29.01.2015, 08:35
|
|
zhenya_mzmo
Зарегистрирован: 2006-11-08
Сообщений: 40
|
Игорь, а можете подсказать как это вообще выглядеть должно? я совсем начинающий товарищ
korvin
|
|
|
29.01.2015, 15:15
|
|
Nexwich
Панасин Александр

Зарегистрирован: 2011-04-05
Сообщений: 1037
|
zhenya_mzmo
Код:$anchor_menu['unactive'] = "<li><a href='#".$f_Anchor."'>".$f_Topic."</a></li>";
Синтаксис такой.
Вот только навигация не знает ваших объектов и не выставит их хоть и напишет значение первого.
Навигация не ваш случай. Вам придется использовать выборку значений из базы данных
Пример
Вариант 1
Создайте шаблон компонент предположим его число 90
Далее в макете или где должны выводится ссылки вставляем либо s_list_class либо ее наследника 5 версии функцию nc_objects_list()
<?=s_list_class($sub,$cc,"nc_ctpl=90",true)?>
В таком виде будет работать если компонент с объектами стоит последним на странице при условии если их несколько (редкий случай) иначе укажите $sub,$cc
$cc - номер текушего инфоблока.
Вариант 2
Расположите этот код в месте где нужно вывести
Код:<?
// Получить объекты из компонента 2000 где объект включен и расположен в компоненте текущего раздела. Все их поля чтобы не было вдруг ошибок
$items = $nc_core->db->get_results("SELECT * FROM Message2000 WHERE Checked=1 AND Sub_Class_ID=".$cc." ORDER BY Priority", ARRAY_A );
// Простейший цикл. Разложит полученный массив всех строк $items на отдельные массивы по одной строке $item. Что бы понять как он работает стоит изучить базу данных
// Условие если что то нашел в базе то выводим
if($items){
?>
<ul>
<?
foreach($items as $item){ ?>
<li><a href='#<?=$item["Anchor"]?>'><?=$item["Topic"]?></a></li>
<? } ?>
?>
</ul>
<?
}
// Закрыть условие
?>
В таком виде будет работать если компонент с объектами стоит последним на странице при условии если их несколько (редкий случай) иначе укажите $sub,$cc
$cc - номер текушего инфоблока.
Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
|
|
|
30.01.2015, 07:21
|
|
zhenya_mzmo
Зарегистрирован: 2006-11-08
Сообщений: 40
|
Александр, большое спасибо за такой подробный ответ 
буду пробовать, а изучить мне еще очень много надо)))
korvin
|
|
|
30.01.2015, 09:18
|
|
zhenya_mzmo
Зарегистрирован: 2006-11-08
Сообщений: 40
|
Ура!!!! Получилось!!! Только у меня список идет по порядку не правильно, с конца(((
Правда по ходу еще заметила, что хорошо бы было это меню делить на два столбца, в css все прописала, чтоб красиво выглядело. В html счас это выглядит так:
Код:
<div class="nav-bloks anchor">
<ul>
<li><a href="#1">бла-бла-бла</a></li>
<li><a href="#2">бла-бла-бла</a></li>
<li><a href="#3">бла-бла-бла</a></li>
<li><a href="#4">бла-бла-бла</a></li>
<li><a href="#5">бла-бла-бла</a></li>
</ul>
</div>
<div class="nav-bloks anchor">
<ul>
<li><a href="#6">бла-бла-бла</a></li>
<li><a href="#7">бла-бла-бла</a></li>
<li><a href="#8">бла-бла-бла</a></li>
<li><a href="#9">бла-бла-бла</a></li>
<li><a href="#10">бла-бла-бла</a></li>
</ul>
</div>
То есть мне нужно, чтобы количество "Anchor" в компоненте подсчитывалось, и делилось пополам с вариацией, грубо говоря, 5*5, 3*3, а если не делится на равное количество, то 5*4, 4*3...
После деления попалам записывалось бы так же:
Код:<?
foreach($items as $item){ ?>
<li><a href='#<?=$item["Anchor"]?>'><?=$item["Topic"]?></a></li>
<? } ?>
И как это сделать?
korvin
|
|
|
30.01.2015, 15:30
|
|
Nexwich
Панасин Александр

Зарегистрирован: 2011-04-05
Сообщений: 1037
|
Строка 2 предыдущего кода
Код:$items = $nc_core->db->get_results("SELECT * FROM Message2000 WHERE Checked=1 AND Sub_Class_ID=".$cc." ORDER BY Priority DESC", ARRAY_A );
К циклу добавьте счетчик (число которое увеличивается с каждым проходом цикла)
Код:<?
$i = 1;
foreach($items as $item){ ?>
<? // Если счетчик больше 5 то обнулить счетчик, закрыть тег и снова открыть для нового списка.
if($i > 5){ $i = 1; ?>
</ul>
</div>
<div class="nav-bloks anchor">
<ul>
<? } ?>
<li><a href='#<?=$item["Anchor"]?>'><?=$item["Topic"]?></a></li>
<? $i++; } ?>
?>
Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
|
|
|
02.02.2015, 07:26
|
|
zhenya_mzmo
Зарегистрирован: 2006-11-08
Сообщений: 40
|
Спасибо огромное, вы меня очень выручили, все получилось!!!
 
korvin
|