Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!
Точно такая же проблема получается при вызове функции $APPLICATION->GetCurPageParam(), запоминает параметры от "чужого" пользователя, которые мешаются.
Самый простой способ в component_epilog.php проверять равенство ид создателя новости и текущего пользователя и в случае совпадения выводить кнопку редактирования.
Не та component_epilog.php это продолжение component.php там ты можешь модифицировать $arResult не кастомизируя компонент.
А template.php - это обязательный файл.
Я так понимаю в компонент допустим есть.
В нём пишет допустим
if(тут кеш)
{
1. бизнесс-ллогика
2. Вывод шаблона
}
а когда ты использовать файл component_epilog.php , то он как бы не подпадает под вот это кеширование в компоненте?
или как? я теоретически не проверяю. Пытаюсь понять как это работает.
Cool-Di пишет:
то есть использовать component_epilog.php полностью вместо template.php ? До этого я не додумался что-то...
Зачем полностью, в вашем случае будет достаточно в component_epilog.php дописать вывод кнопок редактирования. Или через js активировать их в списке выше, который сформирован в шаблоне.
component_epilog.php выполняется после отработки компонента. Он не кэшируется, поэтому его удобно использовать для вызова отложенных функций, которые несовместимы с кэшированием, например, чтобы задать какой-то свой заголовок страницы или чтобы подключить javascript-библиотечку, используемую в шаблоне.
Что касается основного вопроса, то я делаю так:
Вывожу список без кнопок, один для всех пользователей. Где-то в атрибутах тегов прописываю id каждой новости.
AJAX'ом делаю запрос на сервер, который проверяет по id, если ли среди новостей те, которые может редактировать текущий пользователь.
Если такие новости есть, то javascript'ом выводим рядом с ними ссылку на редактирование.
И не забываем на странице редактирования снова проверить права пользователя.
Метод прекрасно работает, особенно мне нравится его использовать с кнопками голосований и добавления в избранное. Однако требует обязательно включённого javascript'а.
Большое спасибо за помощь. На самом деле подобная проблема встречалась часто, раньше просто резал юзабилити, думал, что способ с яваскриптом будет "кривым", но раз другие программисты им пользуются, то я спокоен.