Nom du Squelette | SPIP-Wap |
---|---|
Auteur | ARNO* |
Licence | GPL |
SPIP | 1.7 |
PHP | 4 |
Sites exemple : uzine.net, scarabee.com (en se connectant avec un client Wap, évidemment)
Testé sur ces navigateurs :
Testé ? | plateforme | Navigateur | Version |
---|---|---|---|
oui | Windows | WinWap | 3.1 |
oui | Windows | Nokia 5100 SDK | 1.0 |
oui | téléphone | Alcatel | OT 715 |
Les fichiers fournis ici contiennent :
— des squelettes permettant de naviguer en Wap (dans le langage WML) sur un site SPIP,
— des versions modifiées des fichiers « sommaire.php3 », « article.php3 », « rubrique.php3 » et « breve.php3 », permettant de détecter automatiquement le client Wap (téléphone portable) et d’utiliser le bon squelette sans changer d’adresse,
— un ensemble de fonctions permettant de transformer le HTML de SPIP au format WML (format affreusement plus limité).
But de la manœuvre
En plus de la traditionnelle navigation en HTML, ces fichiers ajoutent à votre site la possibilité d’être consulté en Wap (sur un téléphone portable, donc). Le contenu des pages est réduit à leur contenu textuel (les images et les documents sont supprimés), l’interface de navigation est adaptée, et la taille des pages est réduite. Ainsi :
— les listes d’articles/brèves sont affichées par séries de 5 par page (accompagnées, le cas échéant, de liens « suivant »/« précédent » pour accéder aux contenus supplémentaires) ;
— le texte des articles est découpé et affiché sur plusieurs pages successives.
Par ailleurs, les méthodes présentées ici pourront vous inspirer pour la création de navigations à d’autres formats (au niveau des découpes d’articles, des transcodages de caractères...).
Installation
- Système minimal : SPIP 1.7, PHP 4
SPIP doit être au minimum une version 1.7 : les squelette sont multilingues, et utilisent les fonctionnalités de la version 1.7 en la matière. On peut faire fonctionner ces squelettes sur une version antérieure à la condition d’adapter les squelettes pour remplacer les appels de chaînes « traduites » par le texte désiré.
Sur le serveur, PHP en version 4 ou suivante : le transcodage des caractères et la simplification des textes utilisent les fonctions PHP get_html_translation_table
et strtr
.
Si ça ne marche pas... au pire, le site ne sera pas visitable en Wap. Mais le site restera totalement inchangé pour sa consultation habituelle par le Web. En cas de doute, il suffit de réinstaller les fichiers sommaire.php3, rubrique.php3, article.php3 et breve.php3 de la distribution d’origine de SPIP.
- Installer les fichiers
Récupérez le fichier zip ci-joint, décompressez-le sur votre ordinateur, et installez l’ensemble des fichiers directement à la racine de votre site SPIP.
Dans le fichier mes_fonctions.php3
(au besoin, créez ce fichier), insérez l’appel au fichier wap_mes_fonctions.php3
:
include ("wap_mes_fonctions.php3");
Voilà, ça roule...
Détail des fonctions
- Les fichiers sommaire.php3, rubrique.php3, article.php3 et breve.php3 sont modifiés : ils détectent le client Wap et lui envoient un squelette adapté (précédé d’un header spécifique) :
// Identifier client WAP
if (ereg("text/vnd\.wap\.wml", $GLOBALS["HTTP_ACCEPT"])) {
$fond = "wap-sommaire";
$HTTP_POST_VARS["type"] = "wap"; // permet de changer le fichier de cache
// cette ligne empeche l'affichage des boutons d'administration
$flag_preserver = true;
// header de WML
@header("Content-type: text/vnd.wap.wml");
}
Le test est réalisé sur la variable $HTTP_ACCEPT
, c’est-à-dire la liste des codes MIME acceptés par le logiciel client ; si ce client accepte le code MIME « text/vnd.wap.wml », c’est qu’il s’agit d’un client WAP.
Dans ce cas, on lui envoie le $fond
adapté (ici, « wap-sommaire-dist.html » est utilisé). La liste des variables http ($HTTP_POST_VARS
) est complétée d’une variable $type=wap
; cela est destiné à forcer l’utilisation d’une fichier cache différent (le cache des pages Wap n’écrase pas le cache des pages non Wap, alors qu’il s’agit de la même URL).
On interdit l’affichage des boutons d’admins (qui feraient irrémédiablement planter les clients Wap), et on envoie le header identifiant le contenu Wap/WML.
- Cette méthode permet de naviguer sur le site Wap en utilisant exactement les mêmes adresses que le site HTML auquel on est habitué : ceci permet à la fois de conserver les adresses simples (par exemple, le site uZine est accessible en Wap à son adresse habituelle : http://www.uzine.net) ; de plus les liens à l’intérieur du site restent les mêmes.
- Les squelettes sont du WML, donc très simples.
Les méthodes à noter :
— les « textes » indicatifs utilisent les balises de multilinguisme, balises que l’on fait systématiquement passer par le filtre nettoyer_wap
. Par exemple :
<:dernieres_breves|nettoyer_wap:>
Ce filtre (présent dans wap_mes_fonctions.php3) est ici indispensable essentiellement pour transformer les caractères spéciaux du HTML (é
...) en texte normal (les clients Wap ne comprennent pas les caractères HTML autres que quelques cas spécifiques tels que
).
— tous les éléments de texte tirés de la base de données sont également passés par le filtre nettoyer_wap
. Outre les éventuels caractères spéciaux à transcoder (à priori, ils sont absents de la base de donnée, mais on ne sait jamais...), de nombreux éléments et balises spécifiques au HTML sont supprimés ou remplacés (ainsi, le <h3>
des intertitres est transformé, toutes les mentions de classes de feuilles de style sont effacées - tous éléments qui font planter de nombreux clients Wap -, les images et documents effacés).
Ces fonctions sont très restrictives et effacent beaucoup d’éléments de mise en forme. Certainement trop... Cependant, les tests pour développer ces fonctions ont été réalisés non seulement sur des émulateurs Wap pour Windows - WinWap, et l’émulateur de Nokia -, mais aussi sur un téléphone Alcatel, carrément ultra-limité du côté du Wap : toute balise non comprise interdisant complètement l’affichage des pages).
Ces limitations ne suffisant certainement pas à couvrir tous les cas ; mais on pourra progresser par la suite. Par exemple, la présence de balises -
<b>
ou<i>
par exemple) - mêmes correctement fermées à l’intérieur d’un lien hypertexte, font planter les pages sur le téléphone Alcatel.
- Enfin, les textes longs (ou présupposés longs) sont découpés avec la fonction texte_wap
(la découpe des pages longues est indispensable : à la fois pour le confort de la navigation avec les connexions très lentes du Wap en mode GSM, mais surtout parce que les pages trop longues seront carrément refusées par la plupart des téléphones mobiles). La fonction s’utilise sur le source des éléments (signalés dans les squelettes par une astérisque), ainsi :
[(#TEXTE*|texte_wap)]
Les textes sont découpés selon leurs paragraphes, pour éviter les complications liées aux balises mal fermées/mal ouvertes. Si le texte est long, il est découpé automatiquement en plusieurs pages, et les liens « page suivante » et « page précédente » sont insérés si nécessaires (directement par la fonction, il n’y a rien à faire d’autre que faire passer le texte par la fonction texte_wap
).
Notez que le texte résultant est toujours entouré, grâce à la fonction, de balises <p>
et </p>
. Il ne faut donc surtout pas utiliser la mention :
// Ne surtout pas faire:
[<p>(#TEXTE*|texte_wap)</p>]
qui risque de créer des paragraphes à l’intérieur de paragraphes (ça fait planter le mobile Alcatel).
Limites avérées ou possibles
— Si les textes de votre site sont réalisés avec une tripotée de balises HTML insérées à la main (par exemple un copier-coller à partir d’un autre logiciel), les résultats risquent d’être folkloriques.
— Les balises très spécifiques de SPIP (tableaux, poésie, code source) ne sont pas prises en compte par nettoyer_wap
; dans ce cas, résultats bizarres à attendre...
— Ces pages mériteraient d’être testées avec différents charsets. Théoriquement, le WML gère les charsets (puisqu’on le passe en définition du XML en début de page) ; dans la pratique, quels charsets sont réellement interprétés par les téléphones est une autre question...
— Les clients qui comprennent à la fois le x-html et le WML (certains « smartphones » récents, sans doute) se voient imposer la visite en WML.
— Les adresses « suivant » /« précédent » créées pour découper les textes longs et pour passer d’un page de liste à l’autre contiennent une bidouille propre au xhtml : l’espuerlète (&
) est remplacée par son codage &
à l’intérieur même de l’URL ; sans cela, les liens hypertexte ne fonctionnent pas sur le téléphone Alcatel (l’espuerlète suivi de la variable PHP debut_articles
par exemple étant interprété comme un caractère erroné &debut
...). En revanche, dans les liens insérés manuellement à l’intérieur des articles, ces URL ne sont pas corrigées.
Discussions par date d’activité
19 discussions
ça ne marche pas !
en plus depuis que j’ai apporté les modifications le site php (html) lui aussi ne fonctionne pas !
il me montre une parse erreur !
Parse error : parse error in /home/ffs/public_html/sommaire.php3 on line 1
quelqu’un sait pourquoi et comment faire pour réparer et utiliser le spip-wap !
Répondre à ce message
Cela fonctionne avec un panasonic X60
Arghh, cela ne fonctionne plus.
Je n’arrive plus à lire ni le bloog, ni Uzine Avec mon X60 !!!
C’est dommage ca fonctionnait pourtant bien avant l’été.
C’est arrivé à d’autres ce changement subit : le téléphone se bloque et dit « contenu invalide » .
Répondre à ce message
Merci ! J’ai pu adapter le code à mon site.
Pour tester, j’ai utilisé la rubrique « tester sur mon mobile » du site : http://www.bewoopi.com/horde/imp/
Tjos :-))
Répondre à ce message
Install rapide et sans souci de mon cote. Super boulot !
Seul souci apercu, les œ ne passent pas, on voit un rectangle blanc a la place...
(SAGEM myX5)
Remplace ton œ par & # 339 ; (sans espace)
D’une maniere generale il vaut mieux pour un contenu francais faire :
et DOCTYPE wml PUBLIC « -//WAPFORUM//DTD WML 1.1//EN » "http://www.wapforum.org/DTD/wml_1.1.xml
et encoder tous les caracteres « francais » par des &#.... de #161 a #255 + des #339 .....
http://www.w3.org/TR/REC-html40/sgml/entities.html pour les principaux
Répondre à ce message
bonsoir,
Un grand bravo pour le script, mais chez moi il ne fonctionne pas
sur un mobile il m’affiche pas le bon contenu et avec winwap il m’affiche ceci :
Not wml content :
[Content Preview]
-//WAPFORUM//DTD WML 1.1//EN » "http://www.wapforum.org/DTD/wml_1.1.xml">
----------
destination cyber
----------
> Dernières brèves
Dernier ajout : 24 mars
> Derniers articles
Dernier ajout : 13 avril
> Rubriques
Site réalisé avec SPIP
Dernières brèves
----------
+ 24 mars
Les affaires reprennent !
+ 24 mars
Asus prévoit un disque dur Wi-fi pour mai
+ 24 mars
Windows Longhorn très gourmand ?
+ 24 mars
Quand la Fox distribue des films pirates
+ 15 janvier
Prudential va céder sa banque en ligne Egg
< Accueil du site
Articles les plus récents
----------
+ 13 avril, par fanch
Un portail internet sud-coréen poursuit Microsoft
+ 13 avril, par fanch
La guerre contre le spam n’a fini de faire couler de l’encre
+ 13 avril, par fanch
Microsoft a réglé son différend de licences avec InterTrust
+ 13 avril, par fanch
Droit du travail : les syndicats peuvent désormais utiliser l’intranet de l’entreprise
+ 13 avril, par fanch
Départements innovants : ça coince du côté des Conseils généraux
< Accueil du site
Rubriques
----------
> 01. Informations
> 02. Forum
> 03. FAQ
> 04. Annonces
> 05. ADSL
> 06. Hackers
> 07. Matos
> 08. Sécurité
> 09. Bric à Brac
> 10. Economia
> 11. Médias
> 12. E-Droit
> 13. Logiciels
> 16. Jeux MAC
> 17. Jeux PC
< Accueil du site
[End]
avez-vous une idée du probleme.
En vous remerciant.
Répondre à ce message
Ca marche pour moi aussi a ceci près que mon Ericsson T3OO me renvoit un message d’erreur sur tous les sites Spip testés (uzine...) « Your client is not allowed to access the requested object ».
Si quelqun connait les specificités de quelques constructeurs je suis preneur.
Quand je teste avec ma sim sur un autre portable (samsung A800)ca fonctionne au poil.
Bravo
Répondre à ce message
En ce qui me concerne, le site est tout à fait compatible avec mon SonyEricsson T230.
Toutefois, le squelette du site gére mal les articles post-datés à paraître,puisque ceux-ci sont déjà en ligne... alors qu’ils ne devrait pas l’être
Http://net-passions.org : une adresse web ou wap
Répondre à ce message
J’ai testé ces scripts pour un site dont je m’occupe (http://www.francia.org.ve/index.php3)... Et tout a fonctionné immédiatement, et sans aucun problème !
Bravo, et merci...
Répondre à ce message
chez moi ça ne fonctionne pas. J’ai mis en place les fichiers du zip et lorsque j’essaie de me connecter par mon wap il m’affiche : accès interdit pour plus d’information veuillez contacter votre service client (8). Adresse du site http://www.sus.asso.fr
Nota : avec le site uzine.net ça marche impeccable ...
Hum... Effectivement, par l’adresse de la racine, ça ne balance pas le header (indiquant que le contenu est du WML).
En revanche, en allant à l’adresse sommaire.php3 :
http://www.sus.asso.fr/sommaire.php3
ça s’affiche correctement.
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |