Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2012-08-21 17:32:18

Alain091
Membre
Inscription : 2012-08-21

Widget Pages et version 2.4.4

Je suis en version 2.4.4 et il apparaît que la liste des pages ne s'affiche plus dans la zone de navigation.

Il apparaît que mes essais de modificationsde position des widgets (pages) n'ont pas marché.

Est-ce un constat connu ? est-ce lié au widget pages ?

Comment affiché une liste des pages existantes dans un widget de la navigation ?

Hors ligne

#2 2012-08-21 19:23:41

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Widget Pages et version 2.4.4

Bonjour & Bienvenue,

Non, pas qu'on sache…

- Est-ce que cela se produit avec le widget "Pages" ou d'autres aussi ?
- Quel navigateur utilises-tu ?

Hors ligne

#3 2012-08-21 21:28:14

Alain091
Membre
Inscription : 2012-08-21

Re : Widget Pages et version 2.4.4

Je ne le constate qu'avec Pages

Les navigateurs sont FF et Chrome.

Je n'ai pas pu aller très loin dans mes investigations car l'architecture logicielle nécessite d'y consacrer un temps que je n'ai pas.

Hors ligne

#4 2012-08-21 21:35:31

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Widget Pages et version 2.4.4

Je viens de faire le test avec FF. Pas de soucis. Le mieux c'est de vider tes caches navigateurs ainsi que celui de Dotclear (Extensions > Maintenance > Vider le cache des templates)

Hors ligne

#5 2012-08-22 17:48:49

Alain091
Membre
Inscription : 2012-08-21

Re : Widget Pages et version 2.4.4

Merci pour cette réponse rapide qui m'incite à chercher des causes dans les caches et non pas un bug dans une nouvelle version;

Hors ligne

#6 2012-08-23 19:52:05

Alain091
Membre
Inscription : 2012-08-21

Re : Widget Pages et version 2.4.4

Après quelques recherches complémentaires, ce n'est pas un problème de cache; Cela vient de la version php 5.1 qui est celle de Free mon hébergeur.

Il apparait que dans getPosts, mon script produit une requête SQL qui se termine par limit 0. ce qui conduit à ne jamais avoir de réponse.

cette limite est ajoutée car dans un test : empty($params[limit]) est vrai avec une valeur de 0

=>cela proviendrait d'un bug dans le traitement des objets arrayObject dans PHP version 5.1

Les versions suivantes ne paraissent pas impactées.

J'ai donc patché le script pour ajouter un test complémentaire pour vérifier explicitement que le contenu de la valeur est strictement positif et là tout marche bien.

Petite question: l'utilisation des objets arrayObjects apporte-t-il vraiment beaucoup d'avantages par rapport aux inconvénients constatés sur certaines version ?

Remarque: dans la requete SQL il apparait que l'usage de LEFT OUTER JOIN est compliqué par rapport au besoin d'avoir des infos sur la catégorie en balayant les posts. Je suggère de remplacer par : LEFT JOIN.

De plus les pages n'ont pas de catégories, ce serait pas mal d'en tenir compte dans la requête.

Hors ligne

#7 2012-09-02 14:12:23

dedius
Membre
Inscription : 2012-09-02

Re : Widget Pages et version 2.4.4

Bonjour,

J'ai le même soucis avec dotclear 2.4.4 hébergé par free, avec les plugins pages 1.1.1 mais aussi avec pagesStatique 0.1.
Je ne connais pas le langage php, aussi, auriez-vous l'hamabilité de me communiquer le "patch" que vous avez mis au point ?

Merci!

Hors ligne

#8 2012-09-07 19:56:38

Alain091
Membre
Inscription : 2012-08-21

Re : Widget Pages et version 2.4.4

ce n'est peut-être pas la solution "officielle" mais cela marche sur mon site :

[-] ligne supprimée
[+] ligne ajoutée

dans dotclear_test\inc\core

Index: class.dc.blog.php

===================================================================
--- class.dc.blog.php	(revision 483)
+++ class.dc.blog.php	(working copy)
@@ -709,7 +709,7 @@
 		$strReq .=
 		'FROM '.$this->prefix.'post P '.
 		'INNER JOIN '.$this->prefix.'user U ON U.user_id = P.user_id '.
-		'LEFT OUTER JOIN '.$this->prefix.'category C ON P.cat_id = C.cat_id ';
+		'LEFT JOIN '.$this->prefix.'category C ON P.cat_id = C.cat_id ';
 		
 		if (!empty($params['from'])) {
 			$strReq .= $params['from'].' ';
@@ -845,7 +845,7 @@
 			}
 		}
 		
-		if (!$count_only && !empty($params['limit'])) {
+		if (!$count_only && !empty($params['limit']) && (intval($params['limit']) > 0)) {
 			$strReq .= $this->con->limit($params['limit']);
 		}

Hors ligne

#9 2012-09-07 21:05:49

dedius
Membre
Inscription : 2012-09-02

Re : Widget Pages et version 2.4.4

Bonsoir, j'ai fait la modif et cela a résolu également mon problème.
Merci beaucoup !

Hors ligne

#10 2012-09-17 02:13:59

Freya
Membre
Inscription : 2012-09-17

Re : Widget Pages et version 2.4.4

Bonsoir,

Je ne sais pas trop si mon problème y ressemble mais ça a l'air;

En tout cas, je viens d'installer Dotclear 2.4.4 (fresh install) et lorsque je clique sur "Widgets de présentation" qui est censé menu au lien /admin/plugin.php?p=widgets, cela me renvoie vers l'erreur "Remote server or file not found" du navigateur.
Donc apparemment, ça ne trouverait pas le dossier Widgets ou bien ?

J'ai donc effacé le dossier Widgets du répertoire admin/plugins avant de reupload le dossier Widgets (on sait jamais) que j'ai eu avec mon archive d'installation Dotclear 2.4.4 mais rien n'y fait... toujours la même erreur du navigateur.

Alors, par dépit, j'ai déinstallé Widgets et j'ai installé Translatedwidgets (trouvé sur dotaddict) et là... le lien  admin/plugin.php?p=widgets fonctionne, j'ai l'interface mais les widgets n'apparaissent pas du tout sur le blog... donc ça revient un peu au même :/

Ma question serait donc : qu'est-ce qui pourrait causer l'impossibilité d'accéder à la page d'administration des Widgets ?
Et si le problème est le même que celui du posteur initial, dois-je juste remplacer manuellement les lignes correspondantes dans le fichier class.dc.blog.php ? (parce que ça dit de trouver par exemple @@ -709,7 pour remplacer par +709,7 @@ mais je n'arrive pas trouver ces valeurs...)
Enfin bref, si c'est le même problème, comment "patcher" son fichier php proprement ?

Hors ligne

#11 2012-09-17 04:58:57

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

Re : Widget Pages et version 2.4.4

Bonjour, et bienvenue ici...

Freya a écrit :

Et si le problème est le même que celui du posteur initial, dois-je juste remplacer manuellement les lignes correspondantes dans le fichier class.dc.blog.php ? (parce que ça dit de trouver par exemple @@ -709,7 pour remplacer par +709,7 @@ mais je n'arrive pas trouver ces valeurs...)
Enfin bref, si c'est le même problème, comment "patcher" son fichier php proprement ?

Je n'ai pas de réponse concernant ton pb d'affichage des widgets. Par contre, si j'ai bien compris le "langage" du patch proposé plus haut, tu n'aurais qu'à remplacer chaque ligne précédée de "-" par la suivante, celle précédée de "+"...

Hors ligne

#12 2012-10-10 12:53:05

mbellemin
Membre
Inscription : 2012-10-10
Site Web

Re : Widget Pages et version 2.4.4

Bonjour,

Je viens de découvrir que dans mon interface d'administration tous les plugins fonctionnent correctement à l'exception de "widgets de présentation". Dans FF il m'affiche une superbe page blanche. Dans IE il me renvoie une erreur http 500.

Sur mes blogs l'affichage des widgets est correct. Enfin, conforme à ce que je voulais quand j'avais accès à leur configuration!

J'ai fait les modifs préconisées dans class.dc.blog.php sans que la situation n'évolue positivement.

Si vous avez des suggestions, je suis preneur!

Hors ligne

#13 2012-10-11 08:07:13

mbellemin
Membre
Inscription : 2012-10-10
Site Web

Re : Widget Pages et version 2.4.4

Bonjour,

Complément d'information.

J'ai trouvé dans le log des erreurs php de mon serveur les entrées suivantes:

[11-Oct-2012 07:57:58 UTC] PHP Fatal error:  Call-time pass-by-reference has been removed in /srv/data/web/vhosts/blog.maximebellemin.com/htdocs/dotclear/plugins/widgets/index.php on line 327
[11-Oct-2012 07:57:58 UTC] PHP Stack trace:
[11-Oct-2012 07:57:58 UTC] PHP   1. {main}() /srv/data/web/vhosts/blog.maximebellemin.com/htdocs/dotclear/admin/plugin.php:0

La ligne 327 de /widgets/index.php est la suivante:

		'<div class="widgetSettings">'.$w->formSettings($iname,&$j).'</div>'.

Au milieu de ce bloc:

	foreach ($widgets->elements() as $w)
	{
		$iname = 'w['.$pr.']['.$i.']';
		
		$res .=
		'<div>'.form::hidden(array($iname.'[id]'),html::escapeHTML($w->id())).
		'<p class="widget-name">'.form::field(array($iname.'[order]'),2,3,(string) $i,'js-hide','',0,'title="'.__('order').'"').' '.
		$w->name().'</p>'.
		'<p class="removeWidget js-remove"><label class="classic">'.
		form::checkbox(array($iname.'[_rem]'),'1',0).' '.__('Remove widget').
		'</label></p>'.
		'<div class="widgetSettings">'.$w->formSettings($iname,&$j).'</div>'.
		'</div>';
		
		$i++;
		$j++;
	}

Si cela parle à quelqu'un...

Et j'ai bien purgé tous les caches possibles, sans effet.

Hors ligne

#14 2012-10-11 08:35:43

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

Re : Widget Pages et version 2.4.4

mbellemin a écrit :

Si cela parle à quelqu'un...

Oui... http://dev.dotclear.org/2.0/ticket/1337 et http://dev.dotclear.org/2.0/changeset/864.

Une correction qui est passée à l'as lors de la maj en 2.4.4 et qui sera prise en compte dans la prochaine version de DC2. Tu peux faire la modif, si tu t'en sens capable et après sauvegarde du fichier originel (pour le remettre en place juste avant la prochaine mise à jour automatique).

Hors ligne

#15 2012-10-11 09:47:26

mbellemin
Membre
Inscription : 2012-10-10
Site Web

Re : Widget Pages et version 2.4.4

Magnifique!

Merci beaucoup.

Comme cela fonctionne, je vais laisser la modif faite dans class.dc.blog.php. Je ferai un essai plus tard en restaurant le fichier d'origine (vu que je n'avais pas de souci pour administrer les pages) pour voir si cette modif reste nécessaire.

Hors ligne

#16 2012-10-11 16:43:19

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

Re : Widget Pages et version 2.4.4

Cette modif rend le bouzin compatible avec un PHP récent genre 5.4.x

Hors ligne

#17 2012-11-11 12:23:35

Alain091
Membre
Inscription : 2012-08-21

Re : Widget Pages et version 2.4.4

J'ai remplacé mon patch par le suivant car j'ai constaté que la transformation $params=new arrayobject($params) n'était pas utile dans le corps de la fonction.

Index: class.dc.blog.php
===================================================================
--- class.dc.blog.php	(revision 518)
+++ class.dc.blog.php	(working copy)
@@ -670,8 +670,8 @@
 	public function getPosts($params=array(),$count_only=false)
 	{
 		# --BEHAVIOR-- coreBlogBeforeGetPosts
-		$params = new ArrayObject($params);
-		$this->core->callBehavior('coreBlogBeforeGetPosts',$params);
+		$params_object = new ArrayObject($params);
+		$this->core->callBehavior('coreBlogBeforeGetPosts',$params_object);
 
 		if ($count_only)
 		{
@@ -819,7 +819,7 @@
 			{
 				# --BEHAVIOR-- corePostSearch
 				if ($this->core->hasBehavior('corePostSearch')) {
-					$this->core->callBehavior('corePostSearch',$this->core,array(&$words,&$strReq,&$params));
+					$this->core->callBehavior('corePostSearch',$this->core,array(&$words,&$strReq,&$params_object));
 				}
 				
 				if ($words)
@@ -845,8 +845,8 @@
 			}
 		}
 
-		if (!$count_only && !empty($params['limit']) && (intval($params['limit']) > 0)) {
-			$strReq .= $this->con->limit($params['limit']);
+		if (!$count_only && !empty($params['limit']) ) {
+            $strReq .= $this->con->limit($params['limit']);
 		}
 		
 		if (!empty($params['sql_only'])) {

Hors ligne

#18 2012-11-12 13:05:09

mrlaplume
Membre
Inscription : 2012-11-12

Re : Widget Pages et version 2.4.4

Bonjour,

Merci de votre fonction, mais je trouve bien le fichier class.dc.blog.php dans inc/core mais je ne sais pas où faire la modif que vous indiquez. Je n'arrive pas à faire afficher le widget page, alors que ça marche en local. Je suis hébérgé chez nuxit.

Hors ligne

#19 2012-11-12 13:38:08

Lomalarch
Responsable du photocopieur
Lieu : Colombes (92)
Inscription : 2006-05-02
Site Web

Re : Widget Pages et version 2.4.4

Il te faut, dans le fichier, avec un éditeur de texte, trouver les lignes marquées d’un - dans le fichier ci-dessus, et mettre à la place le contenu des lignes précédées d’un + ;-)


RTFM attitude : https://fr.dotclear.org/documentation/2.0
Le chantier tips, tutos et astuces : http://tips.dotaddict.org/
Rien nulle part??? une petite recherche sul’ forum, alors?: https://forum.dotclear.org/search.php ?

Hors ligne

#20 2012-11-12 15:59:32

mrlaplume
Membre
Inscription : 2012-11-12

Re : Widget Pages et version 2.4.4

Oui j'ai bien compris, mais même en cherchant avec notepad ++ je ne trouve pas les lignes à remplacer, et je suis en 2.4.4, c'est ce que je pige pas :)

Hors ligne

#21 2012-11-12 18:51:20

Lomalarch
Responsable du photocopieur
Lieu : Colombes (92)
Inscription : 2006-05-02
Site Web

Re : Widget Pages et version 2.4.4

Tu as les numéros de ligne, pour t’aider : la première ligne citée est la 819, le second bloc commence à 845 ;-)


RTFM attitude : https://fr.dotclear.org/documentation/2.0
Le chantier tips, tutos et astuces : http://tips.dotaddict.org/
Rien nulle part??? une petite recherche sul’ forum, alors?: https://forum.dotclear.org/search.php ?

Hors ligne

#22 2012-11-12 22:39:43

mrlaplume
Membre
Inscription : 2012-11-12

Re : Widget Pages et version 2.4.4

D'accord merci. Sinon j'ai trouvé une autre solution. J'ai paramétré un menu simple avec seulement le widget page. J'ai ensuite nommé mon widget "page" justement. Le seul soucis, c'est qu'il faut réactualiser le menu à chaque ajout de page, mais vu que le nombre de pages ne va pas beaucoup bouger dans mon blog, ce n'est pas gênant.

Dernière modification par mrlaplume (2012-11-12 22:41:08)

Hors ligne

#23 2014-07-09 13:51:43

arielle
Membre
Inscription : 2014-06-07
Site Web

Re : Widget Pages et version 2.4.4

Merci à Alain. C'est diablement efficace.

Hors ligne

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

Pied de page des forums

Sites map