Loop pro wordpress - příspěvky do řádku – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Loop pro wordpress - příspěvky do řádku – PHP – Fórum – Programujte.comLoop pro wordpress - příspěvky do řádku – PHP – Fórum – Programujte.com

 

Návštěvník
~ Anonymní uživatel
66 příspěvků
20. 7. 2015   #1
-
0
-

Zdravím,
používám následující loop, který mi na HP vypisuje články vedle sebe a po třech mi je rozsekává do řádků:
http://www.codesend.com/…91b60d5eedf/

Neumím programovat. Tento kód jsem někde našel a funguje skvěle. Bohužel má jeden háček.

Pokud je ve wordpressu málo příspěvků a nezaplní se kompletně řádek, tak se mi rozhodí celá šablona. Asi proto, že se nepoužije ta /row pro ukončení řádku.

Nevíte prosím, jak by to šlo opravit? Nejlépe jen úpravou tohoto kódu, ale nebráním se ani jinému řešení.

Děkuji moc 

Nahlásit jako SPAM
IP: 89.24.189.–
Kit+15
Guru
20. 7. 2015   #2
-
0
-

#1 Návštěvník
Pokud počet příspěvků není dělitelný třemi, tak se ti poslední

<div class="row">

neuzavře a tím se poruší párovost divů. Zkus to netestovat dvěma podmínkami, ale jen jednou.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Návštěvník
~ Anonymní uživatel
66 příspěvků
20. 7. 2015   #3
-
0
-

#2 Kit
Aha, díky. Myslel jsem si to :(

Teď je otázka, co s tím. Neumím programovat, takže si s podmínkama moc neporadím :( Napadlo mě

Napadlo mě tu podmínku, která vkládá uzavírací /div pro row doplnit o nějaký else. Že pokud bude podmínka platit a půjde o třetí příspěvek, tak se vloží uzavírací div, jinak se taky vloží.

Zkoušel jsem to tam nějak vepsat, ale bohužel to háže chybu a nefunguje :(

Nahlásit jako SPAM
IP: 89.24.189.–
ondrej39+1
Věrný člen
20. 7. 2015   #4
-
0
-

#3 Návštěvník
Co vrací metoda have_posts()? Určitě nějakým způsobem musí vracet příspěvky, spočítej si počet příspěvků, ten vyděl počtem sloupců, tím zjistíš, kolik máš mít řádků a také zjistíš, kolik příspěvků budeš mít v posledním, neúplném řádku, pokud tam takový bude.

Pak už stačí jen vhodně zvolit počítadla a nějakou jednoduchou podmínku, aby se ti div uzavřel i když bude řádek nekomletní.

Nahlásit jako SPAM
IP: 79.141.243.–
Inject all the dependencies!
Návštěvník
~ Anonymní uživatel
66 příspěvků
20. 7. 2015   #5
-
0
-

No 'posts_per_page' => 18 mám nakonec upravený na 'posts_per_page' => 6. Takže příspěvků mám 6 a řádků 2.

Když upravím toto:  

<?php $i++; 
      if($i != 0 && $i % 3 == 0) { ?>
        </div><!--/.row-->
        <div class="clearfix"></div>
 
      <?php
       } ?>
 
      <?php  
        endwhile;
        }
        wp_reset_query();
        ?>

Takto:

<?php $i++; 
      if($i != 0 && $i % 3 == 0) { ?>
        </div><!--/.row-->
        <div class="clearfix"></div>
 
      <?php
       } 
      else {
	</div>   	
        }
?>
 
      <?php  
        endwhile;
        }
        wp_reset_query();
        ?>

Tak to bohužel nefunguje a vyhazuje chybu.

Nahlásit jako SPAM
IP: 89.24.189.–
Kit+15
Guru
20. 7. 2015   #6
-
0
-

#3 Návštěvník
Tohle neřeším. Prostě naházím ty divy pod sebe a v CSS jim nastavím float:left. Ono se to na té obrazovce nějak uspořádá a když je užší displej, tak vzniknou třeba jen dva nebo jeden sloupeček.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Návštěvník
~ Anonymní uživatel
66 příspěvků
20. 7. 2015   #7
-
0
-

No problém nastane, pokud každý příspěvek v divu bude mít jinou výšku. Pak nebudou příspěvky zobrazeny v řádku. Což na některých webech nevadí, ale někde je lepší je seřadit. Osobně mi to přijde i přehlednější :)

Nahlásit jako SPAM
IP: 89.24.189.–
Kit+15
Guru
20. 7. 2015   #8
-
0
-

#7 Návštěvník
Budou. Vyzkoušej si to a trochu si pohrej s min-height a min-width.

Pokud něco takového přece jen potřebuji řešit, dělám to ve výstupní šabloně - PHP do toho už netahám, abych si náhodou nerozbil párovost značek.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Jirka
~ Anonymní uživatel
305 příspěvků
21. 7. 2015   #9
-
0
-

Zkusím to použít u jiných projektů, akorát tady se mi nechce vše komplet překopávat.

Jinak teď mě napadlo, že pouse else použít nepůjde, protože by tu uzavírací značku vkládalo za každý post. Spíše by to chtělo nějaké elseif s podmínkou, pokud nejsou žádné příspěvky. Ale netuším, jak to zapsat.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 37.188.130.–
Kit+15
Guru
21. 7. 2015   #10
-
0
-

#9 Jirka
Nějak jsem zapomněl, k čemu slouží else a elseif ...

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
3981 příspěvků
21. 7. 2015   #11
-
0
-

"Neumím programovat, takže si s podmínkama moc neporadím"
Je ti jasne, ze chces reseni zadarmo a ne poradit? :) Nam, co se tim zivime, to prijde strasne drze, treba.

"háže chybu a nefunguje"
Pokud mas vlastni upravu, je dobre poslat i tvuj upraveny kod a text chybove hlasky. To uz se vztahuje k "poradit", to by uz bylo atraktivni se tim zabyvat.

#5 - Predevsim bych zapomnel na puvodni kod.  To psal nekdo, kdo si rad komplikuje zivot prerusovanim php kodu znackami <?php. Cili, prepsat to tak, aby tam bylo jedno echo, idealne na konci nebo kdyztak pro cely clanek
Chces vypsat prispevky po trech, pouzij css.
Nestaci ti css, pouzi tabulku, php.
Nesnaz se to zbytecne komplikovat floatovanim, portoze to spousta lidi zvora.

<?php

$bool = true;
$clanky = ''; // smazat

while ($bool==true)
{
$clanky .= '<tr>'; // opravit
$i = 0;
while (($bool=$my_query->have_posts())==true && $i<3)
  {
  $clanky .= '<td>'.$my_query->the_post().'</td>'; // opravit
  ++$i;
  }
$clanky .= '</tr>'; // opravit
}

echo $clanky; // smazat
?>

Jediny problem je v tom, ze $my_query->the_post() dela nejspis primo echo. Takze pak misto vsech
$clanky .= tam budes muset napsat ecoh a prepsat ten radek jinak, na

echo '<td>';
$my_query->the_post();
echo '</td>';
 

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:c0dd:30...–
peter
~ Anonymní uživatel
3981 příspěvků
21. 7. 2015   #12
-
0
-

ecoh *echo
A druhej problem, ze ti to vynecha kazdy ctvrty clanek. :) Zkusim si to jeste promyslet...

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:c0dd:30...–
peter
~ Anonymní uživatel
3981 příspěvků
21. 7. 2015   #13
-
0
-

   

<?php
$arr = array('aaa','bbb','ccc','ddd','eee');
$texti = 0;
$text = '';
function havePost() {global $arr,$texti,$text; if (isset($arr[$texti])) {$text = $arr[$texti]; ++$texti; return true;} else {return false;}}
function thePost()  {global $text; echo $text;}


echo '<table border=1>';

$bool = true;
while ($bool==true)
{
echo '<tr>';
$i = 0;
while ($i<3 && ($bool=havePost())==true)
  {
  echo '<td>'; thePost(); echo '</td>';
  ++$i;
  }
echo '</tr>';
}

echo '</table>';
?>

A kdybys tam chtel doplnit dalsi policka, tak tam ten cyklus zopakujes s pricitanim icka bez detekce havePost a bez vypisovani clanku.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:c0dd:30...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý