Code:
&t;?php
/* Simple XML-sitemap
Copyright (C) 2011 Wolfgang Ninaus wolfgang.ninaus@cdx.at
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 3 of the License, or
(at your option) any later version.
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.
The GNU General Public License is available at http://www.gnu.org/licenses/gpl-3.0.html.
*/
define("IN_MYBB", 1);
require_once "./global.php";
header("Content-Type: text/xml");
&36;query = &36;db-&t;query("SELECT tid, DATE_FORMAT(FROM_UNIXTIME(lastpost),'%Y-%m-%dT%H:%i:%sZ') AS lastmod FROM ".TABLE_PREFIX."threads ORDER BY tid DESC ");
echo '&t;' .'?xml version="1.0" encoding="UTF-8"?'.'&t;
&t;'. '?xml-stylesheet type="text/xsl" href="sitemap_template.xml"?'.'&t;
&t;urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"&t;
';
while (&36;result = &36;db-&t;fetch_array(&36;query)) {
&36;tid=&36;result['tid'];
echo "&t;url&t;\n";
echo "&t;loc&t;".&36;mybb-&t;settings['bburl']."/showthread.php?tid=&36;tid&t;/loc&t;\n";
echo "&t;lastmod&t;" . &36;result['lastmod'] . "&t;/lastmod&t;\n";
echo "&t;changefreq&t;daily&t;/changefreq&t;\n";
echo "&t;priority&t;0.50&t;/priority&t;";
echo "&t;/url&t;\n\n";
}
echo "&t;/urlset&t;";
?&t;
Code:
&t;?xml version="1.0" encoding="UTF-8"?&t;
&t;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xna="http://www.sitemaps.org/schemas/sitemap/0.9" exclude-result-prefixes="xna"&t;
&t;xsl:output indent="yes" method="html" omit-xml-declaration="yes"/&t;
&t;xsl:template match="/"&t;
&t;html&t;
&t;head&t;
&t;title&t;Google Sitemap File&t;/title&t;
&t;style type="text/css"&t;
&t;![CDATA[
&t;!--
h1 {
font-weight:bold;
font-size:1.5em;
margin-bottom:0;
margin-top:1px; }
h2 {
font-weight:bold;
font-size:1.2em;
margin-bottom:0;
color:#707070;
margin-top:1px; }
p.sml {
font-size:0.8em;
margin-top:0; }
.sortup {
background-position: right center;
background-image: url(http://www.google.com/webmasters/sitemaps/images/sortup.gif);
background-repeat: no-repeat;
font-style:italic;
white-space:pre; }
.sortdown {
background-position: right center;
background-image: url(http://www.google.com/webmasters/sitemaps/images/sortdown.gif);
background-repeat: no-repeat;
font-style:italic;
white-space:pre; }
table.copyright {
width:100%;
border-top:1px solid #ddad08;
margin-top:1em;
text-align:center;
padding-top:1em;
vertical-align:top; }
table.data {
font-size: 12px;
width: 100%;
border: 1px solid #000000;
}
table.data tr.header td{
background-color: #CCCCCC;
color: #FFFFFF;
font-weight: bold;
font-size: 14px;
}
--&t;
]]&t;
&t;/style&t;
&t;script language="JavaScript"&t;
&t;![CDATA[
var selectedColor = "blue";
var defaultColor = "black";
var hdrRows = 1;
var numeric = '..';
var desc = '..';
var html = '..';
var freq = '..';
function initXsl(tabName,fileType) {
hdrRows = 1;
if(fileType=="sitemap") {
numeric = ".3.";
desc = ".1.";
html = ".0.";
freq = ".2.";
initTable(tabName);
setSort(tabName, 3, 1);
}
else {
desc = ".1.";
html = ".0.";
initTable(tabName);
setSort(tabName, 1, 1);
}
var theURL = document.getElementById("head1");
theURL.innerHTML += ' ' + location;
document.title += ': ' + location;
}
function initTable(tabName) {
var theTab = document.getElementById(tabName);
for(r=0;r&t;hdrRows;r++)
for(c=0;c&t;theTab.rows[r].cells.length;c++)
if((r+theTab.rows[r].cells[c].rowSpan)&t;hdrRows)
hdrRows=r+theTab.rows[r].cells[c].rowSpan;
for(r=0;r&t;hdrRows; r++){
colNum = 0;
for(c=0;c&t;theTab.rows[r].cells.length;c++, colNum++){
if(theTab.rows[r].cells[c].colSpan&t;2){
theCell = theTab.rows[r].cells[c];
rTitle = theCell.innerHTML.replace(/&t;[^&t;]+&t;| /g,'');
if(rTitle&t;""){
theCell.title = "Change sort order for " + rTitle;
theCell.onmouseover = function(){setCursor(this, "selected")};
theCell.onmouseout = function(){setCursor(this, "default")};
var sortParams = 15; // bitmapped: numeric|desc|html|freq
if(numeric.indexOf("."+colNum+".")&t;-1) sortParams -= 1;
if(desc.indexOf("."+colNum+".")&t;-1) sortParams -= 2;
if(html.indexOf("."+colNum+".")&t;-1) sortParams -= 4;
if(freq.indexOf("."+colNum+".")&t;-1) sortParams -= 8;
theCell.onclick = new Function("sortTable(this,"+(colNum+r)+","+hdrRows+","+sortParams+")");
}
} else {
colNum = colNum+theTab.rows[r].cells[c].colSpan-1;
}
}
}
}
function setSort(tabName, colNum, sortDir) {
var theTab = document.getElementById(tabName);
theTab.rows[0].sCol = colNum;
theTab.rows[0].sDir = sortDir;
if (sortDir)
theTab.rows[0].cells[colNum].className='sortdown'
else
theTab.rows[0].cells[colNum].className='sortup';
}
function setCursor(theCell, mode){
rTitle = theCell.innerHTML.replace(/&t;[^&t;]+&t;| |\W/g,'');
if(mode=="selected"){
if(theCell.style.color!=selectedColor)
defaultColor = theCell.style.color;
theCell.style.color = selectedColor;
theCell.style.cursor = "pointer";
window.status = "Click to sort by '"+rTitle+"'";
} else {
theCell.style.color = defaultColor;
theCell.style.cursor = "";
window.status = "";
}
}
function sortTable(theCell, colNum, hdrRows, sortParams){
var typnum = !(sortParams & 1);
sDir = !(sortParams & 2);
var typhtml = !(sortParams & 4);
var typfreq = !(sortParams & 8);
var tBody = theCell.parentNode;
while(tBody.nodeName!="TBODY"){
tBody = tBody.parentNode;
}
var tabOrd = new Array();
if(tBody.rows[0].sCol==colNum) sDir = !tBody.rows[0].sDir;
if (tBody.rows[0].sCol&t;=0)
tBody.rows[0].cells[tBody.rows[0].sCol].className='';
tBody.rows[0].sCol = colNum;
tBody.rows[0].sDir = sDir;
if (sDir)
tBody.rows[0].cells[colNum].className='sortdown'
else
tBody.rows[0].cells[colNum].className='sortup';
for(i=0,r=hdrRows;r&t;tBody.rows.length;i++,r++){
colCont = tBody.rows[r].cells[colNum].innerHTML;
if(typhtml) colCont = colCont.replace(/&t;[^&t;]+&t;/g,'');
if(typnum) {
colCont*=1;
if(isNaN(colCont)) colCont = 0;
}
if(typfreq) {
switch(colCont.toLowerCase()) {
case "always": { colCont=0; break; }
case "hourly": { colCont=1; break; }
case "daily": { colCont=2; break; }
case "weekly": { colCont=3; break; }
case "monthly": { colCont=4; break; }
case "yearly": { colCont=5; break; }
case "never": { colCont=6; break; }
}
}
tabOrd[i] = [r, tBody.rows[r], colCont];
}
tabOrd.sort(compRows);
for(i=0,r=hdrRows;r&t;tBody.rows.length;i++,r++){
tBody.insertBefore(tabOrd[i][1],tBody.rows[r]);
}
window.status = "";
}
function compRows(a, b){
if(sDir){
if(a[2]&t;b[2]) return -1;
if(a[2]&t;b[2]) return 1;
} else {
if(a[2]&t;b[2]) return 1;
if(a[2]&t;b[2]) return -1;
}
return 0;
}
]]&t;
&t;/script&t;
&t;/head&t;
&t;body onLoad="initXsl('table0','sitemap');"&t;
&t;h1 id="head1"&t;Site Map&t;/h1&t;
&t;h2&t;Number of URLs in this Sitemap: &t;xsl:value-of select="count(xna:urlset/xna:url)"&t;&t;/xsl:value-of&t;&t;/h2&t;
&t;table id="table0" class="data"&t;
&t;tr class="header"&t;
&t;td&t;Sitemap URL&t;/td&t;
&t;td&t;Last modification date&t;/td&t;
&t;td&t;Change freq.&t;/td&t;
&t;td&t;Priority&t;/td&t;
&t;/tr&t;
&t;xsl:for-each select="xna:urlset/xna:url"&t;
&t;tr&t;
&t;td&t;&t;xsl:variable name="sitemapURL"&t;&t;xsl:value-of select="xna:loc"/&t;&t;/xsl:variable&t;
&t;a href="{&36;sitemapURL}" target="_blank" rel="nofollow" ref="nofollow"&t;&t;xsl:value-of select="&36;sitemapURL"&t;&t;/xsl:value-of&t;&t;/a&t;&t;/td&t;
&t;td&t;&t;xsl:value-of select="xna:lastmod"/&t;&t;/td&t;
&t;td&t;&t;xsl:value-of select="xna:changefreq"/&t;&t;/td&t;
&t;td&t;&t;xsl:value-of select="xna:priority"/&t;&t;/td&t;
&t;/tr&t;
&t;/xsl:for-each&t;
&t;/table&t;
&t;/body&t;
&t;/html&t;
&t;/xsl:template&t;
&t;/xsl:stylesheet&t;
]]>