Форум программистов, компьютерный форум, киберфорум
1С Битрикс
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/75: Рейтинг темы: голосов - 75, средняя оценка - 4.55
11 / 11 / 2
Регистрация: 29.05.2011
Сообщений: 533

Фильтрация bitrix:news.list после перехода по ссылке

06.09.2018, 11:58. Показов 15360. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Существует возможность у каждой статьи выбрать определенные теги. Данные теги выводятся в детальной статье.
Необходимо, при нажатии на один из тегов произвести переход в список статей и данный список отфильтровать по тегу, на который кликнули.
Пример:
1) Есть список статей "Статья1","Статья2", "Статья3" (скрин "Список статей 3")
2) у статей "Статья1","Статья2" есть тег "Тег1" (скрин "Статья1 с тегом", "Статья2 с тегом"). У "Статья3" данного тега нет (скрин "Статья3 без тега")
3) необходимо по нажатию на Тег1 (например в Статье1), чтобы происходил переход в список статей и чтобы данный список выводил только те статьи, у которых имеется "Тег1".
Подскажите, пожалуйста, каким образом возможно реализовать? Может есть примеры. Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.09.2018, 11:58
Ответы с готовыми решениями:

Как разместить bitrix::news компонент в шаблоне компонента news::detail другого bitrix::news?
Доброго времени суток, не так давно окунулся в мир битрикс разработки и передо мной встал следующий вопрос, подскажите пожалуйста как это...

Цикл в bitrix:news.list
Друзья, подскажите, как сделать, что бы после каждой третей новости закрывался и открывался вновь <div class="row"> ...

В bitrix:news.list выделить стилем первую новость
Необходимо выделить первую из массива новость другим стилем. Подскажите, как выцепить из foreach цикла только первый элемент. Нужно создать...

21
11 / 11 / 2
Регистрация: 29.05.2011
Сообщений: 533
06.09.2018, 11:59  [ТС]
Скрины
Миниатюры
Фильтрация bitrix:news.list после перехода по ссылке   Фильтрация bitrix:news.list после перехода по ссылке   Фильтрация bitrix:news.list после перехода по ссылке  

Фильтрация bitrix:news.list после перехода по ссылке  
0
11 / 11 / 2
Регистрация: 29.05.2011
Сообщений: 533
06.09.2018, 12:50  [ТС]
Тег ссылкой можно например сделать так:
PHP
1
2
3
4
5
6
7
8
9
<?foreach($arResult['PROPERTIES']['TEG']['VALUE'] as $key => $arItem):?>
            <?
            $arFilter = Array("IBLOCK_ID"=>39, "ID"=>$arItem);
            $res = CIBlockElement::GetList(Array(), $arFilter, false, false, array());
            while($ob = $res->Fetch()):?>
                <!--<div><a style="padding-bottom: 50px;" href=""><?/*=$ob['NAME']*/?></a></div><br>-->
            <?echo '<a href="/help/articles/?tags='.str_replace(' ', '+', $ob['NAME']).'">'.$ob['NAME'].'</a>';?>
            <?endwhile;?>
        <?endforeach;?>
Тогда при клике на тег происходит переход в список статей.
Только вот каким образом произвести фильтрацию по тегу (т.е. по которому перешел) в списке?
0
3058 / 1457 / 265
Регистрация: 16.03.2008
Сообщений: 6,495
Записей в блоге: 2
06.09.2018, 17:36
Модуль делал - не подходит?
Модуль как вариант решения задачи
0
11 / 11 / 2
Регистрация: 29.05.2011
Сообщений: 533
07.09.2018, 06:15  [ТС]
voral, спасибо что откликнулись )
Цитата Сообщение от voral Посмотреть сообщение
Модуль делал - не подходит?
- модуль подходит, но не совсем.
Для удобства использования условием было, чтобы теги не вводить вручную, а выбирать из ИБ. Для этого создан отдельный ИБ, после чего в каждой статье есть возможность выбирать теги через кнопку "..."

