[buddypress-dev] Better way of doing this?
Andy Peatling
andypeatling at automattic.com
Mon Jun 23 17:20:40 GMT 2008
On 19-Jun-08, at 9:30 AM, Martin wrote:
> Motivated by seeing Andy’s screen shots of the new theme he is
> working on I have started work on my own BuddyPress compatible
> theme, but I have hit a problem that I have managed to solve but it
> required a change in the core Wordpress MU code, which I was trying
> to avoid if at all possible.
>
> First some background, I am working on a website that is running
> Wordpress MU in non virtual host mode, so the blogs are www.domainname.com/blogname
> , and want to allow for a user being an administrator on multiple
> blogs, and a blog to have multiple authors. I decided that I wanted www.domainname.com/members/username
> to show a user profile and list their blogs and www.domainname.com/profile
> to show the current user. First problem is that because I am not
> configured as a virtual host Wordpress MU tries to create a blog
> called members or profile, I have managed to solve this by changing
> a line in wpmu-settings.php from
> $blognames = array( 'page', 'comments', 'blog', 'wp-admin', 'wp-
> includes', 'wp-content', 'files', 'feed' );
> To
> $blognames = array( 'page', 'comments', 'blog', 'wp-admin', 'wp-
> includes', 'wp-content', 'files', 'feed', 'members', 'profile' );
>
> Is there a better way of getting Wordpress MU to allow this to go
> through?
I've implemented some catch URI code based on Chris Taylor's work in
the latest version in trunk. Basically, it works like this:
http://mydomain.com/username/[component_name]/[action_name]/
[action_vars]
So: http://buddypress.local/apeatling/profile/edit/group/1
The following globals will be set:
$current_component = 'profile'
$current_action = 'edit'
$action_variables = array ( 'group', 1 )
You can access these variables wherever you like and use them within
your own custom template functions.
I'm using them to direct to custom templates using the new 'bp_uri()'
function:
if ( $current_action == 'change-avatar' && $loggedin_userid ==
$current_userid )
bp_catch_uri( 'profile/change-avatar' );
Where 'profile/change-avatar' represents a folder and filename within
the template directory.
This hopefully will allow BuddyPress to use a whole range of custom
URL's whilst still using the default .htaccess file for an MU install.
>
> For those of you that may want to do the same thing I then modified
> my .htaccess and added the following lines to it:
> RewriteRule ^.*/?members/(.*)/ /index.php?sn_action=member&sn_member=
> $1 [L]
> RewriteRule ^.*/?profile/$ /index.php?sn_action=profile [L]
>
> I’m far from being a mod rewrite expert, so someone may be able to
> suggest a better way of doing this?
>
> I then wrote a plug-in that looks for sn_action and includes a page
> from the current template to display the information e.g.
> function member_redirect() {
> if (isset($_GET['sn_action'])) {
> $action = $_GET['sn_action'];
> switch($action) {
> case 'member':
> if (isset($_GET['sn_member'])) {
> $sn_member = $_GET['sn_member'];
> if($template = get_query_template('member')) {
> include($template);
> exit;
> }
> }
> exit;
> break;
> ...<snip>
>
> add_action('template_redirect', 'member_redirect');
>
> Again I am no expert at this there may be a better way?
>
> All that remains to be done is to add a member.php etc. to the home
> template. You can then modify the default template to show all
> author information for the blog, with links to their profiles,
> instead of trying to figure out who’s profile to show for the
> current blog.
>
> It will also allow me to add template changes so that a user can
> “follow” a blog, but be a “friend” to a user.
>
> Another problem I see with this method is the member URL is formed
> using the login name of the user, I really don’t want to make that
> publically viewable, is there a way currently, or going to be a way
> in the future that I can create a required field in XProfile that
> should be unique across all users, so a user can enter what they
> want to be used for their URL?
>
> I love where BuddyPress is going, and have enjoyed working on my own
> theme for it, if any one wants more information on what I’m doing,
> let me know,
>
> Martin
> _______________________________________________
> buddypress-dev mailing list
> buddypress-dev at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/buddypress-dev
More information about the buddypress-dev
mailing list