Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2008-01-21 14:46:31

fix
Membre
Inscription : 2005-01-20
Site Web

Pagination, erreur 404, traduction et URLS modifiées

Bonjour,

J'ai quelques questions en vrac...

1. Si je modifie une url dans la barre d'adresse en ajoutant un numéro de page qui n'existe pas, j'aboutis à une page blanche. Ne serait-il pas pluslogique de renvoyer une erreur 404 ? Cela est-il possible ?
Exemple d'url qui existe sur mon blog :
http://sxjpl.free.fr/blog/page/2
Une url qui n'existe pas :
http://sxjpl.free.fr/blog/page/666
Y a-t-il un moyen de détecter que la page n'existe pas et de renvoyer une erreur 404 ?

2. Pour gérer les pages 404, j'ai cela dans mon .htaccess :
ErrorDocument 404 /blog/erreur
La page erreur n'existe pas dans mon thème, mais pourtant c'est bien la page 404.php qui s'affiche. Je crois que c'est amalgame qui avait proposé cette ligne de code, mais je n'en suis plus sûr. Quelqu'un pourrait-il m'expliquer comment cela fonctionne ?

3. Je ne parviens pas à trouver la fonction qui gère les traductions d'expressions (les {{tpl:lang pouêtt}})... Or, je cherche dans une fonction de mon fichier _public.php à traduire une expression. Et comme on ne peut pas imbriquer les {{tpl}}, je pensais passer par un appel direct à la fonction concernée. À condition de savoir laquelle. Une idée ?

4. J'ai modifié les urls de mon thème. Ainsi pour les tags par exemple, j'accède à un tag particulier par une url du type /tag/nomdutag, et j'accède à tous les tags en ne mettant pas de nom de tag, avec une url du type /tag tout simplement.
L'ennui, c'est que j'ai dû modifier les fichiers /plugins/metadata/_prepend.php et /plugins/metadata/_public.php. Y a-t-il moyen d'éviter cela ? En les recopiant dans mon thème pour les modifier, par exemple ? Ou bien est-ce que je peux coder de nouvelles fonctions dans mon fichier _public.php qui auraient la préférence sur celles des fichiers d'origine ?

Hors ligne

#2 2008-01-22 06:39:18

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Pagination, erreur 404, traduction et URLS modifiées

Je réponds au point -3-
il semble qu'il suffise d'insérer dans le php à l'endroit ad-hoc la constante $GLOBALS["__l10n"]["la phrase en anglais"] pour obtenir en retour la même phrase en français, si elle existe...
Découverte toute neuve dans le cadre de ma recherche pour ça ;-)

Hors ligne

#3 2008-01-22 08:08:33

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Pagination, erreur 404, traduction et URLS modifiées

Pfffffffffffff... Et dire que j'ai passé trois heures à chercher une autre solution... Je vais pouvoir revenir à quelque chose d'un peu plus simple pour ma pagination :) Merci beaucoup !
Peut-être serait-il intéressant de partager ce nouveau type de pagination dans moreTpl ?

Tant que j'y suis, j'ajoute une autre question :
5. Pourquoi la page archive_month.php n'est-elle pas paginée ?

Hors ligne

#4 2008-01-22 11:35:32

Dzana
Membre
Inscription : 2007-07-22
Site Web

Re : Pagination, erreur 404, traduction et URLS modifiées

Hello Fix,

Pour le point 1 (renvoyer une erreur 404 quand l'article n'existe pas) je pense que c'est impossible, car il faudrait pour cela obliger le script à vérifier si l'article existe avant même d'envoyer la page, or cette vérification se fait au moment de l'affichage du billet, dans le corps de la page (le header est donc déjà envoyé depuis longtemps).

Pour le point 2 (page d'erreur personnalisée) il me semble avoir vu quelque part, dans l'interface d'administration de DC2 (que je n'ai que très peu utilisée car je suis sous DC1), qu'il existait déjà une page d'erreur tout prête, que l'administrateur peut d'ailleurs éditer.

Pour le point 4 je n'ai pas tout compris, mais d'une manière générale, dis toi bien qu'à partir du moment où tu modifies les urls de ton blog, obligatoirement, il y beaucoup de modifications à faire en amont...

Dzana

Hors ligne

#5 2008-01-22 11:56:18

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Pagination, erreur 404, traduction et URLS modifiées

Dzana a écrit :

Hello Fix,

Hello !

Dzana a écrit :

cette vérification se fait au moment de l'affichage du billet

C'est bien ce que je pensais... Tant pis.

Dzana a écrit :

il existait déjà une page d'erreur tout prête

Tout à fait... Et elle s'appelle 404.php,  et on peut l'éditer tout à loisir. Mas question était une demande d'explication sur la ligne "ErrorDocument 404 /blog/erreur" de mon .htaccess, que j'ai recopiée depuis ce forum, mais que je ne suis même plus capable de comprendre. J'aurais voulu qu'on m'en explique le fonctionnement : pourquoi une telle ligne redirige-t-elle bien vers la page 404.php de mon thème.