Добавлено через 19 минут
Пытаюсь сделать фильтр на странице, где подключается список новостей.
PHP
1
2
3
4
if (isset($GLOBALS[_GET]['tags']))
{
    $arrFilter = array("IBLOCK_ID" => 5, 'PROPERTIES_TEG' => $GLOBALS[$_GET]['tags']);
}
Т.е. в адресной строке передается тег, а на странице подключения списка новостей произвести проверку на наличие этого тега и на основании его отфильтровать список.
Но что-то список не фильтруется. Видимо что-то делаю не так...
Пример:
1) в Статье1 есть Тег1
2) по нажатию на данный тег происходит переход на страницу списка статей, где в адресной строке передается параметр ?tags=Тег1
3) но список не фильтруется....
0
3058 / 1457 / 265
Регистрация: 16.03.2008
Сообщений: 6,495
Записей в блоге: 2
07.09.2018, 07:15
Не правильно написали потому что PROPERTY_TEG
PHP/HTML
1
2
3
4
if (isset($GLOBALS[_GET]['tags']))
{
    $arrFilter = array("IBLOCK_ID" => 5, 'PROPERTY_TEG' => $GLOBALS[$_GET]['tags']);
}
Добавлено через 1 минуту
И $arrFilter делаете глобальной переменной?
PHP/HTML
1
2
3
4
if (isset($GLOBALS[_GET]['tags']))
{
    $_GLOBALS['arrFilter'] = array("IBLOCK_ID" => 5, 'PROPERTY_TEG' => $GLOBALS[$_GET]['tags']);
}
Добавлено через 1 минуту
Нет необходимости обращаться $GLOBALS[_GET]['tags'] достаточно $_GET['tags']
0
11 / 11 / 2
Регистрация: 29.05.2011
Сообщений: 533
07.09.2018, 08:00  [ТС]
Цитата Сообщение от voral Посмотреть сообщение
Не правильно написали потому что PROPERTY_TEG
- это точно, нужно вместо 'PROPERTIES_TEG' писать PROPERTY_TEG.
Цитата Сообщение от voral Посмотреть сообщение
Нет необходимости обращаться $GLOBALS[_GET]['tags'] достаточно $_GET['tags']
- учту, спасибо )
Делаю так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
if (isset($_GET['tags']))
{
    $GLOBALS['arrFilter'] = array("IBLOCK_ID" => 5, 'PROPERTY_TEG' => $_GET['tags']);
}
<?$APPLICATION->IncludeComponent("bitrix:news.list", "news", array(
    "IBLOCK_TYPE" => "articles",
    "IBLOCK_ID" => "5",
    "NEWS_COUNT" => "10",
    "SORT_BY1" => "ACTIVE_FROM",
    "SORT_ORDER1" => "DESC",
    "SORT_BY2" => "SORT",
    "SORT_ORDER2" => "ASC",
    "FILTER_NAME" => "arrFilter",
    "FIELD_CODE" => array(
        0 => "NAME",
        1 => "SORT",
        2 => "DETAIL_TEXT",
        3 => "DETAIL_PICTURE",
        4 => "TEG",
    ),
    "PROPERTY_CODE" => array(
        0 => "TEG",
        1 => "",
    ),
    "CHECK_DATES" => "Y",
    "DETAIL_URL" => "",
    "AJAX_MODE" => "N",
    "AJAX_OPTION_JUMP" => "N",
    "AJAX_OPTION_STYLE" => "Y",
    "AJAX_OPTION_HISTORY" => "N",
    "CACHE_TYPE" => "A",
    "CACHE_TIME" => "36000000",
    "CACHE_FILTER" => "N",
    "CACHE_GROUPS" => "N",
    "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" => "",
    "INCLUDE_SUBSECTIONS" => "Y",
    "PAGER_TEMPLATE" => "my_pag",
    "DISPLAY_TOP_PAGER" => "N",
    "DISPLAY_BOTTOM_PAGER" => "Y",
    "PAGER_TITLE" => "Новости",
    "PAGER_SHOW_ALWAYS" => "N",
    "PAGER_DESC_NUMBERING" => "N",
    "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
    "PAGER_SHOW_ALL" => "N",
    "AJAX_OPTION_ADDITIONAL" => ""
    ),
    false
);?>
Тогда в результате список статей пустой.
0
3058 / 1457 / 265
Регистрация: 16.03.2008
Сообщений: 6,495
Записей в блоге: 2
07.09.2018, 09:24
У вас поле TEG, как я понимаю, имеет тип "Привязка к элементу инфо блока"?
Тогда этот фильтр ждет ИД элемента, а не преобразованное имя.
Вы же передаете str_replace(' ', '+', $ob['NAME']) т.е. вы сами должны найти этот элемент и передать его ИД в фильтр. При этом нахождение ИД нужного тега не забывайте оснастить кешированием. Либо в вместо str_replace(' ', '+', $ob['NAME']) пишите $ob['ID']
0
11 / 11 / 2
Регистрация: 29.05.2011
Сообщений: 533
07.09.2018, 10:53  [ТС]
Цитата Сообщение от voral Посмотреть сообщение
У вас поле TEG, как я понимаю, имеет тип "Привязка к элементу инфо блока"?
- верно.
Цитата Сообщение от voral Посмотреть сообщение
пишите $ob['ID']
- это то что нужно
Итог:
PHP
1
2
3
4
5
6
7
8
<?        foreach($arResult['PROPERTIES']['TEG']['VALUE'] as $key => $arItem):?>
            <?
            $arFilter = Array("IBLOCK_ID"=>39, "ID"=>$arItem);
            $res = CIBlockElement::GetList(Array(), $arFilter, false, false, array());
            while($ob = $res->Fetch()):?>
                <?echo '<a href="/help/articles/?tags='.$ob['ID'].'">'.$ob['NAME'].'</a>';?>
            <?endwhile;?>
        <?endforeach;?>
