[PHP | Smarty] – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

[PHP | Smarty] – PHP – Fórum – Programujte.com[PHP | Smarty] – PHP – Fórum – Programujte.com

 

itlady0
Newbie
30. 3. 2022   #1
-
0
-

Můj dotaz je následující - jak se sestavit stránku pomocí Smarty template? Mám základní kostru stránek - něco na způsob blogu - na index.php mám nadpisy článků, po kliknutí na nadpis se přesouvám do view.php, kde se zobrazí nadpis, text atd ... Pomocí smarty mám udělané šablony - header.tpl, index.tpl, footer.tpl, view.tpl. Pak mám smarty.php, kde definuju toto: 

<?php 
    require_once 'vendor\smarty\smarty\libs\Smarty.class.php';
    include 'config.php';
    include 'knihovna.php';

    $smarty = new Smarty();
    $smarty->template_dir = "_tpl";
    $smarty->compile_dir = "tmp";
    $smarty->caching = false;
    $smarty->cache_lifetime = 120;

    $smarty->assign('title', $title);
    $smarty->assign('link', $link);
    $smarty->assign('query', $query);
    $smarty->assign('clanek', [$query]);

    $smarty->assign('new', $new);

    $smarty->display('header.tpl');
    $smarty->display('index.tpl');
    $smarty->display('view.tpl');
    $smarty->display('edit.tpl');
    $smarty->display('footer.tpl');

Problém je, že při přechodu z home page(index.php) do view.php, tak se mi zobrazují všechny tpl, tak jak jsou uvedeny výše - potřebovala bych, aby na view se mi nezobrazoval obsah index a edit, ale jen header, view a footer.

Nahlásit jako SPAM
IP: 185.246.210.–
peter
~ Anonymní uživatel
3833 příspěvků
30. 3. 2022   #2
-
0
-

   

// do kazdeho souboru das jinou cast kodu?
    $smarty->display('header.tpl');
    $smarty->display('index.tpl');
    $smarty->display('view.tpl');
    $smarty->display('edit.tpl');
    $smarty->display('footer.tpl');
--- index.php ---
    $smarty->display('header.tpl');
    $smarty->display('index.tpl');
    $smarty->display('footer.tpl');
--- view.php ---
    $smarty->display('header.tpl');
    $smarty->display('view.tpl');
    $smarty->display('footer.tpl');
--- edit.php ---
    $smarty->display('header.tpl');
    $smarty->display('edit.tpl');
    $smarty->display('footer.tpl');
nebo, jestli mas nekde ulozene __FILE__, tak ho pouzijes pro sablonu?
 $smarty->display(__FILE__.'.tpl');
Pripadne ho treba jeste nejak upravis, odstranis koncovku?
Nahlásit jako SPAM
IP: 2001:718:2601:258:f106:4570:b7a1:c287...–
itlady0
Newbie
30. 3. 2022   #3
-
0
-

Tak nějak jsem to nakonec taky vyřešila - pro každou stránku (index,view ...) mám extra vlastní php, např. s $smarty->display('index.tpl'). 

Nahlásit jako SPAM
IP: 185.246.210.–
paja
~ Anonymní uživatel
25 příspěvků
31. 3. 2022   #4
-
0
-

U tohohle je lepší je mít opačnou logiku (oddělíš tak úplně view vrstvu).

Tedy máš soubor base.tpl, kde máš např.

<html>
<head>
   {block "head"}
      <title>Titulek</title>
   {/block}
</head>
<body>
   {block "content"}{/block}
</body>
</html>

Pak máš např. soubor index.tpl 

{extends file="base.tpl"}

{block name="head" append}
   <meta co se prida do bloku head>
{/block}

{block name="content"}
   Samotný obsah index stránky
{/block}

A pak třeba detail, kde třeba (pro ukázku) nechceš mít title v <head> a na konec obsahu chceš přidat editační formulář, který máš v edit.tpl: 

{extends file="base.tpl"}

{block name="head"}{/block}

{block name="content"}
   Samotný obsah detail stránky
   {include "edit.tpl"}
{/block}

Viz https://www.smarty.net/docs/en/language.function.block.tpl a https://www.smarty.net/docs/en/language.function.include.tpl


{include 'page_footer.tpl'}
Nahlásit jako SPAM
IP: 2a02:8308:c002:6a00:7b13:a7ab:410f:6c79...–
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, 6 hostů

Podobná vlákna

Smarty - vložení scriptu PHP — založil plasmo

Smarty — založil Ruda

Help smarty — založil viliam22

 

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