Я ищу решение, чтобы показать URL с именем пользователя. Я использую стабильную версию Joomla 3.3.0.
Ex. site_url / userp-имя пользователя
Я попытался решить эту проблему, используя .htaccess, следуя правилам, которые я использовал для своих основных сайтов PHP.
RewriteRule ^userp-([a-zA-Z0-9-_]+)/?$ site_url/index.php?option ... er_name=$1 [R=301,L]
Например, когда я нажал на ссылку http://sitename.com/userp-vishal07 он выполняет код, который я хочу вызвать для этого URL, и он показывает результаты правильно. Но URL не остается таким, как есть, и превращается в http://vicciivital.com/index.php/en/component/users/profile?layout=view_profile&user_name = vishal07
Я не могу понять, как работает перенаправление Joomla. Пожалуйста, поправьте меня, если я делаю какие-либо ошибки здесь.
По причинам, которые я никогда не понимал, маршрутизатор com_users не маршрутизирует никакие профили, кроме собственного профиля пользователя.
/**
* Method to get a route configuration for the profile view.
*
* @return mixed Integer menu id on success, null on failure.
* @since 1.6
*/
public static function getProfileRoute()
{
// Get the items.
$items = self::getItems();
$itemid = null;
// Search for a suitable menu id.
//Menu link can only go to users own profile.
foreach ($items as $item)
{
if (isset($item->query['view']) && $item->query['view'] === 'profile')
{
$itemid = $item->id;
break;
}
}
return $itemid;
}
Что вам нужно сделать, это расширить этот метод для обработки всех профилей. Просто убедитесь, что вы столкнулись с ситуацией, когда существует элемент контента или тег с тем же псевдонимом, что и для пользователя.
В общем, самый простой обходной путь — использовать com_contact в качестве профиля. Включение плагина создателя контактов автоматически создаст контакты для ваших новых пользователей, и контакт может отобразить что-либо из плагина профиля. Также он может отображать статьи пользователя, а затем вы также можете добавить плагины для других вещей, если хотите. Для меня это всегда работает намного лучше, чем возиться с профилем com_users.
Других решений пока нет …