Форум программистов, компьютерный форум, киберфорум
1С Битрикс
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
1 / 1 / 1
Регистрация: 17.08.2013
Сообщений: 33
1

Изменить ссылку

19.02.2014, 19:41. Показов 2892. Ответов 15
Метки нет (Все метки)

Здравствуйте, у меня возникла проблема при генерации ссылки для детального просмотра страницы, #SITE_DIR#/dynamic/#SECTION_CODE#/#ELEMENT_CODE#/ вот так выглядит моя ссылка на данный момент, ну а мне нужно вместо #SECTION_CODE#/#ELEMENT_CODE#/ подставлять значение из свойства "Дата фотоотчета", ну и что бы перед тем как вывести значение из свойства "Дата фотоотчета" его можно было привести к нужному мне виду, смотрел в документации, не чего связанного с этим найти не смог
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2014, 19:41
Ответы с готовыми решениями:

Как изменить ссылку
?action=viewArticle&articleId111111 имеется ссылка вот такого вида как мне привести ее к виду...

Как изменить ссылку
Подскажите, как изменить вид ссылки. Например, на сайте _http://www.winblog.ru, на странице...

Изменить ссылку в шаблоне
Здравствуйте, подскажите пожалуйста, в файле index.php шаблона "it_healthcare2" платформы Joomla,...

Изменить значение по нажатию на ссылку
Есть тема, таблица themes поле status равно открыта. Есть ссылка, по нажатию на которую, нужно...

__________________

Записывайтесь на профессиональные курсы 1C-разработчиков
15
30 / 30 / 8
Регистрация: 15.04.2013
Сообщений: 244
20.02.2014, 10:22 2
Копируете шаблон к себе, и меняете в нем формат ссылок, потом в urlrewrite.php создаете правило чтобы на странице детального просмотра отображалась детальная информация. Так же на детальной странице в параметрах компонента ELEMEN_ID указываете дату, которую передаете через параметры. В общем как-то так.
Не уверен что это самое оптимальное решение, но работать будет точно.

Добавлено через 51 секунду
Дату ищите в arResult, и уже средствами php приводите ее к нужному виду.
0
1 / 1 / 1
Регистрация: 17.08.2013
Сообщений: 33
20.02.2014, 11:20  [ТС] 3
ну совсем понял, как сделать что бы на странице детального просмотра отображалась детальная информация Можно по подробнее объяснить.
0
30 / 30 / 8
Регистрация: 15.04.2013
Сообщений: 244
20.02.2014, 11:40 4
В общем выше написал ерунду немного, не проснулся еще=)
Вы получается формируете ЧПУ через дату добавления новости. Чтобы компонент news.detail отобразил новость детально ему на вход надо дать либо код элемента, либо ид. У Вас же передается дата, поэтому перед вызовом компонента Вам необходимо найти этот элемент по дате, извлечь из него ид или код, и передать на вход news.detail. Это будет работать только в случае если дата уникальна для каждого элемента. Если не подходит, то тут уже надо выдумывать костыли всякие.
1
1 / 1 / 1
Регистрация: 17.08.2013
Сообщений: 33
20.02.2014, 13:05  [ТС] 5
Я решил проблему проще, не знаю правильнее это или нет но вот как я справился со своей проблемой, в компоненте bitrix:news я в чпу полностью стер ссылку детального просмотра ну и в шаблоне news.list я просто добавил в конец ссылки значения свойства "Дата фотоотчета". и получается вот как сейчас строится ссылка, имя сайта/dynamic/дата фотоотчета. Ну вроде бы все работает. dynamic это каталог ЧПУ.

Добавлено через 1 минуту
Но все равно спасибо, это вы меня навели на ту мысль что можно изменить вывод ссылки в шаблоне

