8791 sujets

Développement web côté serveur, CMS

Bonjour,
Voici un code que j'utilise pour le développement de mon site. J'utilise la variable "stripe" pour ajouter une classe "last" à mon dernier bloc. Dans mes précédents design, je n'avais que deux blocs par ligne. Du coup, je pouvais grâce à cette class "last" mettre un margin right de 0, afin que le 2eme bloc ne descende pas à la ligne.
Sur mon design actuel, j'ai 3 blocs par ligne. Il faudrait donc que je puisse ajouter une class "last" sur tous mes 3ème blocs et je ne vois pas comment modifier ma petite fonction pour y arriver.
Merci par avance

<div class="vign-activites-wrap">
                     <ul>
                        <?php 
                            $slug = get_post( $post )->post_name;
                            $home = new WP_query(array(
                              
                                                        'post_type' => 'activites',
                                                        'posts_per_page' => 21,
                                                        'order' => 'ASC',

                        ));
                        if($home->have_posts()) : while ($home->have_posts()) : $home->the_post(); ?>
                       <?php $stripe = ($stripe == ' ') ? 'last' : ' ' ; ?>
                        <li class="zoomactivites">
                           <div class="activites_big_img <?php echo $stripe ?>">
                              <a href="<?php echo get_post_meta($post->ID, '_urlhome', true) ?>"><img src="<?php $thumb_id = get_post_thumbnail_id(); $thumb_url = wp_get_attachment_image_src($thumb_id,'medium', true); if(has_post_thumbnail()){echo $thumb_url[0];; } ?>" />
                              <h3 class="homecaption"><?php the_title();?></h3>
                              </a>
                           </div><!-- end div .article_big_img -->
                           
                                             </li>

                        <?php endwhile; endif; wp_reset_query(); ?>                        
                    </ul>                    
</div><!-- end div vignettes Activités -->
Mon Dieu ! Du php pour ajouter une classe en vue de modifier une marge ! Mais pourquoi ne pas cibler l'élément en css ? Les sélecteurs ne manquent pas...

Exemple n°1 :
li + li + li {
    // Ciblera le troisième li d'une liste
}


Exemple n°2 (solution alternative, OK depuis IE7) :
li:nth-child(3n+1) {
    // Ciblera tous les troisième li d'une liste
}


Enfin, Exemple n°3 :
li:last-child {
    // Ciblera le dernier li d'une liste
}
C'est original !!!

C'est quoi l'idée derrière ce mécanisme ? Quel est la contrainte qui t'obliges à utiliser PHP en lieu et place du CSS qui serais là, parfait dans ce rôle ?
Modifié par MagicCarpet (11 Feb 2015 - 14:44)
ah ah en temps que dev je vais déjà répondre a tout ceux qui estime que le css est mieux.... que le php Smiley smile

vous n'êtes pas sans savoir que le php construit la page avant de l'envoyer au navigateur Smiley smile

alors oui bien sur le css peut gérer ce genre d'affichage MAIS seulement après réception du HTML.

L'avantage si il y en a un ici est positionner la class AVANT d'envoyer le html, puisque le PHP le crée cet affichage.

SI il y a un changment de ligne via le php pour la remontée bdd lors de l'affichage.. oui c'est avantageux de positionner la class à ce moment là.

Bon sinon

voici le code qui pose la class une fois sur deux..
$stripe = ($stripe == ' ') ? 'last' : ' ' ;


c'est un simple if/else qui dit si c'est vide on met sinon on met pas...

va falloir compliquer les choses pour le faire tous les 3 items

alors a vue de nez (peux pas tester)


$i=0;
if($home->have_posts()) : while ($home->have_posts()) : $home->the_post(); 
if($i ==2){
 $stripe='last';
$i=0;
}else{
 $stripe='';
$i++;
}

?>


j'explique

on initialise une variable $i à 0
si on est pas arrivé au nombre de 3 tours donc $i <2 on met pas la class
et on continue d'augmenter la valeur de $i

si $i est égale à 2 (donc 3 tours) la 3eme image
là on met la class 'last' et on remet $i à 0 pour les prochains tours.

simple

si tu passes à 4 images ou 5 ou plus ou meme moins à 2 il te suffit de changer le if.
pchlj a écrit :
ah ah en temps que dev je vais déjà répondre a tout ceux qui estime que le css est mieux.... que le php Smiley smile

vous n'êtes pas sans savoir que le php construit la page avant de l'envoyer au navigateur Smiley smile

