I use a plugin called memberinfo on the index of the member template group. EG:
/members/username
If /username is not a valid user, then a list of members is returned. Might be handy for you:
<?php
$plugin_info = array(
'pi_name' => 'Member info',
'pi_version' => '1.0',
'pi_author' => 'Tom Kiss',
'pi_author_url' => 'http://www.tomkiss.net',
'pi_description' => 'Get member information.',
'pi_usage' => memberinfo::usage()
);
class memberinfo {
var $return_data;
// isMember function - returns true/false from username parameter
function exists() {
global $TMPL, $FNS, $DB, $SESS, $PREFS, $LOC;
// Parameters
$username = (!$TMPL->fetch_param('username')) ? '' : $TMPL->fetch_param('username');
// DB Query
$query = $DB->query("SELECT screen_name FROM exp_members WHERE username = '".$username."'");
// Return data
if ($query->num_rows == 1) {
return true;
} else {
return false;
}
}
// Member URL
function getMemberURL() {
if (func_num_args() > 0) {
$username = func_get_args();
$username = $username[0];
}
global $TMPL, $DB;
// Return data
if (empty($username)) {
$id = (!$TMPL->fetch_param('id')) ? '0' : $TMPL->fetch_param('id');
$screen_name = (!$TMPL->fetch_param('screen_name')) ? '' : $TMPL->fetch_param('screen_name');
$query = $DB->query("SELECT username FROM exp_members WHERE member_id = '".$id."' OR screen_name = '".$screen_name."'");
if ($query->num_rows == 1) {
$username = $query->row["username"];
}
}
if (!empty($username)) {
return '/members/'.rawurlencode($username);
} else {
return "";
}
}
function usage() {
ob_start();
?>
<?php
$buffer = ob_get_contents();
ob_end_clean();
return $buffer;
}
}
?>
Then in my template I can just have:
{if "{exp:memberinfo:exists username="{segment_2}"}"}
{embed=/member-profile-code}
{if:else}
List members
{/if}