Well some of the
SEO Technics at XOOPS.ORG is theme hacks like
Anti keyword Stuffing, this is what turned xoops.org from page rank 9 to 10 where it always fluxates between 10 and 9 so it doesn't report.
Adapt this in your theme to
remove keyword stuffing which is a big knock out.
This is the title tag in the metas of your theme
<title><{if $xoops_pagetitle !=''}><{$xoops_pagetitle}> - <{/if}><{$xoops_sitename}>title>
This is the 'keywords' tag.
<meta name="keywords" content="<{php}>$pg_title = $this->_tpl_vars['xoops_pagetitle'].','.$this->_tpl_vars['xoops_sitename'];
$pg_title = str_replace(' ',',',$pg_title);
$pg_title = str_replace('-',',',$pg_title);
$pg_title = str_replace('|',',',$pg_title);
$pg_title = str_replace(':',',',$pg_title);
$pg_title = str_replace('=',',',$pg_title);
$pg_title = str_replace('&',',',$pg_title);
$pg_title = str_replace(')','',$pg_title);
$pg_title = str_replace('(','',$pg_title);
$pg_title = str_replace('[','',$pg_title);
$pg_title = str_replace(']','',$pg_title);
$pg_title = str_replace('{','',$pg_title);
$pg_title = str_replace('}','',$pg_title);
$pg_title = str_replace(' and ',',',$pg_title);
$pg_title = str_replace(' the ',',',$pg_title);
$pg_title = str_replace(',,',',',$pg_title);
$pg_title = str_replace(',,',',',$pg_title);
$pg_title = str_replace(',,',',',$pg_title);
$pg_title .= ",".$this->_tpl_vars['xoops_meta_keywords'];
$pg_array = explode(",",$pg_title);
$pg_array = array_unique($pg_array);
echo implode(",",$pg_array);<{/php}>" />
The
description tag is not really used these days, if you remove it in the search engines the whole page become searchable for information so you can not normally search for if the tag exists so render it out sometimes it is better to provide better organic and more keywords and data to search.
Otherwise the alternative in anti keyword stuffing, you can make description in the meta tags appear when $xoops_dirname == 'system' which will display it on the home page and any other system pages. the following code will do that.
<{if $xoops_dirname eq 'system'}>
<meta name="description" content="<{$xoops_meta_description}>" />
<{/if}>
The other thing is we went through the modules and made sure the page title was descriptive of the page contain categories and item names for example with other data as well.
XOOPS.ORG for example has
https://xoops.org/sitemap.php which indexes and lists us in minutes on the forum and other parts of the website, yeah adding a sitemap is important.
Well actually had one, here is another one
http://www.chronolabs.coop/sitemap.php here is the code for this example seeming it is OS, this file normally has to be written for individual websites with XOOPS 2 Series.
// $Id: backend.php 2672 2009-01-11 07:49:15Z phppp $
// ------------------------------------------------------------------------ //
// XOOPS - PHP Content Management System //
// Copyright (c) 2000 XOOPS.org //
// //
// ------------------------------------------------------------------------ //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
// ------------------------------------------------------------------------ //
include 'mainfile.php';
global $xoopsDB;
$priority[0]['max'] = 9;
$priority[0]['min'] = 7;
$priority[1]['max'] = 9;
$priority[1]['min'] = 6;
$priority[2]['max'] = 9;
$priority[2]['min'] = 4;
$priority[3]['max'] = 9;
$priority[3]['min'] = 1;
$priority[4]['max'] = 9;
$priority[4]['min'] = 4;
$priority[5]['max'] = 9;
$priority[5]['min'] = 3;
$priority[6]['max'] = 8;
$priority[6]['min'] = 4;
$priority[7]['max'] = 9;
$priority[7]['min'] = 9;
function priority($priority, $num, $of)
{
$range = $priority['max'] - $priority['min'];
return '0.'.($priority['max']-floor($range * ($num/$of)));
}
$query[0] = "SELECT a.id,a.filename from ".$xoopsDB->prefix('bin')." a WHERE `resource` = 'download' ORDER BY a.hits DESC";
$query[1] = "SELECT a.categoryid,a.itemid,a.title,a.datesub,b.name from ".$xoopsDB->prefix('smartsection_items')." a inner join ".$xoopsDB->prefix('smartsection_categories')." b on a.categoryid = b.categoryid ORDER BY a.`weight`, a.`datesub` DESC";
$query[2] = "SELECT a.lid,a.cid,a.title,a.date,b.title from ".$xoopsDB->prefix('wflinks_links')." a inner join ".$xoopsDB->prefix('wflinks_cat')." b on a.cid = b.cid";
$query[3] = "SELECT a.storyid,a.topicid,a.title,a.published,b.topic_title from ".$xoopsDB->prefix('nw_stories')." a inner join ".$xoopsDB->prefix('nw_topics')." b on a.topicid = b.topic_id ORDER BY a.created DESC";
$baseurl[0] = 'binaries';
$baseurl[1] = 'articles';
$baseurl[2] = 'weblinks';
$baseurl[3] = 'news';
$endurl[0] = '.html';
$endurl[1] = ',-1.html';
$endurl[2] = '';
$endurl[3] = '.html';
error_reporting(E_ALL);
header('Content-type: text/xml');
?>
echo "1.0" encoding="UTF-8"?>n"; ?>
echo XOOPS_URL; ?>/
echo date('Y-m-d',time()); ?>
daily
1
foreach($query as $id => $sql)
if (!empty($sql)) {
switch($id) {
case "0":
$rsCover = $xoopsDB->query($sql);
$totalRows[$id] = mysql_num_rows($rsCover);
while (list($lid, $filename) = mysql_fetch_row($rsCover)){
?>
echo XOOPS_URL; ?>/echo $baseurl[$id]; ?>/echo urlencode(str_replace(' ', '-',$filename)); ?>,echo $lid.$endurl[$id]; ?>
echo date('Y-m-d',time());?>
monthly
[$id]++; echo priority($priority[$id], $num[$id], $totalRows[$id]); ?>
}
break;
default:
$rsCover = $xoopsDB->query($sql);
$totalRows[$id] = mysql_num_rows($rsCover);
while (list($lid, $cid, $ititle, $idate, $ctitle) = mysql_fetch_row($rsCover)){
?>
echo XOOPS_URL; ?>/echo $baseurl[$id]; ?>/echo urlencode(str_replace(' ', '-',$ctitle)); ?>/echo urlencode(str_replace(' ', '-',$ititle)); ?>/echo $lid.','.$cid . $endurl[$id]; ?>
echo date('Y-m-d',$idate);?>
monthly
[$id]++; echo priority($priority[$id], $num[$id], $totalRows[$id]); ?>
}
break;
}
}
?>
Also having a session and username as provided with spiders, allows for better SEO Scores so the Googlebot or Yahoo Slurp! is an identity in the website, this reoccures the session variable for next time it comes back and improves SEO Score.