alors oui bien sur le css peut gérer ce genre d'affichage MAIS seulement après réception du HTML.

L'avantage si il y en a un ici est positionner la class AVANT d'envoyer le html, puisque le PHP le crée cet affichage.

SI il y a un changment de ligne via le php pour la remontée bdd lors de l'affichage.. oui c'est avantageux de positionner la class à ce moment là.


Alors je répondrais que le CSS n'est pas mieux que le PHP, tout comme le PHP n'est pas mieux que le CSS. Ce sont deux langages complètement différents, chacun à sa fonction qui est très différente de l'autre. Donc la comparaison n'est pas possible.

Après, il me semble que ce "montage" est absurde. Balancer au tant de code dans du HTML "juste" pour choisir une classe ou l'autre à un moment donné me semble t'il serait comparable à vouloir tuer une araignée avec un lance-roquette.

Avec des technologies comme jQuery, Angular et autre, je pense que cet exemple de PHP n'a pas réellement de sens. Cela rends illisible une bonne partie du code, encourage le mix des techno au sein d'un même fichier, rends plus difficile la maintenance, etc.

Si ta préoccupation est la vitesse d'exécution, je ne pense pas non plus que ce soit là qu'il faut chercher.

Bref, j'y vois tout sauf un avantage. Ceci n'est qu'un avis de dev.
Modifié par MagicCarpet (11 Feb 2015 - 18:30)
ah ah magic Smiley smile

oui je suis aussi d'accord avec toi Smiley smile

pas facile a admettre.. masi l'un n'empèche pas l'autre et réciproquement Smiley smile

pour ma part je manage.. je fais aussi du code.. et en code on bosse avec des intégrateurs Smiley smile

là où je vois un avantage au php sur le css c'est dans un cas comme celui ci :

un nombre d'image inconnu (remontée de bdd) un modèle template a nombre indéfini allant de 3 par 3 si genre 2 pages ou 5 par 5 si plus de page.. donc là aussi un affichage indéfini...

LA le php prend tout son sens car lui sait combien il afiche d'image...

Et puis il y a aussi le fait que l'intégrateur en veut pas reprendre le css toute les 3 secodnes parcequ'on passe de 3 images à 5 ou 6 tiens demain on va mettre que 2.. bref.. là aussi UNE class a mettre sur la dernière image laisse au dev le soin de poser la class sur la dernière image de la ligne Smiley smile pas de retouche css donc Smiley smile

voilà c'est un long débat Smiley lol très long Smiley smile et on aura toujours raison l'un ou l'autre..

dreadstock a choisi le php .. donc solution php Smiley smile meme si dans son cas j'avoue que juste un peu de css suffirait Smiley smile ça a pas l'air d'être modifié souvent tout ça Smiley lol
Ouais, dans ce cas là (ou similaire), je peux comprendre la solution PHP.

Ce que je voulais souligner c'est de ne pas partir dans tous les sens sans réfléchir à la conception du site ou de l'App. Après, j'ai rien contre PHP, je ne m'en suis pas servis depuis un moment. J'aime bien ce langage mais il est vrai que le mélange à outrance me fais perdre les dents. Smiley ravi
Lol il est évident que l'on réfléchi avant de faire un site Smiley smile

mais une réflexion d'un jour n'est pas forcément la même 6 mois après Smiley smile
pchlj a écrit :
.. vous n'êtes pas sans savoir que le php construit la page avant de l'envoyer au navigateur Smiley smile
alors oui bien sur le css peut gérer ce genre d'affichage MAIS seulement après réception du HTML.

L'avantage si il y en a un ici est positionner la class AVANT d'envoyer le html, puisque le PHP le crée cet affichage.

Et donc ??? Je code autant en php que j'intègre en css/html et je ne vois toujours pas la logique de ce système.

Bien sûr, le php construit la page, mais c'est au css que reviendra la tâche de créer le rendu final.

Et surtout - contrairement à une époque - le css n'a pas besoin de connaitre à l'avance le nombre d'items à afficher, comme je l'ai signalé plus haut avec les sélecteurs proposés.
Ahh !! excellent ce petit débat !
Je suis d'accord avec vos deux positionnements. Etant plutôt novice, j'ai beaucoup appris et je vous remercie.
En analysant le pour et le contre, j'ai décidé de choisir le CSS. Ces propriétés, je ne les connaissais tout simplement pas, c'est pourquoi j'utilisais PHP.
Donc clairement dans ma situation, je préfére css.
Merci en tout cas !
c'est vendredy Smiley smile on va troller un peu Smiley lol

