Приемы работы с $AUTH_USER_ID и $UserID в NetCat

Пара слов об API CMS NetCat. А конкретно о работе с id-шниками юзеров. Практически все собрано с оффорума. Некоторые вещи могут быть устаревшими.

  1. $AUTH_USER_ID не работает в режиме просмотра (должно по мануалу выдавать id авторизовавшегося юзера а выдает 0). Решение: использовать $PHP_AUTH_USER для работы в обоих режимах.
  2. Как дать пользователю отправить данные в форме один раз? Решение:
    ".opt($check='".listQuery("SELECT User_ID FROM Message68 WHERE User_ID=$AUTH_USER_ID LIMIT 1","\$data[User_ID]")."',"")."
    ".opt_case($check,"форма добавления НЕ показывается","форма показывается")."
  3. Как скрыть разделы для неавторизованных? Решения:
    «.( $AUTH_USER_ID ? s_browse_sub(xxx, yyy) : «„ ).“
    — если выводить 10 разделов с помощью функции s_browse_sub, и среди этих 10 есть разделы, которые надо скрыть, то проверку $AUTH_USER_ID надо прописать в переменных $browse_sub[active] и т.д.
    — Добавить поле, указывающее на то, что раздел скрыт, и проверив с помощью функции opt() значения созданного поля и $AUTH_USER_ID в шаблоне вывода навигации.
    — Настроить доступ к разделу в админке )).

  4. Как запретить показ объвлений (в режиме редактирования), созданные не текущим юзером, а также не показывать ему чужие $f_AdminButtons? Решение: „.( $AUTH_USER_ID && $AUTH_USER_ID == $f_UserID ? $f_AdminButtons : '').“.
  5. Как показать товары только авторизованным пользователям? Решение: „.opt($AUTH_USER_ID>0,“показываем»).»
  6. Как показать только объекты добавленные mtreobv пользователем? Решение: использовать системную настроку компонента — $ingore_user – если 1, игнорирует выборку объектов по текущему пользователю (по умолчанию 1).
  7. Чтобы в админ-режиме показывать «плашку» только для своих объктов, то можно воспользоваться той же конструкцией:
    «.( $AUTH_USER_ID && $AUTH_USER_ID == $f_UserID ? $f_AdminButtons : ««).»

Комментариев: 7

  • 18.01.2012 Femil:

    Спасибо за статью. Полезно.

    Можно вопрос (все равно задам и буду надеяться, что ответите): если использовать

    ".opt($AUTH_USER_ID>0,"показываем")."

    неавторизованный пользователь не увидит того, что приведено ниже? Или следует вставлять код вместо текста «показываем».

    Надеюсь, вас не затруднит привести пример?..

    • 19.01.2012 Кирилл:

      Привет, нагуглился такой пример из шаблона 4.2.Spisok_podpisok.tpl:

      .opt(!$AUTH_USER_ID, "<br><div align=\'left\' style=\'margin:7px 0; font-size:100%; font-weight:bold\'>Ваш e-mail: <br><br><input type=\'text\' value=\'\' name=\'fields[Email]\' /></div>" ).

      Если остались вопросы, то давай разбираться дальше :)

      • 19.01.2012 Femil:

        Спасибо вам огромное! Вы очень-очень помогли.

        Вот только не ясно зачем экранировать кавычки (я по поводу этой конструкции \').

        С одиночными и так все заработало. Кажется =)

        • 19.01.2012 Кирилл:

          Тут такое дело, я давно ничего не делал на неткате, поэтому уже и не помню что там и как с экранированием. А если заработало, то я бы и не стал пока разбираться :)

          Привет Алчевску.

          • 19.01.2012 Femil:

            =)

            А откуда вы знаете, что я из Алчевска?

            Меня выдал IP-адрес или есть какой-то более хитрый способ узнать местоположение комментатора?

            А если заработало, то я бы и не стал пока разбираться :)

            ))) я пока тоже не буду.

          • 20.01.2012 Кирилл:

            Ага, все верно — GeoIP :)

          • 20.01.2012 netcat:

            Одинарные точно можно не экранировать.


Добавление комментария:

 css.php