BuddyPress @ WordCamp SF 2009

Preview:

DESCRIPTION

Cooking With BuddyPress at WordCamp San Francisco 2009.

Citation preview

Cooking with BuddyPress

Andy Peatlinghttp://apeatling.wordpress.com / @apeatling

Saturday, May 30, 2009

What is it?

Why should I use it?

How do I skin and extend it?

Saturday, May 30, 2009

Multi-Blog Platform

Multi-Blog + Social Platform

Saturday, May 30, 2009

Profiles

Private Messaging

Friend Connections

Content Groups

Discussion Forums

Comment Wires

Activity Streams

Status Updates*

Photo Albums*

Blog Tracking

“Just a Plugin”

Saturday, May 30, 2009

Why?Build passionate users around

a specific niche.

Saturday, May 30, 2009

Sports Teams Niche Communities

High Schools

Universities

Companies or Products

Intranets

Blogging Networks Cities & Towns

Newspapers

Saturday, May 30, 2009

http://buddypress.org/

Saturday, May 30, 2009

A social network: to beor not to be?

Saturday, May 30, 2009

BuddyPress is not all or nothing.

Saturday, May 30, 2009

Why BuddyPress?

Saturday, May 30, 2009

Open Source

Power & Stability

Community

Saturday, May 30, 2009

BYOTOS(Bring Your Own Terms Of Service)

Saturday, May 30, 2009

Custom Branding

Saturday, May 30, 2009

Existing Plugins

Saturday, May 30, 2009

University Intranet

Profiles

Comment Wires

Activity Streams

Blog Tracking

+ LDAP Login Plugin

+ “More Privacy” Plugin

+ Group Blogs Plugin

Content Groups

Saturday, May 30, 2009

How do I install BuddyPress?

Saturday, May 30, 2009

Download & Install WordPress MU

(stick with sub-folders if you can)

Saturday, May 30, 2009

One click download & install

Saturday, May 30, 2009

Oh, and move the themes...

Default WP ThemeDefault BP Theme

/wp-content/bp-themes/bpmember/

/wp-content/themes/bphome/

(optional)

Saturday, May 30, 2009

Choose your components

Saturday, May 30, 2009

Drop in social widgets

Saturday, May 30, 2009

Set up bbPress for forums(will become easier!)

Saturday, May 30, 2009

Saturday, May 30, 2009

How do I skin BuddyPress?

Saturday, May 30, 2009

WordPress themes arefor blog/content pages

Saturday, May 30, 2009

BuddyPress themes arefor social pages

Saturday, May 30, 2009

Theme combinationsW

P Th

eme

BP

Them

e

Saturday, May 30, 2009

Blog Networks

Saturday, May 30, 2009

BuddyPress themes have specific template files for each

component

Saturday, May 30, 2009

Neatly ordered into sub-folders

Saturday, May 30, 2009

Don’t need a component? Delete ‘em!

Saturday, May 30, 2009

URL’s map to template files

http://example.org/members/andy/messages/compose/

/wp-content/bp-themes/bpmember/messages/compose.php

Saturday, May 30, 2009

BuddyPress themes use “The Loop” but not just for blog

posts

Saturday, May 30, 2009

Output any BuddyPress content through custom loops

http://bit.ly/bploopdocs

bp_has_activities()

bp_has_site_members()

bp_has_site_groups()

bp_has_site_blogs()

bp_has_blogs() bp_has_posts()

bp_has_comments()

bp_has_friendships()bp_has_groups()

bp_group_has_members()

bp_has_message_threads()

bp_has_wire_posts()

bp_has_profile()

Saturday, May 30, 2009

The “Site Members” Loop

Saturday, May 30, 2009

Fine grained control over loop output

Saturday, May 30, 2009

The “Skeleton Theme” is a BuddyPress theme framework

(it’s bundled with every BuddyPress download)

Saturday, May 30, 2009

Saturday, May 30, 2009

How can I extendBuddyPress?

Saturday, May 30, 2009

BuddyPress is as extensibleas WordPress

Saturday, May 30, 2009

All BuddyPress components are coded and structured the same way

Saturday, May 30, 2009

Standardization and consistency makes happy developers

Saturday, May 30, 2009

BuddyPress functions allow you totalk directly to the theme

Saturday, May 30, 2009

Building your component navigation

bp_core_add_nav_item ( ‘Profile’, // Name ‘profile’ // Slug);

bp_core_add_subnav_item ( ‘profile’, // Slug of parent ‘Edit Profile’, // Name ‘edit’, // Slug of sub nav item $bp->loggedin_user->domain . ‘/profile’, // parent URL ‘xprofile_screen_edit’ // Function to run when clicked);

Saturday, May 30, 2009

bp_core_add_subnav_item ( ‘profile’, // Slug of parent ‘Edit Profile’, // Name ‘edit’, // Slug of sub nav item $bp->loggedin_user->domain . ‘/profile’, // parent URL ‘xprofile_screen_edit’ // Function to run when clicked);

function xprofile_screen_edit() { // Do stuff (save changes etc)

bp_core_load_template ( ‘profile/edit-profile’ );}

[activetheme]/profile/edit-profile.php

Saturday, May 30, 2009

BuddyPress components are all URLaction based

Saturday, May 30, 2009

http://example.org/groups/wplovers/members/ban/345

$bp->current_component $bp->current_item $bp->action_variables(array)(string)(string)

$bp->current_action(string)

Easily create and use pretty URL’s in your components

http://example.org/members/andy/wordcamps/attended/sf/2009

Saturday, May 30, 2009

Hook in everywhere

http://bit.ly/bphooks

Saturday, May 30, 2009

The “Skeleton Component” is a BuddyPress plugin framework

http://bit.ly/bpskelcomp

Saturday, May 30, 2009

http://bp-dev.org

Saturday, May 30, 2009

The Future....Cast your votes!http://bit.ly/bpvote

Saturday, May 30, 2009

Thanks! Questions?

@apeatling

@buddypressdev

Saturday, May 30, 2009