Максим Толокань написал: И еще раз большое спасибо Владимир. остался только еще один вопрос: как сделать чтобы был показ элементов только одного раздела?
в фильтр надо добавить фильтрацию по разделу.
Там же написано было
/* Фильтр записей инфоблока (если используется рабиение по разделам, то к фильтру нужно добавить "SECTION_ID" => $arResult['IBLOCK_SECTION_ID']) */
т.е. фильтр станет такой $arFilter = array("IBLOCK_ID" => $arResult['IBLOCK_ID'], "ACTIVE" => 'Y', 'SECTION_ID' => $arResult['IBLOCK_SECTION_ID']);
В этом элементе массива $arResult['IBLOCK_SECTION_ID'] хранится ID раздел текущего элемента, вот мы его к фильтру и добавляем.
Максим Толокань написал: только всему учусь, но вопрос следующий: как сделать чтобы при переходе по данной навигации открывалось не мой_сайт/information/detail.php?ID=4 а мой_сай/stati/rubrika-persona/persona-yaroslava-evgenevna-pimonova/ у меня стоит галочка использовать ЧПУ
Идешь в настройки инфоблока и там прописываешь как будут формироваться пути и для "URL страницы для детального просмотра" пишешь #SITE_DIR#/stati/#SECTION_ID#/#CODE#/
Или же в компоненте пути в настройках ЧПУ правильно прописать
В приведенном примере производиться 2 запроса, можно обойтись одним.
Для этого в шаблон компонета news.detail или catalog.element нужно вставить код
Код
<?
/* Фильтр записей инфоблока
(если используется рабиение по разделам,
то к фильтру нужно добавить
"SECTION_ID" => $arResult['IBLOCK_SECTION_ID']) */
$arFilter = array("IBLOCK_ID" => $arResult['IBLOCK_ID'])
// Выбиреам записи
rs = CIBlockElement::GetList(array("SORT"=>"ASC"),$arFilter,false,false,array('ID','NAME','DETAIL_PAGE_URL'));
$i=0;
while ($ar = $rs -> GetNext()) {
$arNavi[$i] = $ar;
// Если ID полученной записи равен ID новости которая отображается, то запоминаем ее номер
if ($ar['ID'] == $arResult['ID']) $iCurPos = $i;
$i++;
}
// Заполняем массив информацией о следующей и предыдущей записи
// Ключ предыдущего элемента будет [$iCurPos - 1]
// Ключ следующего элемента будет [$iCurPos + 1]
// Если элементы массива с этими ключами существуют то сохраняем их, иначе осталяем пустыми
// $arLink - массив со ссылками на след и предыд новости
$arLink = array();
$arLink['PREVIOUS'] = isset($arNavi[$iCurPos - 1]) ? $arNavi[$iCurPos - 1] : '';
$arLink['NEXT'] = isset($arNavi[$iCurPos+1]) ? $arNavi[$iCurPos+1] : '';
?>
И затем выводим в нужном месте
Код
<?
// Если есть предыдущий элемент то выводим ссылку
if (is_array($arLink['PREVIOUS']))
{
echo '<a href="'.$arLink['PREVIOUS']['DETAIL_PAGE_URL'].'">Предыдущая</a>';
}?>
<?
// Если есть следущий элемент то выводим ссылку
if (is_array($arLink['NEXT']))
{
echo '<a href="'.$arLink['NEXT']['DETAIL_PAGE_URL'].'">Следующая</a>';
}?>
Я в шаблон вывода компонента search.page вставляю кастомизированный компонент system.pagenavigation Вот кусок кода прямо из шаблона: (здесь параметр TEXT передает подпись перед листалкой)
Могу посоветовать вам подключать постраничный вывод отдельно. Посмотреть пример можно тут Там описывается на примере компонента search.page но использовать можно везде.
На счет отдельного инфоблока для архива. Встает вопрос о том как переносить записи туда из других? Если только написать свой обработчик?
У меня тоже есть мысль сделать свой компонент под эти цели, но пока решил по другому, т.к. нет много времени на разработку (очистил он элементов дизайна):
Ситауция такая: Есть раздел "Новости" в нем три пока что одинаковых подраздела и подраздел архив. Информация для каждого подраздела хранится в своем инфоблоке, структура у них одинакова. Во всех трех инфоблоках имеется свойство ARCHIVES (архивная). В каждом из трех разделов я вывожу статьи, не отмеченные флагом "Архивная" А в подразделе "Архив" должны выводится статьи из всех трех инфоблоков, помеченные флагом "Архивная".
С помощью какой команды можно достать эти архивные статьи из трех инфоблоков.
Более того страничку с формой можно прикрутить к инфоблокам. Создать инфоблок а-ля "Обратная связь" и после отправки формы записывать результат в иблок и отправлять на е-мэйл. Таким образом у вас в системе будут хранится все обращения с сайта и вы их можете просматривать не обращаясь к почте.
Здравствуйте. если форму в разделе контакты сделать руками и чтобы отправка осуществлялась толка на ваш е-мэйл, без сохранения в системе (отказаться от использования модуля Веб-формы) то вполне реализуемо то что вы хотите предложить. Отельно модули не продаются и при желании иметь модуль Веб-формы вам придется покупать Стандарт.