Personalizzare PHPShop: alcuni esempi

Uno dei problemi di PHPShop è il metodo usato per il titolo nella sezione head della pagina. Pagine differenti in effetti condividono il medesimo tag title.

Avere titoli appropriati per le pagine

Questo è un problema per l'indicizzazione nei motori di ricerca e per salvare la pagina nei preferiti.

Un metodo abbastanza semplice per risolvere questo problema è quello di:

  • modificare il file index.php (il file principale) in modo che usi l'output buffering
  • include il corpo del file .ihtml
  • processare il file in modo da ottenere il titolo, ma senza mandare in output il documento incluso
  • includere l'header e solo dopo stampare il file .ihtml.

Di seguito le modifiche (da inserire attorno alla riga 270):

ob_start();
include_once(MODROOT.$modulename."/html/".$pagename);
$page_header = ob_get_contents();
if(eregi("<h1(.*)>(.*)</h1>",$page_header,$test)) {
$title = trim(strip_tags($test[0]));
$title = eregi_replace("[^A-Za-z0-9:]"," ",$title);
$title = eregi_replace("[:]"," - ",$title);
$title = eregi_replace(" +"," ",$title);
}
ob_end_clean();

// Load php header
include_once(MODROOT."/shop/lib/header.inc");

echo $page_header;

Con piccole modifiche nel file shop/browse.ihtml è possibile generare il tag title anche per le pagine di navigazione nel catalogo.

Utilizzare indirizzi semplici

PHPShop costringe lo sviluppatore ad avere degli indirizzi che non sono semplici, con conseguenti problemi.

  • Per gli utenti, il problema è che gli indirizzi non sono facilmente memorizzabili e sono difficili da capire.
  • Per i robot (es. per i motori di ricerca) non ci dovrebbero essere problemi, ma in effetti molti dei robot scartano le pagine che interpretano come query. Questo significa che molti motori di ricerca (ma non google) tendono a non indicizzare le pagine di un sito realizzato con phpshop.

Nel forum di PHPShop si è discusso a lungo dell'argomento, ma nessuno ha finora pubblicato del codice che in effetti risolva il problema in un modo semplice. La maggior parte delle proposte infatti richiede forti interventi nel codice, o l'utilizzo di particolari moduli come mod_rewrite, che non tutti gli utenti hanno a disposizione.

L'implementazione proposta è basata sull'utilizzo del server apache, ma con poche modifiche può essere adattata a qualunque server.

Creare, se non è presente, un file con estensione .htaccess nella radice di PHPShop.

Inserire il codice seguente:

<files pagine>
ForceType application/x-httpd-php
</files>

<files categorie>
ForceType application/x-httpd-php
</files>

<files prodotti>
ForceType application/x-httpd-php
</files>

Quindi, andare a creare i file pagine, categorie e prodotti, che si vuole usare come indirizzi semplici (vedi ad es. l'utilizzo in www.ilsoleelaterra.it).

Di seguito il file pagine:

<?php
if (isset($PATH_INFO)) {
$mypath = explode("/",$PATH_INFO);
$page=$mypath[1]."/".$mypath[2];

if(isset($mypath[3]))
$category_id = $mypath[3];
}

include("index.php");
?>

Gli altri due file saranno similari e permettono di avere indirizzi del tipo: