C týden
Tento týden až 80% sleva na e-learning týkající se jazyka C
50 % bodů zdarma na online výuku díky naší Slevové akci!
Avatar
dyžon
Člen
Avatar
dyžon:10.7.2019 12:15

čau,
právě jsem dokončil kurz Jednoduchý redakční systém v PHP objektově (MVC)
rozlozeni.phtml jsem rozdelil na dve části: levaStrana (tady mám navigaci) a pravaStrana (clanek a clanky.phtml)
s tímhle není problém, ale co kdybych pravaStrana rozdělil zase na dvě části dejme tomu divList a divTelo
do divList nechám vypsat všechny články a do divTelo pak po kliknutí na článek z divList vypsat konkrétní článek (clanek.phtml).
clanky.phtml:

<div class="divList">
<h1>Seznam článků</h1>
        <table>
        <?php foreach ($clanky as $clanek) : ?>
                <tr>
                        <td>
                                <h2><a href="clanek/<?= $clanek['url'] ?>"><?= $clanek['titulek'] ?></a></h2>
                                <?= $clanek['popisek'] ?>
                                <?php if ($admin) : ?>
                                        <br />
                                        <a href="editor/<?= $clanek['url'] ?>">Editovat</a>
                                        <a href="clanek/<?= $clanek['url'] ?>/odstranit">Odstranit</a>
                                <?php endif ?>
                        </td>
                </tr>
        <?php endforeach ?>
        </table>
</div>

<div class="divTelo">
        jak v  tomhle divu vypíšu clanek.phtml / po kliknutí na konkrétní článek ?
</div>

Zkusil jsem: podle mě je potřeba upravit pouze soubory ClanekKontroler­.php a pak clanky.phtml
je to pro mě oříšek, strávil jsem nad tím už spoustu času a pořád se mi nedaří.
úmyslně sem nedávám žádnej svůj pokus, protože nic nefungovalo ami v náznaku. Asi byste se i dost nasmáli, ale mě už bylo skoro i do breku ... :-)

Chci docílit: chtěl bych poprosit někoho, aby mi alespoň nastínil, kudy se vydat a zda je vůbec možné toho dosáhnout přepsáním pouze těchto dvou souborů, nebo je potřeba překopat celý systém Hezkých URL adres.
přikládám ještě obrázek, jak by to asi mělo vypadat:
[* rozlozeni.png .(tak by to mělo vypadat) *]

 
Odpovědět
10.7.2019 12:15
Avatar
dyžon
Člen
Avatar
Odpovídá na dyžon
dyžon:10.7.2019 12:26

upravil jsem obrázek rozložení, teď je správně.

Editováno 10.7.2019 12:27
 
Nahoru Odpovědět
10.7.2019 12:26
Avatar
dyžon
Člen
Avatar
Odpovídá na dyžon
dyžon:10.7.2019 13:40

omlouvám se, teď je to správně ....
nedá se tady mazat vlastní příspěvky a krátká doba na úpravu ... :-) :-) 8-)
jinak mám řešení, pomocí javascriptu volám funkci v souboru vypisClanek.php, která mi vrátí data k vypsání článku v divTelo, ale ničím tím cely MVC.

 
Nahoru Odpovědět
10.7.2019 13:40
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:10.7.2019 14:15

Priprav si vysledek do pole a pak pouzij jednoduchy sablonovaci system, treba tento.
Sablony s if+echo jsou spatny priklad, takove clanky necti :)

https://www.itnetwork.cz/…d02784d03564

public function pageRender($tpl='', $items = array())
        {
        if (!(gettype($tpl)==="string" && gettype($items)==="array" && count($items)>0))
                {
                return $tpl;
                }
        $items2 = array();
        foreach($items as $key => $value)
                {
                $items2["{".$key."}"] = $value; // rychlejsi zkopirovat do array nez unsetovat v puvodni
                }
        return strtr($tpl, $items2);
        }
Editováno 10.7.2019 14:17
 
Nahoru Odpovědět
10.7.2019 14:15
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
dyžon
Člen
Avatar
Odpovídá na Peter Mlich
dyžon:12.7.2019 8:36

to Peter Mlich: asi jsi mě úplně nepochopil, nepotřebuji vytvářet šablonu, to budu mít napsaný v zakazky.php . zřejmě jsem to popsal špatně.

každopádně jsem už vychladl a znovu se nad tím zamyslel a hle, najednou to jde :-) :-) 8-)
ClanekKontroler:

<?php

class ClanekKontroler extends Kontroler
{
    public function zpracuj($parametry)
    {
        $this->overUzivatele(true);
        $spravceClanku = new SpravceClanku();
        $spravceUzivatelu = new SpravceUzivatelu();
        $uzivatel = $spravceUzivatelu->vratUzivatele();
        $this->data['admin'] = $uzivatel && $uzivatel['admin'];

        $clanky = $spravceClanku->vratClanky();
        $this->data['clanky'] = $clanky;

        if (!empty($parametry[0]))
        {
            $clanek = $spravceClanku->vratClanek($parametry[0]);
            if (!$clanek)
                $this->presmeruj('MyDir/chyba');

            $this->hlavicka = array(
                'titulek' => $clanek['titulek'],
                'klicova_slova' => $clanek['klicova_slova'],
                'popisek' => $clanek['popisek'],
            );

            $this->data['nazevClanku'] = $clanek['titulek'];
            $this->data['popisClanku'] = $clanek['popisek'];
        }
        else
        {
            $clanek = $clanky[0];
            $this->data['nazevClanku'] = $clanek['titulek'];
            $this->data['popisClanku'] = $clanek['popisek'];
        }

        if (!empty($parametry[1]) && $parametry[1] == 'odstranit')
        {
            $this->overUzivatele(true);
            $spravceClanky->odstranClanek($parametry[0]);
            $this->pridejZpravu('Clanek byl úspěšně odstraněn');
            $this->presmeruj('MyDir/clanek');
        }

        $this->pohled = 'clanky';

    }
}

clanky.phtml

<div class="vsechnyClanky">
    <h1>Seznam Článků</h1>
    <br /><br />
    <table>
    <?php foreach ($clanky as $clanek) : ?>
        <tr>
            <td>
                <div class="objClanek">
                    <a href="/<?= $clanek['url'] ?>">

                        <div class="clanekCislo">
                            <p>88888</p>
                        </div>
                        <div class="clanekPopis">
                            <p class="jmenoClanku"><?= $clanek['titulek'] ?></p>
                            <p class="popisClanku"><?= $clanek['popisek'] ?></p>
                        </div>
                    </a>
                </div>
            </td>
        </tr>
    <?php endforeach ?>
    </table>
</div>

<div class="vybranyClanek">

    <h1><?= $nazevClanku ?></h1><br /><br />
    <p id="popis"><?= $popisClanku ?></p>

</div>
 
Nahoru Odpovědět
12.7.2019 8:36
Avatar
dyžon
Člen
Avatar
Odpovídá na dyžon
dyžon:16.7.2019 8:23

dokázal by mi prosím někdo poradit, jak to udělat, aby se při kliknutí na článek v class="vsechny­Clanky"

<a href="/<?= $clanek['url'] ?>">

přepsaly hodnoty v class="vybrany­Clanek" bez znovunačtení stránky ?
zřejmě bude zapotřebí javascript, nebo by to šlo jen v php ??

 
Nahoru Odpovědět
16.7.2019 8:23
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:16.7.2019 13:29
<script>
var i, items;
items = document.querySelectorAll('.vsechnyClanky');
for (i in items) {items[i].className='123';}
</script>
Editováno 16.7.2019 13:30
 
Nahoru Odpovědět
16.7.2019 13:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.