|
|
#1
| ||||
| ||||
|
My goal is to Search Engine Optimize vBulletin 3.5/3.6+ series sites (and older versions) so that the index page, forums, and each thread are top of the search engines for their search terms. I achieved a good deal of publicity around the web for my Search Engine Optimize vBulletin 3.03 to 3.07 series of hacks. I was then able to lobby vBulletin to include many of the hacks into their base package for vBulletin 3.5. In fact my primary job is now SEO'ing vBulletin sites - applying the principles talked about in this thread. Please add your discussion of this hack on the following thread: Search Engine Optimize vBulletin 3.5 discussion. Overall, I am very impressed with the work that Freddie/vBulletin has done with my SEO vB ideas. But he has left me with a small number of opportunities for enhancement. URL rewrites The first step in optimizing vBulletin is getting the site issues sorted - having one url per page of information. vBSEO is a great product (check the link) that does what I consider a 110% job at doing url rewrites, and many other important addons. ![]() Without the url rewrite program, there would be quite a number of hardcode php hacks/plugins needed. See for yourself on this forum what the url rewrites look like. Apart from the obvious, they remove spare index.php's in url's and correct the url's in lastpost, newpost, previous post, next post to name a few. If you don't purchase the url rewriter, you will need to hack specifically for these issues. Search Engine Optimize vBulletin 3.5/3.6 setup options & template changes vBulletin Options I have personally changed the search function to the mySQL Fulltext search engine and removed the vBulletin indices. Search Engine Friendly Archive
Thread/Forum Read Marking Type- my preference - Database (automatic forum marking) Forum Display Options - Enable Forum Description - off This option adds the forum description to each thread and to the forum. However, I prefer to have the forum description in the Navbar for the forum, and a thread description on the threads. I don't like the idea of the forum description being on every thread - doesn't look right CSS in its own file This reduces the size of each page, ie download time, makes the content that much higher on the page, and in reducing the size of the page means it takes longer to get to the 100k mark that Google caches. ie This page is over 100k. Set via the "vBulletin Options", "Style and language settings", option- Store CSS Stylesheets as Files? Yes. You need to follow the instructions given there to change the write permissions on the directory. I have had problems in getting the css into its own file. If you cant get it to work, try setting the "Store CSS Stylesheets as Files?" as No, then to Yes again. Been a very successful way of getting it working. Last edited by T2DMan; 30th Sep 06 at 02:38 AM. |
|
#2
| ||||
| ||||
| Welcome Headers Plugin Install the welcome headers plugin from vbulletin.org. Change the guest message to include your search phrases at the start of the text. And add rel=nofollows to the register and contact us links. Navbar Template Changing the navbits to an h1 I have changed the navbits so that the current breadcrumb is in <h1>. Style Manager/Main CSS - add to the "Additional CSS definitions" Code: .h1navbar
{
font-family:verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
margin:0;
font-size: 14px;
font-weight: bold;
display: inline;
}
add the following as well for the firstwords: Code: .navbar2
{
font-family:verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
margin-bottom:5pt;
margin-top:5px;
font-size:8pt;
}
replace: Code: <strong>$navbits[lastelement]</strong> Code: <h1 class="h1navbar">$navbits[lastelement]</h1> Code: <strong>$vboptions[bbtitle]</strong> Code: <h1 class="h1navbar">$vboptions[bbtitle]</h1> Firstwords on the page Google likes paragraphs at the top of pages that include the search phrases. Often it will use this paragraph for its snippet. Therefore, you need to use the search phrase (ie title) minimum twice within around 157 characters. The firstwords are used in both the main forum index page, thread and forum. For the index page, I use the guest welcome message. In addition, I tweak the guest welcome phrase - Languages and Phrases, Search in phrases - for "If this is your first visit". On the NAVBAR template after what was: Code: <strong>$vboptions[bbtitle]</strong></div> </if> Code: <h1 class="h1navbar">$vboptions[bbtitle]</h1></div> </if> Code: <if condition="THIS_SCRIPT=='member'"> <div class="navbar2"> The userprofile of $userinfo[username]. Domain.com - a community of ... discussing ...</div> <else /> <if condition="THIS_SCRIPT=='index' and $show['guest']"> <!-- guest welcome message --> <div class="navbar2"> <phrase 1="faq.php?$session[sessionurl]" 2="register.php?$session[sessionurl]" 3="$vboptions[bbtitle]" 4="sendmessage.php$session[sessionurl]">$vbphrase[welcome_guest]</phrase> <!-- / guest welcome message --> <else /> <if condition="THIS_SCRIPT=='poll'"> <div class="navbar2">The poll results for <b>$threadinfo[title]</b>.</div> <else /> <if condition="$thread[title]"> <div class="navbar2">Discuss <b>$thread[title]</b><if condition="$pagenumber>1"> Page $pagenumber</if>. on domain.com sales pitch. <i>$thread[title]</i> - $foruminfo[description].</div> <else /> <if condition="$foruminfo[title]"> <div class="navbar2"> $foruminfo[title] <if condition="$pagenumber>1">Page $pagenumber </if> on domain.com. $foruminfo[description]</div> </if></if></if></if></if> Code: <if condition="THIS_SCRIPT<>'index'"> $welcomeheaders </if> It is not always easy to find the register link - I like having a link as part of the logon script box. after: Code: <input type="submit" class="button" value="$vbphrase[log_in]" tabindex="104" title="$vbphrase[enter_username_to_login_or_register]" accesskey="s" /> Code: <if condition="$show['registerbutton']"><span class="smallfont"> <a href="register.php$session[sessionurl_q]" rel="nofollow">$vbphrase[register]</a></span></if> Delete the following - depending on your preferences Code: <if condition="$show['registerbutton']"> <td class="vbmenu_control"><a href="register.php$session[sessionurl_q]" rel="nofollow">$vbphrase[register]</a></td> </if> Last edited by T2DMan; 29th Jan 07 at 05:04 AM. |
|
#3
| ||||
| ||||
|
vBulletin have followed my advice, and have a great headinclude template. However, there are several small tweaks: (note: There is a great description plugin at http://www.vbulletin.org/forum/showthread.php?t=116410 ) headinclude template changes
Code: <if condition="$show['threadinfo']"> <meta name="description" content="<if condition="$pagenumber>1"><phrase 1="$pagenumber">$vbphrase[page_x]</phrase>-</if>$threadinfo[title] $foruminfo[title_clean]" /> Code: <if condition="THIS_SCRIPT<>member"> <if condition="THIS_SCRIPT=='poll'"> <meta name="keywords" content="$vbphrase[view_poll_results] $threadinfo[title] $vboptions[keywords] " /> <meta name="description" content="$vbphrase[view_poll_results] of $threadinfo[title] $foruminfo[title_clean]. " /> <else /> <if condition="$show['threadinfo']"> <meta name="description" content="$threadinfo[title] - <if condition="$pagenumber>1"><phrase 1="$pagenumber">$vbphrase[page_x]</phrase>-</if> $foruminfo[title_clean]. Domain.com is the place to discuss $threadinfo[title]" /> With the description plugin, the problem is that people don't know seo, and so don't write seo'ed descriptions. So there needs to be a formula that does it for them, and includes their custom description: I have used the following [php]<meta name="description" content="'$threadinfo[title]' on $foruminfo[title_clean] forum of domainname. com - <if condition="$pagenumber>1"><phrase 1="$pagenumber">$vbphrase[page_x]</phrase>-</if><if condition="$threadinfo[description]">$threadinfo[description]<else />$threadinfo[title]</if>- <!--VBSEO_RR_1-->"/> [/php] Forum Meta Description Add the forum title onto the start of the forum meta description Add the red text: <meta name="description" content="$foruminfo[title_clean]- - means that you can have repetition of the title key phrase twice in the meta description if you only otherwise have it once in there. vBSEO - Relevant Phrases and Thread Meta Description vBSEO has a "relevant phrases" variable that I use for the meta description. I set <!--VBSEO_RR_1_NOHTML--> to equal [first_post_20_words], then add it to the end of the thread meta description. If you use the standard <!--VBSEO_RR_1-->, then adsense targeting will insert an adsense comment into the meta description. Discussion Meta Description - try to repeat the search phrase twice (I use the thread title twice) and keep your description to 150 characters for Google, then expand it to 200 for Yahoo/MSN. With a formula it is a little hard, but you get the idea. Google Adsense positioning I like adding the following just under the Navbar as 5 links - so just after all the </if>'s add the following (choose your own colour scheme: [PHP]<script type="text/javascript">google_ad_client = "pub-xxxxxxxxxxx"; google_ad_width = 728; google_ad_height = 15; google_ad_format = "728x15_0ads_al_s"; google_ad_channel ="xxxxxxxx"; google_color_border = "F5F5FF"; google_color_link = "cc0000"; google_color_url = "0033CC"; google_color_bg = "F5F5FF"; google_color_text = "6F6F6F"; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> [/PHP] I also like the idea of adding an adsense section either at the last post of the page, or as the second post. When people look at the "last post" they see the adsense at the bottom, or if they are browsing via the search engines, they read the first post, then see the ad. Second post position: - add to the end of the postbit template - pick your own colours [PHP]<if condition="$post[postcount] % $vboptions[maxposts] == 1"> $spacer_open <div style="padding:0px 0px $stylevar[cellpadding]px 0px"> <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center"> <tr> <td class="thead" align="left">Sponsored Links </tr> <tr> <td class="alt1" align="center"> <script type="text/javascript">google_ad_client = "pub-xxxxxxxxxx"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_channel ="xxxxxxxxx"; google_color_border = "003366"; google_color_bg = "F5F5FF"; google_color_link = "003366"; google_color_url = "003366"; google_color_text = "000000"; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </td> </tr> </table> </div> $spacer_close </if>[/PHP] Last edited by T2DMan; 29th Jan 07 at 05:53 AM. |
|
#4
| ||||
| ||||
| If you want multiple phrases, you can either use child templates, or use conditionals You can put a conditional so that you can also have a non restaurant forum/thread like this one, and not have restaurant related terms in the meta data. Code: showthread template after <head> add <if condition="$foruminfo[forumid]<7"> your meta data information, or navbar firstwords text <else /> your alternate meta data information or navbar firstwords text </if> <if condition="$threadinfo[threadid]==3976"> your meta data information, or navbar firstwords text <else /> your alternate meta data information or navbar firstwords text </if> |
|
#5
| ||||
| ||||
| Spider Identification There is an up-to-date list of spiders on the official vBulletin forum. Download the spiders xml file and copy it to your includes/xml directory. vBulletin will read the file and include it in its spider identification for the who is online facility. Footer Archive Links - get the Google PR to your threads As many arguments as there are for and against accumulation of Google PR, the underlying principle remains - have the least number of clicks to pages holding your content. So I personally have numbered links to each of the main archive/sitemap pages added to the footer template. Why numbered links? The objective is to get Google PR to the pages, not to have those archive pages ranking in their own right. Therefore, having the links numbered uses the least amount of page space possible. vBSEO has now built this feature into its package. It also has an option where the links are only shown to guests. Last edited by T2DMan; 24th Oct 06 at 12:20 AM. |
|
#6
| ||||
| ||||
|
It is a bit of a mission getting the forumdisplay's high on the search engines. One of the issues is keyword density. The phrase has only been in the title/metas/firstwords. With the listings of all the threads, there needs to be more mention of the main search phrase of the forum. So, I have now added the forum title just underneath each thread as listed on the page. It does wonders for keyword density, and even though it is being repeated, it is always next to unique words, so no duplicate content issues. Mention of the forum is only made when people are not logged in. threadbit template - after Code: <span style="cursor:pointer" onclick="window.open('member.php?$session[sessionurl]u=$thread[postuserid]')">$thread[postusername]
</if>
Code: <if condition="!$show['member']"> - $foruminfo[title]</if> Last edited by T2DMan; 13th Mar 08 at 02:15 PM. |
|
#7
| ||||
| ||||
|
No biggie, but I prefer to have the forum mentioned on the title of the poll. So update mention of the title in the pollresults template to the following: Code: <title>$threadinfo[title] - $foruminfo[title_clean] - $vbphrase[view_poll_results]</title> Code: <title>$thread[title]-$foruminfo[title_clean]<if condition="$pagenumber>1"> - <phrase 1="$pagenumber">$vbphrase[page_x]</phrase></if>-$vboptions[bbtitle]</title> Last edited by T2DMan; 11th Feb 06 at 08:32 AM. |
|
#8
| ||||
| ||||
| Memberinfo template I like the idea of having the username first, as they should be able to be found in their own right. replace Code: <title>$vboptions[bbtitle] - $vbphrase[view_profile]: $userinfo[username]</title> Code: <title>$userinfo[username]-$vboptions[bbtitle]-$vbphrase[view_profile]</title> <meta name="keywords" content="$userinfo[username] $vboptions[keywords] " /> <meta name="description" content="$userinfo[username] is a member of domain.com. Join with $userinfo[username] and [insert some sales pitch]." /> Last edited by T2DMan; 29th Jan 07 at 06:00 AM. |
|
#9
| ||||
| ||||
| forumhome template I have added rel=nofollow to the two calender links - my personal preference <a rel="nofollow" href="calendar.php vBAdvanced CMPS template adv_portal Code: <title><if condition="$navbits[lastelement]">$navbits[lastelement]-</if> sitename</title> Code: <if condition="THIS_SCRIPT=='adv_index'"> <if condition="$navbits[lastelement]"> <div class="navbar2"> An article about $navbits[lastelement] on domainname, the place to go for your bla bla </div> <else /> <div class="navbar2">Welcome to the best domain.</div> </if> <else /> Code: <if condition="THIS_SCRIPT=='adv_index'"> <if condition="$getpage=='home'"> <meta name="keywords" content="$vboptions[keywords] " /> <meta name="description" content="domain is the place for bla bla" /> </if> <else /> Last edited by T2DMan; 26th Mar 06 at 03:13 AM. |
|
#10
| ||||
| ||||
| vBulletin API Please add your reply and discussion on the following page: Search Engine Optimize vBulletin 3.5 discussion Last edited by T2DMan; 22nd Aug 06 at 04:48 AM. |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| |
| | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Search Engine Optimize vBulletin | T2DMan | SEO vBulletin | 260 | 23rd Nov 08 09:16 PM |
| Search Engine Optimize vBulletin 3.5 Discussion | T2DMan | SEO Discussion | 54 | 12th Apr 07 11:08 AM |
| Search engine visits vBulletin | Linknz | SEO vBulletin | 2 | 18th Aug 06 09:21 AM |
| Contract details for Search Engine Optimize vBulletin | T2DMan | SEO vBulletin | 1 | 7th May 05 11:23 AM |
| Search Engine Optimizing vBulletin | T2DMan | SEO vBulletin | 0 | 28th Oct 04 12:23 PM |