Bien dread si cela t'arrange passe par le css Smiley lol

je reviens sur notre débat... a t'entendre mon cher olivier Smiley cligne tu ne poses donc AUCUNE class dans ta construction via le php ?? tu fais tout en css après ??? là aussi il faudra m'expliquer l'intérêt Smiley lol Mais je suis certain que ce n'est pas ce que tu fais car nombre de class CSS sont fixe et dédiées à un élément précis et donc autant le poser lors de la construction de l'élément (via HTML ou PHP).

Au final c'est un subtil mélange HTML CSS, mais sachant que le php construit aussi bien l'un que l'autre Smiley cligne ... Oui je fais des css en PHP, rien ne l'empêche et correspond à mes besoins de sites Web 'multisite', plutôt que d'utiliser SAAS ou autre.

Il n'y a pas de logique ! C'est une question de pratique.. et c'est aussi une question pratique.

Les deux solutions sont bonnes... en revanche j'avoue ne pas savoir le résultat en terme de performance.
Donc si on peut élever le débat sur ce point ?? ça m'intéresse car j'utilise aussi bien l'un que l'autre sans jamais m'être posé cette question.
Alors les CSS, ce n'est pas juste une succession de classes que tu va ajouter ou empiler les unes aux autres à chaque fois que tu as un besoin spécifique. Fonctionner comme ça, c'est ne pas réfléchir et c'est travailler comme un pied (pour rester poli).

Une des possibilités, c'est d'utiliser OOCSS, c'est à dire reprendre l'idée de programmation objet et l'appliquer aux CSS, donc de travailler avec des objets. Bootstrap en est un bon exemple.

Dans un de tes messages précédents tu as dis :

un nombre d'image inconnu (remontée de bdd) un modèle template a nombre indéfini allant de 3 par 3 si genre 2 pages ou 5 par 5 si plus de page.. donc là aussi un affichage indéfini...


Je n'ai pas réagis mais en fait, on s'en tape !!! Je veux dire, connaitre ou pas le nombre de photos remonté par la BDD il n'y a pas que PHP qui peut avoir l'info. jQuery / CSS sont tout à fais capable de s'en sortir sans connaitre ce nombre. Et donc d'appliquer une classe en fonction de tel ou tel élément présent si tu veux passer par des mécaniques JS ou prévoir des cas différents avec le CSS. Ce que réponds d'ailleurs Olivier dans son précédent message.

Je ne crois pas à l'usage systématique de PHP mais j'aimerais bien des détails sur ton "site web multi-site". Et quand tu parles de SAAS, je penses que tu avais SASS en tête.

Niveau performance, je n'en sais rien mais je peux dire que moins tu en demande à ton serveur, mieux c'est. Je pense que c'est une loi universelle, donc moins de PHP tu utiliseras mieux tu préserveras ton système.

Il n'y a pas qu'une solution mais toutes ne sont pas bonnes non plus.

J'ajouterais que PHP est un langage serveur, il est là pour s'occuper du "moteur", CSS c'est la partie "jolie", "présentation", et le JS c'est aussi un "moteur" côté client qui vient en renfort ou pour assister le moteur principal, donc comme les fichiers, ne mélangeons pas les couches métiers, à chacun sa merde en quelque sorte Smiley lol
Modifié par MagicCarpet (13 Feb 2015 - 13:54)
Modérateur
pchlj a écrit :
Les deux solutions sont bonnes... en revanche j'avoue ne pas savoir le résultat en terme de performance.
Donc si on peut élever le débat sur ce point ?? ça m'intéresse car j'utilise aussi bien l'un que l'autre sans jamais m'être posé cette question.

En terme de performance, tu peux faire des centaines de tests et passer 2 jours à ça. Mais à mon avis tu trouveras que dans telle circonstance tu gagneras 0.0002s et dans d'autre tu perdras 0.0002s. Sans parler de cache et autre. Sur un point comme celui-ci c'est quasiment un non-débat. Pour faire simple: on s'en cogne.

Ajouter ce genre de classe en php était une pratique très courante et correcte, lorsque c'était à peu près la seule façon de faire. Si depuis des années on étend les possibilités de CSS et de HTML, c'est pas juste «pour faire joli», il y a des raisons à cela: mieux séparer le contenu/la mise en forme sémantique/la mise en forme graphique. Et plus on les sépare proprement, plus ça nous facilite la vie, en terme de méthodologie de travail, de séparation des tâches et de maintenance.