Фильтрация происходит voral, спасибо Вам огромное, очень сильно помогли
Осталось вывести наименование тега в заголовок списка статей. Подскажите, пожалуйста, возможно ли передать наименование тега в список новостей?
0
3058 / 1457 / 265
Регистрация: 16.03.2008
Сообщений: 6,495
Записей в блоге: 2
07.09.2018, 10:58
Так получаете его при помощи CIblockElement::GetList по известному ID
0
11 / 11 / 2
Регистрация: 29.05.2011
Сообщений: 533
07.09.2018, 11:09  [ТС]
Цитата Сообщение от voral Посмотреть сообщение
Так получаете его при помощи CIblockElement::GetList по известному ID
- точно
Получается так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (isset($_GET['tags']))
{
    $GLOBALS['arrFilter'] = array("IBLOCK_ID" => 5, "PROPERTY_TEG" => $_GET['tags'], "ACTIVE" => "Y");
    $arSelect = Array("ID", "NAME");
    $arFilter = Array("IBLOCK_ID"=>39, "ACTIVE"=>"Y", "ID"=>$_GET['tags']);
    $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
    while($ob = $res->GetNextElement())
    {
        $arFields = $ob->GetFields();
    }
    ?>
    <h1>Все статьи на тему: <?=$arFields['NAME']?></h1>
    <?
}
voral, а то, что в адресной строке передается ?tags=111712, возможно сделать, чтобы адресная строка выглядела так: /tags/название тега?
0
3058 / 1457 / 265
Регистрация: 16.03.2008
Сообщений: 6,495
Записей в блоге: 2
08.09.2018, 13:45
Можно. Только при помощи CIblockElement::GetList будете по тегу искать его ID и передавать в фильтр
0
11 / 11 / 2
Регистрация: 29.05.2011
Сообщений: 533
10.09.2018, 07:42  [ТС]
Цитата Сообщение от voral Посмотреть сообщение
Только при помощи CIblockElement::GetList будете по тегу искать его ID и передавать в фильтр
- наименование получается вывести в адресной строке, если сделать так:
На детальной странице новости:
PHP
1
2
3
4
5
6
7
8
9
10
11
foreach($arResult['PROPERTIES']['TEG']['VALUE'] as $key => $arItem):?>
            <?
            $arFilter = Array("IBLOCK_ID"=>39, "ID"=>$arItem);
            $res = CIBlockElement::GetList(Array(), $arFilter, false, false, array());
            while($ob = $res->Fetch()):?>
                <!--<div><a style="padding-bottom: 50px;" href=""><?/*=$ob['NAME']*/?></a></div><br>-->
                <?echo '<a href="/help/articles/?tags='.$ob['NAME'].'">'.$ob['NAME'].'</a>';
                //echo "<pre>" .print_r($ob['NAME'],1)."</pre>";?>
 
            <?endwhile;?>
        <?endforeach;?>
Где подключается bitrix:news.list:
PHP
1
2
3
4
5
6
7
8
9
10
11
if (isset($_GET['tags']))
{
    $arSelect = Array("ID", "NAME");
    $arFilter = Array("IBLOCK_ID"=>39, "ACTIVE"=>"Y", "NAME"=>$_GET['tags']);
    $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
    while($ob = $res->GetNextElement())
    {
        $arFields = $ob->GetFields();
    }
    $GLOBALS['arrFilter'] = array("IBLOCK_ID" => 5, "PROPERTY_TEG" => $arFields['ID']);
}
И фильтрация происходит Но в таком случае адресная строка выглядит "?tags=Тег1"

Но если сделать echo '<a href="/help/articles/?tags/'.$ob['NAME'].'">'.$ob['NAME'].'</a>'; (т.е. вместо "=" сделать "/"), то в $_GET['tags'] передается пустое значение (т.е. так "[tags/обучение] => "), следовательно, фильтрация не происходит.
А если сделать <?echo '<a href="/help/articles/tags/'.$ob['NAME'].'">'.$ob['NAME'].'</a>'; (убрать "?") - то при переходе "Данная страница не существует"...
0
3058 / 1457 / 265
Регистрация: 16.03.2008
Сообщений: 6,495
Записей в блоге: 2
10.09.2018, 09:02
Естественно. С знаком "?" вы работаете с параметрами URL, через слэшы это уже URL. И вам его надо "разбирать".
Как я понимаю вы используете комплексный компонент bitrix:news. В его параметрах есть SEF_URL_TEMPLATES вам необходимо добавить туда свой ключ. Примерно должно стать так (скорректируйте если я не угадал, на всякий случай привожу два параметра ответсвенных за разбор адреса)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$APPLICATION->IncludeComponent(
    "bitrix:news",
    "your_template",
    Array(
//....
        "SEF_FOLDER" => "/articles/", 
        "SEF_URL_TEMPLATES" => array(
            'tags' => 'tags/#TAG#/',
            "news" => "",
            "section" => "",
            "detail" => "#ELEMENT_CODE#/",
            "rss" => "rss/",
            "rss_section" => "#SECTION_CODE#/rss/",
        )
//....
    ),
    false
);
Обратите внимание на tags. Это ваш новый ключ. Назвать его можете сами, главное правило, чтоб в шаблоне компонента был файл с таким именем.

Далее идете в шаблон компонента bitrix:news. Копируете файл news.php (вы ведь в нем создавали фильтр)в файл tags.php (Имя должно соответствовать ключу). В нем в переменной $arResult['VARIABLES']['TAG'] (TAG - это из того же параметра модуля соответсвует #TAG# - можете так же заменить слово на другое, главное что оно должно быть изменено и там и там) будет лежать ваш тег.

ТОлько учтите что если у вас тег попадет в кириллице или с недопустимыми (для URL) символами типа пробела. То тег будет "преобразован" и его надо будет сконвертировать обратно в "нормальный" текст.

Вообще, на мой взгляд, лучше оперировать не NAME, а CODE. И писать туда без пробелов латиницей. Поисковики вполне сейчас понимают и перевод и транслит в УРЛ.
0
11 / 11 / 2
Регистрация: 29.05.2011
Сообщений: 533
10.09.2018, 10:52  [ТС]
Цитата Сообщение от voral Посмотреть сообщение
Как я понимаю вы используете комплексный компонент bitrix:news
- где список статей используется bitrix:news.list с шаблоном news. В детальной новости bitrix:news.detail с шаблоном news.
Цитата Сообщение от voral Посмотреть сообщение
Далее идете в шаблон компонента bitrix:news. Копируете файл news.php (вы ведь в нем создавали фильтр)
- в bitrix:news.list нет файла news.php. А сам фильтр находится в index.php где подключается bitrix:news.list
Цитата Сообщение от voral Посмотреть сообщение
Вообще, на мой взгляд, лучше оперировать не NAME, а CODE
- на данный момент выведен символьный код тега (т.е. адресная строка выглядит так /articles/?tags=obuchenie )
На всякий случай код фильтра и подключение bitrix:news.list в файле index.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
if (isset($_GET['tags']))
{
    $arSelect = Array("ID", "NAME","CODE");
    $arFilter = Array("IBLOCK_ID"=>39, "ACTIVE"=>"Y", "CODE"=>$_GET['tags']);
    $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
    while($ob = $res->GetNextElement())
    {
        $arFields = $ob->GetFields();
    }
    $GLOBALS['arrFilter'] = array("IBLOCK_ID" => 5, "PROPERTY_TEG" => $arFields['ID']);
    ?>
    <h1>Все статьи на тему: <?=$arFields['NAME']?></h1>
    <?
}?>
<?$APPLICATION->IncludeComponent("bitrix:news.list", "news", array(
    "IBLOCK_TYPE" => "articles",
    "IBLOCK_ID" => "5",
    "NEWS_COUNT" => "10",
    "SORT_BY1" => "ACTIVE_FROM",
    "SORT_ORDER1" => "DESC",
    "SORT_BY2" => "SORT",
    "SORT_ORDER2" => "ASC",
    "FILTER_NAME" => "arrFilter",
    "FIELD_CODE" => array(
        0 => "NAME",
        1 => "SORT",
        2 => "DETAIL_TEXT",
        3 => "DETAIL_PICTURE",
        4 => "TEG",
    ),
    "PROPERTY_CODE" => array(
        0 => "TEG",
        1 => "",
    ),
    "CHECK_DATES" => "Y",
    "DETAIL_URL" => "",
    "AJAX_MODE" => "N",
    "AJAX_OPTION_JUMP" => "N",
    "AJAX_OPTION_STYLE" => "Y",
    "AJAX_OPTION_HISTORY" => "N",
    "CACHE_TYPE" => "A",
    "CACHE_TIME" => "36000000",
    "CACHE_FILTER" => "N",
    "CACHE_GROUPS" => "N",
    "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" => "",
    "INCLUDE_SUBSECTIONS" => "Y",
    "PAGER_TEMPLATE" => "my_pag",
    "DISPLAY_TOP_PAGER" => "N",
    "DISPLAY_BOTTOM_PAGER" => "Y",
    "PAGER_TITLE" => "Новости",
    "PAGER_SHOW_ALWAYS" => "N",
    "PAGER_DESC_NUMBERING" => "N",
    "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
    "PAGER_SHOW_ALL" => "N",
    "AJAX_OPTION_ADDITIONAL" => ""
    ),
    false
);?>
0
3058 / 1457 / 265
Регистрация: 16.03.2008
Сообщений: 6,495
Записей в блоге: 2
10.09.2018, 18:40
Лучший ответ Сообщение было отмечено _marisha как решение

Решение

Значит вам надо в index.php разобрать URL. Точнее создать правило в urlrewrite.php. Чтобы адреса /articles/tags/asdjkhk/ отправлялисься на файл /articles/index.php. Там же можно настроить преобразование URL в параметры
1
11 / 11 / 2
Регистрация: 29.05.2011
Сообщений: 533
11.09.2018, 12:10  [ТС]
voral, верно ли Вас понимаю?
Например:
1) после поиска по тегу адресная строка выглядит так: /articles/tags/tag1 (на данном этапе страница пока не найдена)
2) в urlrewrite.php создать правило:
PHP
1
2
3
4
5
6
 array(
        "CONDITION" => "#^/articles/tags/#",
        "RULE" => "",
        "ID" => "bitrix:news.list",
        "PATH" => "/articles/index.php",
    ),
Цитата Сообщение от voral Посмотреть сообщение
Там же можно настроить преобразование URL в параметры
- имеете ввиду на странице articles/index.php?
0
3058 / 1457 / 265
Регистрация: 16.03.2008
Сообщений: 6,495
Записей в блоге: 2
11.09.2018, 12:16
Есть дока про Правила обработки адресов
т.е. можно так
PHP
1
2
3
4
5
6
array(
        "CONDITION" => "#^/articles/tags/([^/]+)/#",
        "RULE" => "code=$1",
        "ID" => "bitrix:news.list",
        "PATH" => "/articles/index.php",
    ),
Тогда найдете код тега в $_REQUEST.