Dzana a écrit :

il y beaucoup de modifications à faire en amont

2 ou 3 lignes pour ce que j'ai modifié. Mais j'aurais voulu savoir si je pouvais faire ça dans mon thème par un moyen quelconque (en y recopiant certains fichiers, ou en créant certaines fonctions dans mon _public.php) plutôt que de modifier directement les fichiers de dotclear.

Donc, les questions restent ouvertes...
Merci quand même Dzana ! (Au fait, j'ai découvert ton blog hier : j'aime beaucoup le thème que tu as fait... sans parler du contenu très intéressant. Une lecture que je recommanderais à tous ! J'y ai passé un très bon moment :)

Hors ligne

#6 2008-01-22 12:04:53

Kozlika
Modo dcTeam
Inscription : 2004-05-08
Site Web

Re : Pagination, erreur 404, traduction et URLS modifiées

fix a écrit :

Peut-être serait-il intéressant de partager ce nouveau type de pagination dans moreTpl ?

http://wiki.kozlika.org/geekeries:moretpl yaka ;)


La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?

Hors ligne

#7 2008-01-22 23:52:06

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Pagination, erreur 404, traduction et URLS modifiées

fix a écrit :

4. J'ai modifié les urls de mon thème. [...] est-ce que je peux coder de nouvelles fonctions dans mon fichier _public.php qui auraient la préférence sur celles des fichiers d'origine ?

Oui ! C'est possible... et c'est facile !

1. On peut recoder des urls par une ligne du genre :

$core->url->register('tag','tags','^tags/(.+)$',array('urlMetadata','tag'));

placée dans le fichier _public.php du thème actif, et cette ligne remplacera celle existante dans le code de dotclear.

2. Mieux : on peut remplacer des fonctions existantes !
Je voulais remplacer la fonction archive de la class dcUrlHandlers, pour lui ajouter la possibilité d'afficher une page d'archives par année (et non plus seulement une par mois).
Toujours dans le _public.php du thème actif, il suffit d'ajouter la ligne :

$core->url->register('archive','archives','^archives(/.+)?$',array('dcMesUrls','archive'));

et désormais, tous les appels à la fonction archive seront remplacés par ma fonction personnalisée !
Il faut la définir comme suit :

class dcMesUrls extends dcUrlHandlers {
	public static function archive($args)
	{
	bla bla bla
	}
}

Ce qui veut dire qu'on peut tout gérer depuis _public.php, sans modifier une seule ligne du code. Ce qui me facilitera grandement les mises à jour :)
Du coup, c'est fou à quel point on peut personnaliser son blog. Par exemple on pourrait facilement avoir des urls proches de celles de WP, avec tous les avantages de Dotclear :)

Hors ligne

#8 2008-01-23 00:01:00

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Pagination, erreur 404, traduction et URLS modifiées

Ne me restent plus que les points 2 et 5 - qui ne sont pas des problèmes en soi, mais juste des questions :)

Si Mirovinben est d'accord...
En fait, chez moi, j'ai repris le code de Mirovinben donné ici, en le modifiant légèrement :
1. Je trouve les liens "<" et ">" un peu ambigus. Je pensais au départ qu'il s'agissait de "page précédente" (au singulier) et "page suivante". En fait, si j'ai bien compris, ce n'est pas le cas : il s'agit plutôt de sauter au bloc de pages précédent ou suivant, me semble-t-il... En tout cas je les ai supprimés de mon thème.
2. J'ai ajouté la structure en liste <ul>.
3. J'ai ajouté la possibilité de passer le nombre de pages maximum en paramètre, plutôt que de le fixer à 10 par défaut.

Hors ligne

#9 2008-01-23 06:37:15

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Pagination, erreur 404, traduction et URLS modifiées

Mirovinben d'accord pour quoi ?

MoreTpl est une initiative de Kozlika, j'y ai juste apporté une toute petite participation pour TagEntriesCount car j'en avais besoin.

Selon le principe du monde open source, mes contributions diverses et (a)variées proposées ici sont à la disposition de la communauté. D'autant plus à disposition qu'elles sont souvent une variante/adaptation de ce qui existe déjà.

Donc vous faites comme vous le sentez. Avec ou sans mention de ma participation. Seule contrainte : communiquer vos propres améliorations.

Hors ligne

#10 2008-01-23 07:38:11

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Pagination, erreur 404, traduction et URLS modifiées

D'accord pour que j'y mette, moi, son code à lui. Pardi.

Hors ligne

#11 2008-01-23 07:41:07

Kozlika
Modo dcTeam
Inscription : 2004-05-08
Site Web

Re : Pagination, erreur 404, traduction et URLS modifiées

L'objectif de ce wiki c'est de réunir tout un tas de fonctions personnalisées pour éviter à tout le monde de réinventer la roue à chaque fois. Faut pas hésiter !


La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map