Bonjour et merci pour ce merveilleux site qui m'a donné envie de me remettre à coder...

Bon, voilà la question pour laquelle je n'ai aucune réponse, même pas un élément.
Je créé le design d'un site sous wordpress, j'ai suivi quelques tutos video sur grafikart, et j'arrive à la mise en page css de mon tpl_xxx.php
Sauf que j'aurais aimé afficher les 3 derniers articles sur cette page, et que passer par le bootstrap twitter pour moi c'est vraiment pas une bonne idée, ça ressemble à une usine à gaz dont je ne comprends qu'un quart des choses.

Donc, j'ai ma boucle $query pour appeler les articles que j'ai placé dans une div "row", pour pas faire original pusique j'ai suivi le tuto :p

<div class="row">
        <?php
        $query = new WP_query(array('post_type'=>'post','posts_per_page'=>4));
        while($query->have_posts()): $query->the_post(); global $post;
        ?>

une autre div pour les afficher

<div class="span">
                <h2><?php the_title(); ?></h2>
                <?php the_content(); ?>
            </div>

Le truc, c'est comment je met 3 articles cote à cote dans mon css, sachant que je n'ai qu'une seule class à coder ? J'avais pensé aux position relative et absolutes, mais sans div, c'est difficile.
Donc sans passer par le bootstrap, c'est quoi la solution pour mettre ces 3 articles cote à cote ?

Merci d'avance :)

13 réponses


Estillia
Auteur
Réponse acceptée

Bon et bien, comment dire ça sans passer pour le dernier des imbéciles ( oui oui, je suis fatiguééééé )...

Si vous regardez un peu le code au dessus, l'erreur bête, c'est class="span" pour ma div, et #span dans mon css au lieu de .span ( je vais me pendre )

Donc, j'ai fait quand même quelques modifs, en essayant de mettre un ul>li>. J'ai rajouté un display:block à mon #content et mon .span, modifié mon width à 33% histoire de coller "un peu" mieux. Un Lorem ipsum pour voir si c'est ok...

Merci pour votre aide, et -surement- à bientôt ;)

.span {
width:200px
float:left;
 }

Salut,
J’espère que c'est ce que tu demande car j'admets que j'ai pas bien compris tout ce que tu as dit :'). Un schéma ou un lien serait pas mal ^^

a+ ;)

Estillia
Auteur

Salut coloo et merci pour ta réponse. Mais non, ce n'est pas ce que je demande :)

Ce que je demande, c'est comment est le css pour afficher ça : ( les 3 derniers articles cote à cote )
http://twitter.github.com/bootstrap/examples/hero.html

Je n'ai qu'une seule div pour afficher le contenu, pour 3 articles donc, et pas 3 div ( une pour chaque article )

Et bien sur, sans avoir à utiliser le bootstrap.

Bonsoir,
Si je comprend ton soucis tu veux afficher les trois articles de ton contenu (soit je suppose trois articles par pages).
Dans ce cas la je pense que tu dois gérer ton affichage des articles :

<?php get_header(); ?>
<?php 
if (have_posts()): 
    while(have_posts()):
        the_post();
?>
<div class="article" id="post<?php the_ID(); ?>">
    <div class="post-top-single">
        <h1><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
        <div class="post-cat"><?php the_category(",") ?></div>
        <div class="post-date"><?php echo get_the_time('d/m/y');?></div>
    </div>
    <div class="post-content-single">
        <div class="une"><?php the_post_thumbnail("single");?></div>
        <?php the_content();?>
    </div>
    <div class="bloc">
        <div class="bloc-top">
            <div class="comments">
            <?php comments_popup_link( __('No Comments'),__ ('1 Comment'),__('% Comments')); ?>
            </div>
            <div class="letcom">
                <a href="#formcom">Laissez un commentaire!</a>
            </div>
        </div>
        <?php comments_template();?>
    </div>
<?php 
    endwhile; endif;
?>
</div>
<?php get_footer(); ?>

Ça c'est ma page single faite avec l'aide du tutoriel de grafikart sur la création de son propre thème.
Bref ici c'est moi qui choisi la façon dont mes articles vont être crée et du coup je peux faire mon css en fonction.
Tu peux t'en inspirer et je te conseille par la même le tutoriel qui va bien pour encore mieux l'assimiler.
Cordialement,

Estillia
Auteur

comment choisis-tu les articles à afficher ?
ça pourrait être une solution sinon.

Ben les trois articles les plus récents seront affichés et du coup ils ont toujours la même structure.
Après dans ton back office wp tu choisis le nombre d'article à afficher par page. La tu met trois si tu en veux trois sur la même page etc...

Estillia
Auteur

Oui, en fait, ça revient plus au moins à la boucle $query que j'ai. Le truc après, c'est comment mettre en page les articles un par un ? J'en veux un à gauche, un au centre, un à droite. Si j'essaie ton .article que le je mets en float:left, ils apparaîtrons tous à gauche...

la tu utilise le float left sur la div qui contient ton article et tu n'oublie pas de gérer les largeur de tes div.
En gros si tu as une page qui fait 900px de largeur tu met 300px de largeur à tes articles sinon forcément ça va descendre en dessous.
html :

<div class"article">ton article</div>

css :

.article{
width : 300px;
float:left;
}

à la fin de ta boucle n'oublie pas de mettre une div avec la class clear (tu l'a nomme comme tu veux mais faut lui donner ce css la!
html :

<!-- fin de ta boucle -->
<div class="clear"

css :

.clear{clear:both;}

cela permettra d'annuler le float left que tu as mis sur tes articles et évitera des désagréments sur le design de ton site par la suite!

Estillia
Auteur

Je teste ça demain matin, merci pour les conseils :)

Estillia
Auteur

Bon, après plusieurs test sous différentes formes, je n'y arrive pas. Je commence à chercher une autre voie parce que je sens que celle-ci va vite passer à la trappe. Si vous avez d'autres idées, n'hésitez pas, merci quand même :)

Pourrais tu nous mettre le code de ta page s'il te plait qu'on voit mieux !!!

Estillia
Auteur
<?php
/*
Template Name: Front Page
*/
?>
<?php get_header(); ?>
<?php while(have_posts()): the_post(); ?>
<?php endwhile; ?>
<div id="main">
    <div id="content">
        <div class="row">
        <?php
        $query = new WP_query(array('post_type'=>'post','posts_per_page'=>3));
        while($query->have_posts()): $query->the_post(); global $post;
        ?>

            <div class="span">
                <h2><?php the_title(); ?></h2>
                <?php the_content(); ?>
            </div>
        <?php endwhile ?>
        <div class="clear"></div>
        </div>
    </div>
</div>
<?php get_footer(); ?>

Voilà mon affichage des articles, qui fonctionne bien.

/ *******CONTENT******* /
#main{
    width: 100%;
    background:url(images/bg.png) repeat;
}
#content{
    position: relative;
    overflow: hidden;
    margin-bottom: 40px;
    margin-right: auto;
    margin-left: auto; 
    width:1000px;
}
#span{
    width: 330px;
    float: left;
}
.clear{
    clear: both;
}

Et le css associé, qui ne fonctionne pas. ( il y a probablement des choses que j'ai rajouté dans certaines .class, pour mes tests... )

Voilà voilà :)

Estillia
Auteur

aie aie aie, je découvre des erreurs en me relisant...pire qu'un débutant...