Добавлено через 26 минут
не, там то я дату изменил, а ссылка то не так должна выглядеть)) Что то я намудрил, все таки сейчас буду пробовать по вашему методу
0
30 / 30 / 8
Регистрация: 15.04.2013
Сообщений: 244
20.02.2014, 13:06 6
как ссылка должна выглядеть?
0
1 / 1 / 1
Регистрация: 17.08.2013
Сообщений: 33
20.02.2014, 13:08  [ТС] 7
имя сайта/dynamic/дата фотоотчета
0
30 / 30 / 8
Регистрация: 15.04.2013
Сообщений: 244
20.02.2014, 13:08 8
По моему "методу" комплексный компонент использовать не надо, есть только 2 страницы, 1 с news.list, другая с news.detail, я недавно делал что-то похожее, только вместо даты подставлял код элемента, если интересует, то могу скинуть код.
0
1 / 1 / 1
Регистрация: 17.08.2013
Сообщений: 33
20.02.2014, 13:14  [ТС] 9
ну если не сложно, то можете скинуть)

Добавлено через 1 минуту
меня сейчас все интересует, если не в этот раз так в другой обязательно понадобится)
0
30 / 30 / 8
Регистрация: 15.04.2013
Сообщений: 244
20.02.2014, 13:17 10
Файл about/news/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
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");?>
    <?$APPLICATION->IncludeComponent("bitrix:news.list","",Array(
        "DISPLAY_DATE" => "Y",
        "DISPLAY_NAME" => "Y",
        "DISPLAY_PICTURE" => "Y",
        "DISPLAY_PREVIEW_TEXT" => "Y",
        "AJAX_MODE" => "Y",
        "IBLOCK_TYPE" => "news_and_events",
        "IBLOCK_ID" => "8",
        "NEWS_COUNT" => "20",       
        "SORT_BY1" => "ACTIVE_FROM",
        "SORT_ORDER1" => "DESC",
        "SORT_BY2" => "SORT",
        "SORT_ORDER2" => "ASC",
        "FILTER_NAME" => "",
        "FIELD_CODE" => Array("ID"),
        "PROPERTY_CODE" => Array("DESCRIPTION"),
        "CHECK_DATES" => "Y",
        "DETAIL_URL" => "/about/news/detail/#ELEMENT_CODE#/",
        "PREVIEW_TRUNCATE_LEN" => "",
        "ACTIVE_DATE_FORMAT" => "d.m.Y",
        "SET_TITLE" => "Y",
        "SET_STATUS_404" => "Y",
        "INCLUDE_IBLOCK_INTO_CHAIN" => "N",
        "ADD_SECTIONS_CHAIN" => "N",
        "HIDE_LINK_WHEN_NO_DETAIL" => "Y",
        "PARENT_SECTION" => "",
        "PARENT_SECTION_CODE" => "news_about_company",
        "INCLUDE_SUBSECTIONS" => "Y",
        "CACHE_TYPE" => "A",
        "CACHE_TIME" => "3600",
        "CACHE_FILTER" => "Y",
        "CACHE_GROUPS" => "Y",
        "DISPLAY_TOP_PAGER" => "Y",
        "DISPLAY_BOTTOM_PAGER" => "Y",
        "PAGER_TITLE" => "Новости",
        "PAGER_SHOW_ALWAYS" => "Y",
        "PAGER_TEMPLATE" => "",
        "PAGER_DESC_NUMBERING" => "Y",
        "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
        "PAGER_SHOW_ALL" => "Y",
        "AJAX_OPTION_JUMP" => "N",
        "AJAX_OPTION_STYLE" => "Y",
        "AJAX_OPTION_HISTORY" => "N",
        "AJAX_OPTION_ADDITIONAL" => ""
    )
);?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php")?>
Файл about/news/detail/detail.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
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");?>
    <?$APPLICATION->IncludeComponent("bitrix:news.detail","",Array(
        "DISPLAY_DATE" => "Y",
        "DISPLAY_NAME" => "Y",
        "DISPLAY_PICTURE" => "Y",
        "DISPLAY_PREVIEW_TEXT" => "Y",
        "AJAX_MODE" => "Y",
        "IBLOCK_TYPE" => "news_and_events",
        "IBLOCK_ID" => "8",
        "ELEMENT_ID" => "",
        "ELEMENT_CODE" => $_GET["CODE"],
        "CHECK_DATES" => "Y",
        "FIELD_CODE" => Array("ID"),
        "PROPERTY_CODE" => Array("DESCRIPTION"),
        "IBLOCK_URL" => "news.php?ID=#IBLOCK_ID#\"",
        "META_KEYWORDS" => "KEYWORDS",
        "META_DESCRIPTION" => "DESCRIPTION",
        "BROWSER_TITLE" => "BROWSER_TITLE",
        "DISPLAY_PANEL" => "Y",
        "SET_TITLE" => "Y",
        "SET_STATUS_404" => "Y",
        "INCLUDE_IBLOCK_INTO_CHAIN" => "N",
        "ADD_SECTIONS_CHAIN" => "N",
        "ACTIVE_DATE_FORMAT" => "d.m.Y",
        "USE_PERMISSIONS" => "Y",
        "GROUP_PERMISSIONS" => Array("2"),
        "CACHE_TYPE" => "A",
        "CACHE_TIME" => "3600",
        "CACHE_GROUPS" => "Y",
        "DISPLAY_TOP_PAGER" => "Y",
        "DISPLAY_BOTTOM_PAGER" => "Y",
        "PAGER_TITLE" => "Страница",
        "PAGER_TEMPLATE" => "",
        "PAGER_SHOW_ALL" => "Y",
        "AJAX_OPTION_JUMP" => "N",
        "AJAX_OPTION_STYLE" => "Y",
        "AJAX_OPTION_HISTORY" => "N"
    )
);?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php")?>
Настройка ЧПУ в файле urlrewrite:
PHP
1
2
3
4
5
6
array(
        "CONDITION" => "#^/about/news/detail/([a-z0-9A-Z_-]*)/.*#",
        "PATH" => "/about/news/detail/detail.php",
        "RULE" => "CODE=$1",
        "ID" => "bitrix:news.detail"
    ),
В вызове компонентов кучу параметров можно порезать, просто это был копипаст с документации=)
0
1 / 1 / 1
Регистрация: 17.08.2013
Сообщений: 33
20.02.2014, 13:37  [ТС] 11
то что CODE=$1 это получается и есть ваш код элемента, да?
0
30 / 30 / 8
Регистрация: 15.04.2013
Сообщений: 244
20.02.2014, 14:15 12
Код передается через GET параметр, а это правило.
Ссылка на детальную новость выглядит так: /about/news/detail/news_code/

Добавлено через 11 минут
Решил свою проблему благодаря Вам=))
0
1 / 1 / 1
Регистрация: 17.08.2013
Сообщений: 33
20.02.2014, 15:17  [ТС] 13
а я так и не смог решить свою проблему(((
0
30 / 30 / 8
Регистрация: 15.04.2013
Сообщений: 244
20.02.2014, 16:20 14
в чем трудности возникли?
0
1 / 1 / 1
Регистрация: 17.08.2013
Сообщений: 33
20.02.2014, 16:35  [ТС] 15
Вы получается формируете ЧПУ через дату добавления новости. Чтобы компонент news.detail отобразил новость детально ему на вход надо дать либо код элемента, либо ид. У Вас же передается дата, поэтому перед вызовом компонента Вам необходимо найти этот элемент по дате, извлечь из него ид или код, и передать на вход news.detail. Это будет работать только в случае если дата уникальна для каждого элемента. Если не подходит, то тут уже надо выдумывать костыли всякие.

ну собственно вот это и непонятно))

Добавлено через 2 минуты
получается мне вместо id и code элемента нужно вставить то значение которое записывают в свойство инфоблока "Дата фотоотчета", получается мне нужно как то находить мои новости по дате что ли??? Ну вообщем я не понял, если можно по подробнее объясните.
0
30 / 30 / 8
Регистрация: 15.04.2013
Сообщений: 244
20.02.2014, 17:19 16
Если дата фотоотчета это пользовательское свойство и для каждого элемента инфоблока она будет уникальна, то Вам в шаблоне компонента надо формировать ссылку вида dynamic/<?echo arResult["DATE"]?>/.
В файле urlrewrate.php добавляете массив следующего вида:
PHP
1
2
3
4
5
6
array(
        "CONDITION" => "#^/dynamic/([a-z0-9A-Z_-]*)/.*#",
        "PATH" => "/dynamic/detail.php",
        "RULE" => "DATE=$1",
        "ID" => "bitrix:news.detail"
    ),
Подразумевается что в папке dynamic у Вас есть 2 файла index.php (в нем лежит news.list) и detail.php (в нем лежит news.detail).
В файле detail.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
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");?>
//создаем переменную idElement и пишем в нее id элемента который надо отобразить
//тут должен быть код по поиску id элемента по дате, которая хранится будет в $_GET["DATE"]
    <?$APPLICATION->IncludeComponent("bitrix:news.detail","",Array(
        "DISPLAY_DATE" => "Y",
        "DISPLAY_NAME" => "Y",
        "DISPLAY_PICTURE" => "Y",
        "DISPLAY_PREVIEW_TEXT" => "Y",
        "AJAX_MODE" => "Y",
        "IBLOCK_TYPE" => "news_and_events", //тут прописывается тип инфоблока
        "IBLOCK_ID" => "8", //тут ID инфоблока
        "ELEMENT_ID" => $idElement, //id элемента, найденного ранее
        "ELEMENT_CODE" => "",
        "CHECK_DATES" => "Y",
        "FIELD_CODE" => Array("ID"),
        "PROPERTY_CODE" => Array("DESCRIPTION"),
        "IBLOCK_URL" => "news.php?ID=#IBLOCK_ID#\"",
        "META_KEYWORDS" => "KEYWORDS",
        "META_DESCRIPTION" => "DESCRIPTION",
        "BROWSER_TITLE" => "BROWSER_TITLE",
        "DISPLAY_PANEL" => "Y",
        "SET_TITLE" => "Y",
        "SET_STATUS_404" => "Y",
        "INCLUDE_IBLOCK_INTO_CHAIN" => "N",
        "ADD_SECTIONS_CHAIN" => "N",
        "ACTIVE_DATE_FORMAT" => "d.m.Y",
        "USE_PERMISSIONS" => "Y",
        "GROUP_PERMISSIONS" => Array("2"),
        "CACHE_TYPE" => "A",
        "CACHE_TIME" => "3600",
        "CACHE_GROUPS" => "Y",
        "DISPLAY_TOP_PAGER" => "Y",
        "DISPLAY_BOTTOM_PAGER" => "Y",
        "PAGER_TITLE" => "Страница",
        "PAGER_TEMPLATE" => "",
        "PAGER_SHOW_ALL" => "Y",
        "AJAX_OPTION_JUMP" => "N",
        "AJAX_OPTION_STYLE" => "Y",
        "AJAX_OPTION_HISTORY" => "N"
    )
);?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php")?>
Теперь Ваша задача стоит чтобы найти ID элемента по пользовательскому полю. Гулите, смотрите документацию, тут я не подскажу к сожалению.

Добавлено через 9 минут
Вот тут есть пару мыслей ничего.

Добавлено через 7 минут
Попробуйте поискать на ихнем форуме, скорее всего что нибудь будет, и не такое "кастыльное" как я предлагаю=)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2014, 17:19

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Изменить ссылку htaccess rewrite
Как преобразовать ссылку...

[.htaccess] Как изменить ссылку?
Как при помощи волшебного .htaccess из ссылки такого формата: домен.ru/pages?id=3 отобразить:...

Как изменить ссылку главной странице
Вот фото: http://i.**********/vCTM0lu.png Хочу изменить vk.cmsmaks.ru на...

Как изменить ссылку на phpmyadmin в nginx?
Здравствуйте, с nginx работаю впервые. всего лишь несколько дней, доки почитал, но тем не менее не...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.