Дать пользователю возможность быстро отредактировать материал

На одном из разрабатываемых сайтов, пользователи формирую его контент. После регистрации, становится доступен персональный раздел в котором, по мимо стандартной социальной сети, выводятся все материалы пользователя и выведен компонент "Добавление . редактирование элементов инфоблока". Для большего удобства- в конкретном материале нужно было вывести ссылку- отправляющую пользователя прямо на страницу с этим компонентом.

Итак: страница на которой выведен компонент имеет адрес "/personal/dobavlenie-retsepta/", редактирование ранее добавленного элемента "/personal/dobavlenie-retsepta/?edit=Y&CODE=ID-элемента"

Получаем нужные данные через API Битрикс

В каждом элементе мы можем легко получить ID-пользователя который его добавил, ID-текущего пользователя- который смотрит материал, знаем- авторизован ли он и знаем ID-этого элемента

Дело за малым: с помощью API Битрикс нужно выполнить ряд проверок, так что бы только владелец материала (элемента) видел ссылку на редактирование:

<?
$create_user = $arResult["CREATED_BY"];
$GLOBALS['users'] = array("CREATED_BY" => $create_user);
$userid = $create_user;
$rsUser = CUser::GetByID($userid);
$arUser = $rsUser->Fetch();     
?>

<?if(CUser::IsAuthorized()):?>
  <?
      $hoster = $arUser["LOGIN"];
      global $USER;
      $nowUser = $USER->GetLogin();
      if($nowUser===$hoster):
  ?>
      <a class="redaktor" href="/personal/dobavlenie-retsepta/?edit=Y&CODE=<?=$arResult['ID']?>">
               Изменить рецепт
       </a>
   <?endif;?>
<?endif;?>

Пояснения

  • CUser::GetByID - получаем все данные пользователя добавившего элемент, это мне нужно было для других задач (вывести имя автора статьи, получить ссылку на его профиль в социальной сети и.т.д.)
  • if(CUser::IsAuthorized()): - проверяем авторизован ли пользователь. Не важно владелец материала или нет- просто текущий пользователь читающий материал.
  • $hoster = $arUser["LOGIN"]; - переменной $hoster назначаем логин пользователя-владельца материала.
  • $nowUser = $USER->GetLogin(); - переменной $nowUser назначам логин текущего авторизованного пользователя.
  • if($nowUser===$hoster) - проверяем: тождественен ли (совпадает ли) логин владельца и текущего "читателя".
  • /personal/dobavlenie-retsepta/?edit=Y&CODE=<?=$arResult['ID']?> - если все совпало- то выводим ссылку на редактирование- как есть но в конце подставляем ID текущей статьи

Вот и все, теперь пользователю-автору статьи не нужно идти в кабинет, в список всех своих статей. Теперь можно отредактировать материал прямо с его страницы

Просмотров: 3393 | Комментариев: 3
Внимание! все сообщения проходят премодерацию. Ваше сообщение появится после проверки
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Защита от автоматических сообщений
Загрузить файл
Нажимая кнопку "Отправить", Вы принимаете условия
Политики конфиденциальности и обработки персональных данных
Roman Drozdov
Михаил, здравствуйте. Спасибо за урок.

Столкнулся с проблемой "Наоборот". Вывожу список статей добавленных пользователем через компонент element.add.list, оттуда как раз мы можем отредактировать или удалять элементы.

Но вот получить ссылку на элемент у меня не получается. Вернее даже её часть, а именно секцию, где находится этот элемент.

Код
 <a href="/projects/[Как получить вот этот путь?]/<?=$arElement["ID"]?>"><?echo $arElement["NAME"]?></a>


Подскажите пожалуйста :)
Имя Цитировать
Михаил Базаров
Код
$ElementId = $arElement["ID"];
    $db_groups = CIBlockElement::GetElementGroups($ElementId, true);
    while($ar_group = $db_groups->Fetch()) {
       $section = $ar_group["CODE"]; //или ['ID'] смотря как ЧПУ используете
}

<a href="/projects/<?=$section?>/<?=$arElement["ID"]?>"><?echo $arElement["NAME"]?></a> 
Попробуйте так, делал на глаз) Может закрались опечатки
Имя Цитировать
Roman Drozdov
Спасибо большое, заработало!  :)
Имя Цитировать

Цены на разработку сайта или приложения

Что бы узнать точные стоимость и срок разработки:
достаточно, как можно подробнее, заполнить опросник и выслать на электронную почту info@bazarow.ru.
После ознакомления, смогу задать уточняющие вопросы и оценить.

В стоимость разработки уже включены и не требуют доплат:
  • Лицензия на необходимую редакцию 1С-Битрикс: Управление сайтом и лицензии на дополнительные модули, если требуются для конкретного проекта.
  • Применение технологии композитный сайт: Оптимизация скорости работы проекта под нагрузками.
  • Один год, бесплатной, технической поддержки от 1С-Битрикс
Интернет-магазин от 250 000 рублей
Полно-комплексная разработка интернет-магазина любой сложности. Интеграция с 1С, службами доставки и оплаты. Внутренняя СЕО оптимизация перед запуском.
Сайт компании от 200 000 рублей
Сайт с каталогом товаров или услуг, без функционала магазина. Включает формы обратной связи внутри карточек каталога. Любое количество статичных и динамичных разделов.
Инфоресурс от 200 000 рублей
Портал или доска объявлений с большим количеством разделов. Возможность включения форумов, блогов, регистрации пользователей, внутри сайтовая социальная сеть.
Сайт на готовом решении от 40 000 рублей
Подбор решения из более 200-от готовых сайтов, в соответствии с тематикой бизнеса. Запуск сайта на сервере или хостинге, со всеми настройками. Не большие доработки под задачу.
Мобильное приложение от 200 000 рублей

Кроме сайтов, занимаюсь разработкой мобильных приложений на технологии Apache Cordova. Это полноценные приложения, которые публикуются и распостранияются через официальные магазины GooglePlay и AppStore

  • Полная интеграция с базой данных, основного сайта.
  • Вывод каталогов продукции и услуг, прямо в приложении.
  • Персональные разделы пользователей с историей заказов.
  • Прямой доступ к устройству: GPS, камера, звонки и медиабиблиотека

attention