Šta je novo?

PHP Modulus help

  • Začetnik teme Začetnik teme Ultimo
  • Datum pokretanja Datum pokretanja

Ultimo

Čuven
Učlanjen(a)
27.11.2003
Poruke
1,846
Poena
660
Pozdrav

pokusavam da napravim ovo za jedan projekat i ne ide mi vec neko vreme jer mi php nije jaka strana. Skontao sam da treba da koristim modulus da dobijem ovo al posle par sati pokusvanja, jos uvek nemam resenja.

Imam ovaj query u Wordpressu koji mi lista postove za ovaj post type.

Kod:
<div id="awards">
            <?php
                $args = array(
                    'post_type' => 'awards',
                    'posts_per_page' => 50,
                    'order' => ASC
                );
                query_posts($args);
                while (have_posts()): the_post(); ?>
                    <div class="post">
                        <h2><?php the_title(); ?></h2>
                        <?php the_content(); ?>
                    </div>
                <?php endwhile; ?>
</div>

Sada su svi postovi izlistani u divu #awards, ono sto meni treba je da sve postove rasporedim u 3 kolone (3 diva) unutar tog #awards. Nesto slicno ovome:
Kod:
<div id="awards">
    <div class="first">
        Post 1
        Post 4
        Post 7
        .....
    </div>
    <div class="second">
        Post 2
        Post 5
        Post 8
        .....
    </div>
    <div class="third">
        Post 3
        Post 6
        Post 9
        .....
    </div>
</div>

Ako ima neko ideje please help 🙂
 
Kod:
.container
{
columns:100px 3;
-webkit-columns:100px 3; /* Safari and Chrome */
-moz-columns:100px 3; /* Firefox */
}

while (have_posts()): the_post(); ?>
<h2><?php the_title(); ?></h2>
<div class="container">

<?php the_content(); ?>

</div>
 <?php endwhile; ?>

Malo CSS magije i to je to 🙂

Dodatni primer ovde:
http://www.w3schools.com/cssref/tryit.asp?filename=trycss3_columns
 
Mislim da sam vec to probao i da sam naleteo na isti problem kao i sad, a pored toga i IE support 🙁.

Treba samo taj glavni container da ide oko loopa ali to je to, bar lici na ono sto mi treba. Imam samo jedan problem a to je prelamanje teksta po kolonama, naime nemam kontrolu da li ce samo title da ostane u prvoj koloni a content da ode u drugu a siguran sam da ce praviti problem oko toga...

Evo koda:
Kod:
 <div id="awards">
            <?php
            $args = array(
                'post_type' => 'awards',
                'posts_per_page' => 50,
                'order' => ASC
            );
            query_posts($args);
            while (have_posts()): the_post(); ?>
                <div class="copy">
                    <h2><?php the_title(); ?></h2>
                    <?php the_content(); ?>
                </div>
            <?php endwhile; ?>
        </div>
#awards {
    margin-top: 20px;
    columns: 100px 3;
    -webkit-columns: 100px 3;
    -moz-columns: 100px 3;
}
 
Poslednja izmena:
Kod:
<style>
.post-wrapper {
width: 33%;
float: left;
}
</style>
            <?php
            $args = array(
                'post_type' => 'awards',
                'posts_per_page' => 50,
                'order' => ASC
            );
            query_posts($args);
            while (have_posts()): the_post(); ?>
                <div class="post-wrapper">
                    <h2><?php the_title(); ?></h2>
                    <?php the_content(); ?>
                </div>
            <?php endwhile; ?>
Ako sam te dobro razumeo to je to.
Ne zaboravi samo clear posle svega.
 
To sam prvo probao, ne moze tako jer nije svaki post iste visine i ne floatuju se kako treba, ako je ovaj u prvoj koloni dugacak napravi porblem za drugu i trecu kolonu...

Mislim da je jedino funkcionalno resenje 3 diva/kolone al za to, koliko vidim, moram da se pomucim 🙂
 
Evo onda ako si mislio na ovo - na brzaka cu napisati moguce da ima greskica, a i nije bas memorijski najsjajnije resenje.
Kod:
<style>
.post-wrapper {
width: 33%;
float: left;
}
</style>
            <?php
            $args = array(
                'post_type' => 'awards',
                'posts_per_page' => 50,
                'order' => ASC
            );
            query_posts($args);
            $i = 0;
            $j = 0;
            while (have_posts()): 
                         the_post();
                         $buffer[$i % 3][$j]['title'] = get_the_title();
                         $buffer[$i % 3][$j]['content'] = get_the_content(); 
                         if($i++ % 3 == 2) $j++; ?>
            endwhile;
            foreach($buffer as $bf):
                 foreach($bf as $pcontent):
                   ?><div class="post-wrapper">
                       <h2><?php echo $pcontent['title'] ?></h2>
                       <?php echo $pcontent['content'] ?>
                       </div>
                <?php
                endforeach;
            endforeach;
            ?>
Vrv ima koja gresaka - to bi bilo ako hoces nejednake visine tako da se slazu jedan ispod drugog, a ako hoces i horizontal alignment to ti je bar lako.
Kod:
<style>
.post-wrapper {
width: 33%;
float: left;
}

.clear { clear: both; }
</style>
            <?php
            $args = array(
                'post_type' => 'awards',
                'posts_per_page' => 50,
                'order' => ASC
            );
            query_posts($args);
            $i = 0;
            ?><div><?php
            while (have_posts()): the_post(); ?>
                <?php if($i++ % 3 == 2): ?>
                         </div><div class="clear"></div><div>
                <?php endif; ?>
                <div class="post-wrapper">
                    <h2><?php the_title(); ?></h2>
                    <?php the_content(); ?>
                </div>
            <?php endwhile; ?>
            </div>
<div class="clear"></div>
 
Poslednja izmena:
Mislim da sam vec to probao i da sam naleteo na isti problem kao i sad, a pored toga i IE support 🙁.

Treba samo taj glavni container da ide oko loopa ali to je to, bar lici na ono sto mi treba. Imam samo jedan problem a to je prelamanje teksta po kolonama, naime nemam kontrolu da li ce samo title da ostane u prvoj koloni a content da ode u drugu a siguran sam da ce praviti problem oko toga...

Evo koda:
Kod:
 <div id="awards">
            <?php
            $args = array(
                'post_type' => 'awards',
                'posts_per_page' => 50,
                'order' => ASC
            );
            query_posts($args);
            while (have_posts()): the_post(); ?>
                <div class="copy">
                    <h2><?php the_title(); ?></h2>
                    <?php the_content(); ?>
                </div>
            <?php endwhile; ?>
        </div>
#awards {
    margin-top: 20px;
    columns: 100px 3;
    -webkit-columns: 100px 3;
    -moz-columns: 100px 3;
}

Pa ovo sto sam ti ja napisao radi u IE8+ ako se ne varam, a inace se kod vise i ne pise tak oda bude optimizovan za njega.
 
Sa w3schools linka: " Note: The columns property is not supported in Internet Explorer 9 and earlier versions."

Veruj mi da se ja pitam bas bi me bilo briga za ie8 al oni zahtevaju podrsku za isti....
 
Nazad
Vrh Dno