Finalement, la logique est simple (en dehors du support éventuel de IE6 et consorts): si le choix de la présentation en 2,3,x colonnes est purement graphique, et dépendant uniquement de la taille disponible et du goût du graphiste, c'est au CSS seul de gérer cela. Si au contraire cette information est dûe à un choix de l'éditeur des contenus (et donc probablement stocké en db) php doit fournir une classe adaptée (bien qu'une classe sur le conteneur général suffise) car la donnée devient sémantique.
@ magic

oui c'était bien Sass, désolé moi je m'occupe plutôt php JS pas trop css Smiley cligne , c'est pas mon truc le côté joli Smiley lol

Pour en savoir plus sur mon multisite Smiley cligne je travaille, il faut déjà comprendre cette notion multisite.. un CMS en quelque sorte. Il y a un concept, ce concept est vendu à des société tierces qui l'habillent Smiley smile
La on reprend la mouture justement pour quelque chose de "mieux", qui va donc utiliser un moteur de templates, des css globaux et des spécifiques, les couleurs sont par exemple gérés en variable php dans une config site générale Smiley smile donc le css est "complété" par php avant d'être envoyé (sinon il ya aussi l'option css spécifique intégral), pareil pour le JS qui est complété des messages de texte via des variables PHP.

Ceci afin d'être le plus souple possible.

Il faut savoir que ce cms tourne dans sa version actuelle pour 19 sites web en 12 langues dont le chinois.

@ Kusto
Je confirme qu'aujourd'hui le CSS prend largement la main sur l'habillage et c'est tant mieux.


Pour continuer.
J'ai commencé les sites web "PRO" en temps que Directeur technique en 1998 :o avec à l'époque un site de cours de la bourse qui affichait des graphiques des cours en direct sans recharger la page et sans iframe !! c'était de l'usine à gaz de div JS GDPHP etc...
Tout évolue.

Aujourd'hui on en fait plus de site PHP Smiley smile on sépare tout Smiley smile et c'est tant mieux Smiley smile

Toujours dans cette logique de séparation, sur laquelle je travaille en ce moment, cela n'empèche pas d'avoir des templates TOTALEMENT HTML avec des class CSS déjà positionnées, des moteurs PHP pour l'affichage des éléments dynamiques, du Jquery pour les intéractions... Chaque technologie est bonne et je pense par expérience qu'il ne faut pas se dire " je fais tout en CSS, ou tout en Jquery..."

Je me souviens à une époque d'avoir eu des sites TOUT AJAX, avec une seule page une seule div et du rechargement ajax a tout va.... inutile Smiley smile
DU tout HTML avec le php qui écrivait(fwrite) des pages HTML (où est le dynamique là dedans ?)

etc etc

Pour moi la multiplication des techno dans un même ensemble permet plus de souplesse et de réactivité. Voilà tout, et il n'y a pas de meilleure méthode que d'autre.
Je m'insurge sur la réaction de tout le monde au début de ce fil sur : pourquoi du PHP :o
Bah pourquoi pas Smiley smile
Il ne faut pas penser tout css non plus, il faut savoir choisir ce qui est le mieux dans le cas précis de ce que l'on veut faire Smiley smile

Et puis ça dépend aussi du niveau du "dev" moi je suis une nouille en css, c'est pour ça que je bosse avec des intégrateurs Smiley smile Pour moi faire un site se résume souvent à mettre beaucoup de php ou de js et de faire du css2 et encore Smiley cligne mais c'est par manque de connaissance Smiley smile

Et puis ce n'est pas mon boulot de connaitre par coeur toutes les technos Smiley cligne

j'aime bien ce débat Smiley smile et il reste sans animosité Smiley lol Smiley cligne
pchlj a écrit :
Je m'insurge sur la réaction de tout le monde au début de ce fil sur : pourquoi du PHP :o

Au fait pchlj : en relisant mon premier post sur ce topic je l'ai trouvé un peu incisif. Ce n'était pas mon intention, daigne accepter mes excuses...

pchlj a écrit :
Il ne faut pas penser tout css non plus, il faut savoir choisir ce qui est le mieux dans le cas précis de ce que l'on veut faire Smiley smile

Nous sommes bien d'accord...

pchlj a écrit :
Et puis ça dépend aussi du niveau du "dev" moi je suis une nouille en css, c'est pour ça que je bosse avec des intégrateurs Smiley smile Pour moi faire un site se résume souvent à mettre beaucoup de php ou de js et de faire du css2 et encore Smiley cligne mais c'est par manque de connaissance Smiley smile

Et oui, pour moi c'est exactement l'inverse : je souffre douloureusement sur l'apprentissage de la programmation orientée objet, trébuchant à chaque pas dans mon apprentissage en vue de créer une architecture MVC (pour m'entraîner)...

pchlj a écrit :
Et puis ce n'est pas mon boulot de connaitre par coeur toutes les technos Smiley cligne

Qui le pourrait !!!?
Merci de tes excuses Olivier Smiley smile mais ne t'inquiète pas je n'ai rien pris pour moi directement Smiley smile

a écrit :
pchlj a écrit :
Et puis ce n'est pas mon boulot de connaitre par coeur toutes les technos Smiley cligne

Qui le pourrait !!!?


Je reviens sur cette partie Smiley smile

Ma place de directeur technique veux que je connaisse TOUTES Les technos Smiley smile Pas forcément su rle bout des doigts car cela en effet personne ne le peut !

Mais à mon sens, il va de soit pour UN directeur Technique, c'est même essentiel à mon sens d'avoir des connaissances dans toutes les technos.
Le rôle du DT étant de diriger les équipes et de prendre les décisions de dev, je ne vois pas comment on pourrait/peut faire ce boulot sans avoir tout cela en main.
Alors bien sur, on a tous une spécialisation (pour ma part c'est le dev), mais cela n'empêche pas de se tenir au courant du reste, cela s'appelle la veille technologique et c'est le fondement de mon métier Smiley smile

Pour revenir sur le thème qui est le choix de la techno justement, un de mes rôles est justement de choisir ce qui est le plus pertinent pour un cas donné. En prenant en compte les avantages et les inconvénients que vont exposer les gars avec qui je bosse. Moi c'est mon taf d'analyser ce qui va être la meilleure décision Smiley cligne

C'est pour ça que je fais des bonds quand je vois tout le monde s'exciter sur le choix du php. C'était tout simplement le meilleur choix qu'il avait fait. Pour x raisons (entre autre le manque de connaissance en css Smiley cligne )

J'estime qu'on a pas a juger un choix Smiley smile Ou tout du moins pas sans argumenter derrière sur le pourquoi de ce jugement.

Nous faisons tous des choix Smiley smile pas forcément les bons, mais nous les faisons avec nos connaissances Smiley smile il n'y a donc pas de 'mauvais' choix au départ Smiley smile
Et c'est bien connu en ce qui concerne le dev, du moment que ça fait ce qu'on veut, le choix est bon Smiley smile

voilà voilà Smiley smile
Je ne veux pas mettre de l'huile sur le feu mais je ne pense pas qu'on a juger son choix. Mais je ne suis pas d'accord avec toi car il peut y avoir des mauvais choix au départ d'un projet. Nos réponses (je le pense) allez dans ce sens, l'aider à s'orienter vers une meilleure option (ou en tout cas ce que l'on pensais meilleur. On aurait pu se tromper). Au final c'est d'ailleurs ce qu'il a fait puisqu'il c'est dirigé vers le CSS. Smiley lol

Sinon je pense qu'on est tous sur la même ligne, c'est juste qu'il est compliqué de faire passer certains éléments via un forum.
Magic je le dit dans mon long texte Smiley smile on ne juge pas sans argumenter Smiley cligne
Olivier a argumenter par l'exemple...
Toi même plus succinctement mais juste derrière tu n'argumente pas Smiley cligne

Et au final en effet dread à choisi de passer par du CSS Smiley smile approprié à son cas Smiley smile mais qu'il n'utilisait pas par manque de savoir Smiley cligne

Oui nous sommes tous sur la même longueur d'onde Smiley lol

et je confirme qu'un forum ne rend pas l'ambiance d'une machine à café Smiley cligne
pchlj a écrit :
... et je confirme qu'un forum ne rend pas l'ambiance d'une machine à café Smiley cligne

Mais ça peut l'être pour les habitués et dans ce cas c'est plutôt sympa Smiley cligne

J'aime bien trainer ici de temps à autre : proposer une solution que l'on pense ajustée est aussi une manière de la confronter aux opinions des autres. Pour moi qui suis passionné... mais isolé car non-professionnel du secteur, c'est important (dans la vraie vie je suis infirmier).

Après, clairement, il y a vraiment des débats à éviter sur les forums de dev/intégration. Des trucs qui déchainent les passions... et puis avec le recul on s'aperçoit que la soi-disant mauvaise pratique d'un moment devient une convention de codage par la suite...