Просмотров: 19758
Странное дело, в Битрикс по умолчанию, отсутсвует функционал для навигации внутри новостей или статей типа: "Следующая/Предыдущая" при подробном просмотре. Давайте исправим?
Собственно все элементарно: в шаблон news.detail , в нужном месте, достаточно вставить вот такой код
$rs = CIBlockElement::GetList(
array(
"active_from" => "desc"
),
array(
"ACTIVE" => "Y",
"IBLOCK_ID" => $arResult["IBLOCK_ID"]
),
false,
array(
"nElementID" => $arResult["ID"],
"nPageSize" => 1
),
array(
"ID"
)
);
while ($ar = $rs->GetNext()) {
$arResult['PREV_NEXT_ELEMENT'] = $ar["ID"];
}
if (count((array)$page) == 2 && $arResult["ID"] == $page[0]):?>
<a href="/путь для ЧПУ/<?=$page[1]?>/">Предыдущая</a>
<?elseif (count((array)$page) == 3):?>
<a href="/путь для ЧПУ/<?=$page[0]?>/">Следующая</a>
<a href="/путь для ЧПУ/<?=$page[2]?>/">Предыдущая</a>
<?elseif (count((array)$page) == 2 && $arResult["ID"] == $page[1]):?>
<a href="/путь для ЧПУ/<?=$page[0]?>/">Следующая</a>
<?endif;?>
Само собой привел безо всякого оформления, вы сможете назначить свои классы или списки для ссылок. Пример работы: собственно под этим текстом. Удачного допиливания битрикс под удобства ).
Все комментарии:
Оставить комментарий
Михаил Базаров 08.12.2013
Более феншуйный и правильный вариант:
В result_modifier.php (если нет, нужно создать) шаблона вставляем
В нужном месте шаблона детальной новости
Сайт автора http://alexvaleev.ru/
В result_modifier.php (если нет, нужно создать) шаблона вставляем
Код |
---|
<? // сортировку берем из параметров компонента $arSort = array( $arParams["SORT_BY1"]=>$arParams["SORT_ORDER1"], $arParams["SORT_BY2"]=>$arParams["SORT_ORDER2"], ); // выбрать нужно id элемента, его имя и ссылку. Можно добавить любые другие поля, например PREVIEW_PICTURE или PREVIEW_TEXT $arSelect = array( "ID", "NAME", "DETAIL_PAGE_URL" ); // выбираем активные элементы из нужного инфоблока. Раскомментировав строку можно ограничить секцией $arFilter = array ( "IBLOCK_ID" => $arResult["IBLOCK_ID"], //"SECTION_CODE" => $arParams["SECTION_CODE"], "ACTIVE" => "Y", "CHECK_PERMISSIONS" => "Y", ); // выбирать будем по 1 соседу с каждой стороны от текущего $arNavParams = array( "nPageSize" => 1, "nElementID" => $arResult["ID"], ); $arItems = Array(); $rsElement = CIBlockElement::GetList($arSort, $arFilter, false, $arNavParams, $arSelect); $rsElement->SetUrlTemplates($arParams["DETAIL_URL"]); while($obElement = $rsElement->GetNextElement()) $arItems[] = $obElement->GetFields(); // возвращается от 1го до 3х элементов в зависимости от наличия соседей, обрабатываем эту ситуацию if(count($arItems)==3): $arResult["TORIGHT"] = Array("NAME"=>$arItems[0]["NAME"], "URL"=>$arItems[0]["DETAIL_PAGE_URL"]); $arResult["TOLEFT"] = Array("NAME"=>$arItems[2]["NAME"], "URL"=>$arItems[2]["DETAIL_PAGE_URL"]); elseif(count($arItems)==2): if($arItems[0]["ID"]!=$arResult["ID"]) $arResult["TORIGHT"] = Array("NAME"=>$arItems[0]["NAME"], "URL"=>$arItems[0]["DETAIL_PAGE_URL"]); else $arResult["TOLEFT"] = Array("NAME"=>$arItems[1]["NAME"], "URL"=>$arItems[1]["DETAIL_PAGE_URL"]); endif; // в $arResult["TORIGHT"] и $arResult["TOLEFT"] лежат массивы с информацией о соседних элементах ?> |
В нужном месте шаблона детальной новости
Код |
---|
<?if(is_array($arResult["TOLEFT"])):?> <a href="<?=$arResult["TOLEFT"]["URL"]?>"> < <?=$arResult["TOLEFT"]["NAME"]?> </a> <?endif?> <?if(is_array($arResult["TORIGHT"])):?> <a href="<?=$arResult["TORIGHT"]["URL"]?>"> <?=$arResult["TORIGHT"]["NAME"]?> > </a> <?endif?> |
Сайт автора http://alexvaleev.ru/
Ярослав 26.06.2014
Здравствуйте Михаил!
Подскажите пожалуйста, а помимо навигации внутри статьи, как сделать разбивку статьи если в ней очень много текста на подстраницы с величиной такой подстраницы например с максимальной длинной текста не более 5000
П.С. А как вы уменьшили количество кнопок в редакторе для комментариев?
Подскажите пожалуйста, а помимо навигации внутри статьи, как сделать разбивку статьи если в ней очень много текста на подстраницы с величиной такой подстраницы например с максимальной длинной текста не более 5000
П.С. А как вы уменьшили количество кнопок в редакторе для комментариев?
Михаил Базаров 26.06.2014
Цитата |
---|
Ярослав пишет: Здравствуйте Михаил! Подскажите пожалуйста, а помимо навигации внутри статьи, как сделать разбивку статьи если в ней очень много текста на подстраницы с величиной такой подстраницы например с максимальной длинной текста не более 5000 П.С. А как вы уменьшили количество кнопок в редакторе для комментариев? |
Настройки редактора для пользователей настраивается в Сервисы-Форум при создании нового подфорума. Просто запрещающими методами "Запретить ссылки" , "Запретить таблицы" ну итд- чтобы только работа с текстом осталось, Можно хоть все поотключать- но как же без смайликов-то
Гость сайта 27.06.2014
Цитата | ||
---|---|---|
Михаил Базаров пишет:
Настройки редактора для пользователей настраивается в Сервисы-Форум при создании нового подфорума. Просто запрещающими методами "Запретить ссылки" , "Запретить таблицы" ну итд- чтобы только работа с текстом осталось, Можно хоть все поотключать- но как же без смайликов-то |
Равиль 15.07.2014
Для символьного кода
Код |
---|
<?$rs=CIBlockElement::GetList( array("active_from" => "desc"), array("ACTIVE"=>"Y", "IBLOCK_ID"=>$arResult["IBLOCK_ID"]), false, array("nElementID"=>$arResult["ID"], "nPageSize"=>1), array("ID", "CODE")); while($ar=$rs->GetNext()) { $page[] = $ar["CODE"]; }?> <div class="news_page"> <ul> <?if (count($page) == 2 && $arResult["CODE"] == $page[0]):?> <li><a href="/news/<?=$page[1]?>/">Следующая новость »</a></li> <?elseif (count($page) == 3):?> <li><a href="/news/<?=$page[0]?>/">« Предыдущая новость</a></li> <li><a class="" href="/news/<?=$page[2]?>/">Следующая новость »</a></li> <?elseif (count($page) == 2 && $arResult["ID"] == $page[1]):?> <li><a href="/news/<?=$page[0]?>/">« Предыдущая новость</a></li> <?endif;?> </ul> </div> |
Владимир 06.08.2014
Здравствуйте Михаил!
Подскажите пожалуйста, как можно сделать так, чтобы при детальном просмотре новости можно было переходить к следующей и предыдущей не по ID новости, а по числу сортировки (которое 500 по умолчанию)? Что нужно поменять в вашем коде:
Подскажите пожалуйста, как можно сделать так, чтобы при детальном просмотре новости можно было переходить к следующей и предыдущей не по ID новости, а по числу сортировки (которое 500 по умолчанию)? Что нужно поменять в вашем коде:
Цитата | ||||
---|---|---|---|---|
Михаил Базаров пишет: Более феншуйный и правильный вариант: В result_modifier.php (если нет, нужно создать) шаблона вставляем
В нужном месте шаблона детальной новости
Сайт автора http://alexvaleev.ru/ |
Александр Виноградний 27.02.2021
Здравствуйте, Михаил!
Использую в своем проекте "Более феншуйный и правильный вариант".
Но почему-то под каждой новость выводиться толька одна ссылка (либо на предыдущую, либо на следующую), но никак не обе сразу.
Использую в своем проекте "Более феншуйный и правильный вариант".
Но почему-то под каждой новость выводиться толька одна ссылка (либо на предыдущую, либо на следующую), но никак не обе сразу.
Константин 20.06.2022
Как к первому варианту прикрутить изображение с ресайзом и заголовок новости?