Но можно и как вы, тогда работать с $APPLICATION->GetCurDir(); (правда точно не помню, могу ошибиться - надо попробовать)
0
11 / 11 / 2
Регистрация: 29.05.2011
Сообщений: 533
11.09.2018, 12:57  [ТС]
Делаю так в news.detail
PHP
1
<?echo '<div><a href="/help/articles/tags/'.$ob['CODE'].'/'.'">'.$ob['NAME'].'</a></div><br>';
В итоге после перехода по тегу адресная строка выглядит так: site.ru/help/articles/tags/tag1/
В urlrewrite.php создано правило:
PHP
1
2
3
4
5
6
array(
        "CONDITION" => "#^/help/articles/tags/#",
        "RULE" => "",
        "ID" => "bitrix:news.list",
        "PATH" => "/help/articles/index.php",
    ),
После перехода по тегу отображаются все статьи.
Далее в /help/articles/index.php получаю текущий адрес страницы
PHP
1
$page = $APPLICATION->GetCurPage();
. Разбиваю по знаку "/" $arPage = explode("/", $page);
В итоге получаю:
PHP
1
2
3
4
5
6
7
8
9
Array
(
    [0] => 
    [1] => help
    [2] => articles
    [3] => tags
    [4] => tag1
    [5] => 
)
voral, осталось сообразить каким образом взять предпоследний элемент

Добавлено через 9 минут
Цитата Сообщение от _marisha Посмотреть сообщение
осталось сообразить каким образом взять предпоследний элемент
- есть вариант удалить последний элемент
PHP
1
$arPageNew = array_pop($arPage);
Тогда результат $arPage выглядит так:
PHP
1
2
3
4
5
6
7
8
Array
(
    [0] => 
    [1] => help
    [2] => articles
    [3] => tags
    [4] => tag1
)
Осталось взять последний элемент массива и с ним оперировать

Добавлено через 10 минут
voral, получилось что-то вроде этого:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$page = $APPLICATION->GetCurPage();
$arPage = explode("/", $page);
$arPageNew = array_pop($arPage);
$EndTag = end($arPage);
if (isset($EndTag))
{
    /**/
    $arSelect = Array("ID", "NAME","CODE");
    $arFilter = Array("IBLOCK_ID"=>39, "ACTIVE"=>"Y", "CODE"=>$EndTag);
    $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
    while($ob = $res->GetNextElement())
    {
        $arFields = $ob->GetFields();
    }
    /**/
    $GLOBALS['arrFilter'] = array("IBLOCK_ID" => 5, "PROPERTY_TEG" => $arFields['ID']);
    ?>
    <h1>Все статьи на тему: <?=$arFields['NAME']?></h1>
    <?
}
И вроде как фильтрация происходит
Протестирую ещё конечно в разных вариациях.
voral, спасибо Вам огромное за помощь, доскональное объяснение алгоритма действий, предоставление рабочего кода, а также правило обработки адресов
0
3058 / 1457 / 265
Регистрация: 16.03.2008
Сообщений: 6,495
Записей в блоге: 2
11.09.2018, 13:31
чтобы не "мучаться"с пустыми элементами можно делать так
PHP
1
2
$arPage = explode('/',trim($APPLICATION->GetCurDir(),'/'));
$endTag = end($arPage);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.09.2018, 13:31
Помогаю со студенческими работами здесь

Инфоблок без уровня news.list, а только с news.detail
С пятницей! (Вдруг здесь кто-то есть, в отличие от dev.1c-bitrix.ru :)) Клиент не захотел, чтобы в определенном инфоблоке был какой-то...

Вывод инфоблока bitrix:news
Здравствйте! Подскажите как с помощью компоненты news.list вывести данные 2 и более инфоблоков одновременно?

Убрать время из bitrix:subscribe.news
Есть следующая конструкция вызова: &lt;?$SUBSCRIBE_TEMPLATE_RESULT = $APPLICATION-&gt;IncludeComponent( &quot;bitrix:subscribe.news&quot;, ...

ЧПУ bitrix:news.detail 404 ошибка
Ребят, помогите пожалуйста. Переношу новости с другого сайта, не могу настроить чпу отображения новостей. Показывает код 404 Необходим...

После перехода по ссылке в веб-браузере пишет ошибка скрипта
После перехода по ссылке в веб-браузере пишет ошибка скрипта. Как можно исправить? Помогите пожалуйста.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru