phpSQLiteCMS HTML Sitemap Smarty Template mit Blätter Funktion

Vorwort

Im Gegensatz zur Standart XML Sitemap von phpSQLiteCMS das ohne Style Sheet daher kommt und eher für Suchmaschinen wie Google oder Yahoo! gedacht ist, hier ein Sitemap Template für phpSQLiteCMS das problemlos in die Webseite integriert werden kann um Besuchern die Navigation und Orientierung zu erleichtert.

Im Gegensatz zur phpSQLiteCMS HTML Sitemap ohne Blätter Funktion können die Unterseiten unbegrenzt sein, die Sitemap wird gecached und die Unterseiten die per Seite mit der Blätter Funktion angezeigt werden lassen sich beliebig einstellen.

Diese HTML Sitemap basiert auf der XML Sitemap die standartmäß im phpSQLiteCMS enthalten ist.

phpSQLiteCMS HTML Sitemap Einrichten

Im folgenden die einzelnen Schritte um eine HTML Sitemap in phpSQLiteCMS einzurichten.

1. phpSQLiteCMS Datenbankabfrage und Ausgabe

Als erstes erstellen Sie im Ordner cms/page_types/ die Datei sitemap_html.php. Die Datei sitemap.php existriert schon für die XML Sitemap. Folgender Inhalt kommt in die sitemap_html.php:

sitemap_html.php

<?php
# Create in /cms/page_types sitemap_html.php
# Note: sitemap.php exists for the XML Sitemap
# With the following Code:

if(!defined('IN_PARSER')) exit;

// count items and get how many sitemaplinks per page
$count_result = @sqlite_query($db_content,"SELECT COUNT(*) FROM ".$db_settings['content_table']." WHERE include_sitemap");
list($item_count) = sqlite_fetch_array($count_result);
$item_pages = ceil($item_count / $settings['sitemaplinks_per_page']);

if(isset($_GET['get_1'])) $browse_page = intval($_GET['get_1']); else $browse_page = 1;
if($browse_page<1) $browse_page = 1;
if($browse_page>$item_pages) $browse_page = $item_pages;

// fetch sites sort by category
$sitemap_result = sqlite_query($db_content, "SELECT id, page, title, last_modified, description, category_1, category_2, category_3 FROM ".$db_settings['content_table']." WHERE include_sitemap ORDER BY category_1 ASC, category_2 ASC, category_3 ASC, page ASC LIMIT ".(($browse_page-1)*$settings['sitemaplinks_per_page']).", ".$settings['sitemaplinks_per_page']) or db_error();
if(sqlite_num_rows($sitemap_result)>0)
 {
  $i=0;
  while ($sitemap_data = sqlite_fetch_array($sitemap_result))
   {
    $sitemap[$i]['page'] = $sitemap_data['page'];
    $sitemap[$i]['title'] = $sitemap_data['title'];
    $sitemap[$i]['description'] = stripslashes($sitemap_data['description']);
    $sitemap[$i]['last_modified'] = strftime("%d.%m.%Y, %H:%M",$sitemap_data['last_modified']);
    $sitemap[$i]['category_1'] = $sitemap_data['category_1'];
    $sitemap[$i]['category_2'] = $sitemap_data['category_2'];
    $sitemap[$i]['category_3'] = $sitemap_data['category_3'];
    $i++;
   }
 }

// split output
$browse_array[] = 1;
if ($browse_page > 5) $browse_array[] = 0;
for($browse_page_x=$browse_page-3; $browse_page_x<$browse_page+4; $browse_page_x++)
 {
  if ($browse_page_x > 1 && $browse_page_x < $item_pages) $browse_array[] = $browse_page_x;
 }
if ($browse_page < $item_pages-4) $browse_array[] = 0;
if ($item_pages > 1) $browse_array[] = $item_pages;
if($browse_page < $item_pages) $next_page = $browse_page + 1; else $next_page = 0;
if($browse_page > 1) $previous_page = $browse_page - 1; else $previous_page = 0;
$smarty->assign('browse_data',array($item_count, 0, $browse_page, $item_pages, $previous_page, $next_page, $settings['notes_per_page'], $browse_array));

// template
if(isset($sitemap)) $smarty->assign('sitemap', $sitemap);
$smarty->assign('Smarty Template', 'sitemap.tpl.inc');

// caching
$new_cache_file = $page;
if($browse_page > 1) $new_cache_file .= ','.$browse_page;
$new_cache_file .= '.cache';
?>

2. phpSQLiteCMS Smarty Template

Als nächstes erstellen Sie im Ordner templates/Smarty Templates/ die Datei sitemap_html.tpl.inc. In dieser Datei erfolgt die eigentliche Ausgabe und Formatierung der Sitemap mit Smarty, HTML und CSS. Folgender Inhalt kommt in die sitemap_html.tpl.inc:

sitemap_html.tpl.inc

{* Create in /templates/Smarty Template sitemap_html.tpl.inc *}
{* With the following Code: *}
{if $sitemap}
<ul>
{section name=ul start=0 step=1 loop=$sitemap}
<li>
{if $sitemap[ul].page}
<a class="bold" href="{$BASE_URL}{$sitemap[ul].page}" title="{$sitemap[ul].title}">&lt;{$BASE_URL}{$sitemap[ul].page}&gt;</a>
<ul class="disc">
{section name=li start=$smarty.section.ul.index loop=$smarty.section.ul.index+1}
<li><a class="black" href="{$BASE_URL}{$sitemap[li].page}" title="{if $sitemap[li].description}{$sitemap[li].description}{/if}">{if $sitemap[li].description}{$sitemap[li].description}{else}{$sitemap[li].title}{/if}</a></li>
<li><a class="black" href="{$BASE_URL}{$sitemap[li].page}" title="{$sitemap[li].title} - Zuletzt ge&auml;ndert am {$sitemap[li].last_modified}">Zuletzt ge&auml;ndert am {$sitemap[li].last_modified}</li>
{if $sitemap[li].category_1}
<li><a class="black" href="{$BASE_URL}{$sitemap[li].page}" title="{$sitemap[li].title}">Kategorie</a> <a href="{$BASE_URL}{$sitemap[li].category_1}" title="Kategorie - {$sitemap[li].category_1}">{$sitemap[li].category_1}</a>{if $sitemap[li].category_2}/<a href="{$BASE_URL}{$sitemap[li].category_1};{$sitemap[li].category_2}" title="Kategorie - {$sitemap[li].category_1} - {$sitemap[li].category_2}">{$sitemap[li].category_2}</a>{/if}{if $sitemap[li].category_3}/<a href="{$BASE_URL}{$sitemap[li].category_1};{$sitemap[li].category_2};{$sitemap[li].category_3}" title="Kategorie - {$sitemap[li].category_1} - {$sitemap[li].category_2} - {$sitemap[li].category_3}">{$sitemap[li].category_3}</a>{/if}</li>
{/if}
{/section}
</ul>
{/if}
</li>
{/section}
</ul>
{if $browse_data[0] > $browse_data[6]}
<!-- start page limit nav -->
<ul class="pnnav">
{if $browse_data[4]!=0}
<li><a href="{$page}{if $browse_data[4]>1},{$browse_data[4]}{/if}" title="{$page} - Vorherige Seite">Vorherige Seite</a></li>
{else}
<li><a href="{$page},{$browse_data[3]}" title="{$page} - Letzte Seite">Letzte Seite</a></li>
{/if}
{section name=x loop=$browse_data[7]}
{if $browse_data[7][x]==$browse_data[2]}
<li>{$browse_data[7][x]}</li>
{elseif $browse_data[7][x]==0}
<li>..</li>
{else}
<li><a href="{$page}{if $browse_data[7][x]>1},{$browse_data[7][x]}{/if}"  title="{$page} - Seite {$browse_data[7][x]}">{$browse_data[7][x]}</a></li>
{/if}
{/section}
{if $browse_data[5]!=0}
<li><a href="{$page},{$browse_data[5]}" title="{$page} - N&auml;chste Seite">N&auml;chste Seite</a></li>
{else}
<li><a href="{$page}" title="{$page} - Erste Seite">Erste Seite</a></li>
{/if}
</ul>
<!-- end page limit nav -->
{/if}
{/if}

3. phpSQLiteCMS page_type

Nun fügen Sie noch das neue Template in die pages_types.conf.php ein um die HTML Sitemap unter Seite Bearbeiten im Reiter Eigenschaften unter Typ einbinden zu können. Die Datei liegt im Ordner cms/config/. Folgenden Inhalt fügen Sie hinzu:

page_types.conf.php

# Add to /cms/config/page_types.conf.php the following lines:
$page_types['sitemap_html'] = array(
'page_type' => 'sitemap_html.php',
'page_type_label' => 'page_type_sitemap_html',
'requires_parameter' => false
);

4. phpSQLiteCMS sitemaplinks_per_page

Um zu bestimmen wieviele Unterseiten per Seite bei der Blätter Funktion angezeigt werden, legen Sie im Admin-Menü unter Einstellungen, Erweiterte Einstellungen, Neue Einstellungs-Variable hinzufügen: die Variable sitemaplinks_per_page mit einem Wert von zum Beispiel 20 an.

Zum Schluß nun einfach eine neue Seite im phpSQLiteCMS anlegen und bei Eigenschaften unter Typ page_type_sitemap_html auswählen.

Ein Beispiel der Ausgabe finden Sie unter <http://www.gedit.net/SITEMAP>.

Links und Quellen

Kommentare

Hi Eitrix,Can i ask some things ?Yours posts is aaywls useful , help me every time, but here.. i am a little loose.Where put these modification ?On sugar developper blog, a nice post about ajax message box .. and then i can imagine a ehancement but how implement it on a module ? Where put modification ?For me, i have not still understand these RegardsAccount

Alessandra, Mittwoch, 16. Mai 2012, 22:41

Hello wbetise owner! I found your wbetise on Google and as a Search engine optimizer I have a tip for you that I think you will find very useful. There's a WordPress download that automatically does SEO for your page for higher rankings, it's a 1-click setup that's not expensive at all and will help you make more money and drive more visitors to your blog. Click my username to take a look. Thanks for reading.

Ramon, Samstag, 19. Mai 2012, 07:17

Hello wesitbe owner! I found your wesitbe using Google and as a Search engine optimizer I have an offer for you that I think you will find very useful. There's a WordPress download that automatically does SEO for your site for better rankings, it's a 1-click setup that's not expensive at all and will help you make more money and drive more visitors to your blog. Click my username to take a look. Thanks for reading.

Cecy, Samstag, 19. Mai 2012, 07:57

Kommentar schreiben

  • (optional, Email Adresse wird nicht angezeigt)