Плагин smfuser

Этот плагин позволяет добавлять ссылки на профили пользователей на форуме с помощью конструкции [[user>username]].

Особенности:

  • Разные иконки для разных полов пользователя.
  • Если пользователь заполнил хоть какую-нибудь информацию в профиле, то при наведении мышки на ссылку на его профиль появится всплывающее окошко. В нём отображается имя пользователя, его аватар, подпись под аватаром и местоположение.
  • При указании несуществующего пользователя его имя будет выведено простым текстом.
  • Можно с помощью конструкции [[user>username|text]] вместо имени пользователя выводить в качестве ссылки произвольный текст.
  • Никакое форматирование внутри конструкции не поддерживается, включая вставку картинок как ссылок на профили пользователей.
  • Плагин содержит helper класс smfuser_main, который может быть использован для получения данных о пользователе и рендеринга ссылки на профиль в любом месте кода DokuWiki (в другом плагине, шаблоне и т.д.). Пример использования см. ниже.

Скачать пока нельзя поскольку идёт активная доработка до нормального состояния.

Дополнительные возможности

Если вы хотите, чтобы везде, где DokuWiki выводит имена пользователей (например, на страницах с историей изменений), вместо них при наличии плагина smfuser отображалась бы ссылка на профиль соответствующего пользователя, то измените файл inc/common.php следующим образом:

Где-то в середине функции editorinfo замените 2 строчки

case 'username':
  return hsc($info['name']);

на следующую конструкцию:

case 'username':
  if(!plugin_isdisabled('smfuser')) {
    $smfuser =& plugin_load('helper', 'smfuser_main');
    return $smfuser->renderProfileLink($smfuser->getUserInfo($info['name']));
  } else {
    return hsc($info['name']);
  }

Кроме того, можно переопределить стандартную функцию tpl_userinfo(), которая используется в шаблонах для вывода информации о текущем пользователе, добавив в неё ссылку на профиль пользователя. Для этого необходимо добавить в используемый вами шаблон функцию следующего содержания:

/*
 * Замена стандартной функции tpl_userinfo() на функцию, показывающую ссылку на профиль пользователя в SMF
*/
function tpl_smfuserinfo() {
  global $lang;
  global $INFO;
 
  if (!plugin_isdisabled('smfuser')) {
    $smfuser =& plugin_load('helper', 'smfuser_main');
    if (isset($_SERVER['REMOTE_USER'])) {
      print $lang['loggedinas'].': '.$smfuser->renderProfileLink($smfuser->getUserInfo($INFO['userinfo']['name']), 'top');
      return true;
    }
  } else {
    return tpl_userinfo();
  }
  return false;
}

После чего заменить в шаблоне вызов tpl_userinfo() вызовом добавленной функции tpl_smfuserinfo().

Альтернативные иконки

От пользователя :

пример иконки male male male

пример иконки female female female

пример иконки unknown unknown unknown

Обсуждение и предложения

Если вам есть что сказать по поводу этого плагина, то вы можете сделать это в соответствующей теме форума или написав его .

Что надо доделать

  • Попытаться сделать так, что когда popup отображается с краю экрана он бы не вылезал за границы. Для этого требуется JS и если кто готов помочь с реализацией - велкам.

Пример использования

Тестирование: просто, вот с текстом, а вот или например и . В целом работает, есть только мелкие недочёты. У , которые вообще ничего не заполнили в профиле, никакого popup не будет. А так даже мелкие нормально отображаются. Стандартные аватары SMF -

Ах да, среди нас таки есть ;-).