Stránka 1 z 1
Smarty - Šablonovací systém
Napsal: pát 19. úno 2010, 20:38
od KapaCZ
Po diskuzi s uživatelem
NEONET mi byl doporučen tento sytém. Avšak mi to přijde jako tank na mouchu, jelikož je to podle mně moc složité a má to moc funkcí na RS pro blog. Pokud však jiný není, tak bych byl rád za nějaké návody. (V CZ/SK by byly lepší)

Re: Smarty - Šablonovací systém
Napsal: ned 21. úno 2010, 18:05
od NEONET
prvni odkaz co vyplivl google po dotazu jak na smarty -
http://www.abclinuxu.cz/clanky/navody/s ... tem-1-uvod
Re: Smarty - Šablonovací systém
Napsal: ned 28. úno 2010, 09:28
od KapaCZ
Mám problém a to s opakováním kodu.
Zde jsme se dočetl že se dá použít {foreach}{/foreach} bohužel mě to nefunguje.
http://www.abclinuxu.cz/clanky/navody/s ... e-funkce-1
Kód: Vybrat vše
{foreach from="$akt_" item="datum" key="text"}
<li><b class=\"b\">{$datum}</b> {$text}</li>
{/foreach}
Kód: Vybrat vše
$RiKap_aktuality = mysql_fetch_array(mysql_query("SELECT * FROM RiKap_aktuality ORDER BY id DESC LIMIT 0, 5;"));
$smarty->assign("akt_",$RiKap_aktuality);
Vypisuje to:
Re: Smarty - Šablonovací systém
Napsal: ned 28. úno 2010, 18:48
od NEONET
Kód: Vybrat vše
{foreach from=$akt1 item=datum}
<li><b class="b">{$akt1}</b></li>
{/foreach}
Kód: Vybrat vše
$RiKap_aktuality = mysql_fetch_array(mysql_query("SELECT * FROM RiKap_aktuality ORDER BY id DESC LIMIT 0, 5;"));
$smarty->assign("akt1",$RiKap_aktuality);
nvm, mozna ti to pomuze
edit// ja to mam reseno takto:
trida pro cteni novinek
Kód: Vybrat vše
<?php
/*
* Obsahuje tridu clsNovinky<br>
* administrace novinek<br>
* pridavani, editace, mazani, uprava atd.
*
* @author Milan Sivak
* @copyright DATRON, a.s.
* @package class.Novinky
*
*/
class clsNovinky
{
var $db;
function clsNovinky($db)
{
$this->db = $db;
}
/**
* Pracuje s obsahem tabulky TAB_NEWS
*
* @param array [$sloupce] = array("*") Urcuje jake sloupce chceme vracet z tabulky
* @param int [$limitKolik] = -1 Nastavuje limit vracenych zaznamu (nutno nastavit, aby se nevracelo vse)
* @param int [$limitOd] = -1 Nastavuje limit od jakeho zaznamu zobrazit (vhodne pro strankovani)
* @param string [$where] = false Podminkuje vyber, napr. pokud chceme zobrazit jen novinky stare 5 min
* @param string [$order] = "DESC" Vzestupne, sestupne razeni podle "datum", moznosti: ASC / DESC
* @return array mixed
*/
public function Get($sloupce=array("*"), $limitKolik=-1, $limitOd=-1, $where=false, $order="DESC")
{
$sql = "SELECT ".implode(", ", $sloupce).", UNIX_TIMESTAMP(datum) as datum_unix
FROM `".TAB_NEWS."`";
if ($where)
$sql .= " WHERE $where";
$sql .= " ORDER BY `".TAB_NEWS."`.`datum` $order";
if ($limitOd > -1 and $limitKolik > -1)
$sql .= " LIMIT $limitOd, $limitKolik";
return $this->db->QueryToArray($sql);
}
/**
* Vklada novinku
*
* @param string $nadpis
* @param string $obsah
* @param date("Y/m/d H:i:s") [$datum] = false Pokud neni vyplneno automaticky se dosadi aktualni
* @return int id novinky nebo -1 pri chybe
*/
public function Add($nadpis, $obsah, $datum=false)
{
if (!$datum) $datum = date("Y/m/d H:i:s");
$insertData = array(
"nadpis" => $nadpis,
"obsah" => $obsah,
"datum" => $datum
);
if (!$this->db->Insert(TAB_NEWS, $insertData))
return -1;
return $this->db->InsertId();
}
/**
* Maze novinku
*
* @param int $id
* @return int result
*/
public function Delete($id)
{
return $this->db->Delete(TAB_NEWS, " id_news = $id ");
}
/**
* Upravuje novinku
*
* @param int $id
* @param array $postdata Vhodne pouziti: poslat cely $_POST
* @return int result
*/
public function Edit($id, $postdata)
{
$updateData = array(
"obsah" => $postdata['obsah'], //vytahuje data z $_POST ci jineho pole
"nadpis" => $postdata['nadpisek']
);
return $this->db->Update(TAB_NEWS, $updateData, " id_news = $id ");
}
}
?>
tady uvodni stranka
Kód: Vybrat vše
<?php
if ($_POST)
{
if ($_POST['frm_login'])
{
$zakladni_udaje = true;
$seznam_chyb = array();
$jmeno = $_POST['jmeno'];
$heslo = $_POST['heslo'];
if ($heslo == "" or $jmeno == "")
{
$zakladni_udaje = false;
$seznam_chyb = array_merge($seznam_chyb, array("Vyplňte prosím jméno i heslo"));
}
if ($zakladni_udaje)
if (!$clsUzivatel->LoginValidate($jmeno, $heslo))
{
$zakladni_udaje = false;
$seznam_chyb = array_merge($seznam_chyb, array("Chybně zadané přihlašovací údaje"));
}
if ($zakladni_udaje) //Vsechno je ok..
{
header("Location: home.html");
return;
}
}
}
$novinky = $clsNovinky->Get(array("nadpis", "obsah"), 5);
$smarty->assign("novinky", $novinky);
$smarty->assign("chyby", $seznam_chyb);
$smarty->assign('title', "blablabla");
//POSKLADANI STRANKY
include IP.'/page_php/hlavicka.php'; //vyzaduje $smarty->assign('title', 'titulek');
$smarty->display('home'); //aktualni template pro tento PHP
include IP.'/page_php/menu.php';
include IP.'/page_php/paticka.php';
?>
a tady template pro uvod
Kód: Vybrat vše
<h1 class="ir">
<span>blablabla</span>
</h1>
<p class="exc">
blablablablablablablabla
</p>
{if $chyby}
<p>
<ul style="color: red;">
{foreach from=$chyby item=chyba}
<li>{$chyba}</li>
{/foreach}
</ul>
</p>
{/if}
<div id="boxes">
<div id="left_box">
<strong>blablabla</strong>
<a href="objednavka.html" class="button">Objednat</a>
</div>
{if !$prihlasen}
<div id="right_box">
<strong>blablablablabla</strong>
<form action="{$smarty.server.REQUEST_URI|amp}" method="post">
<fieldset>
<legend>Login</legend>
<p>
<input type="text" id="jmeno" name="jmeno" value="jméno" onfocus="this.value=''" maxlength="100" />
<label for="jmeno">Jméno</label>
</p>
<p>
<input type="password" id="heslo" name="heslo" value="heslo" onfocus="this.value=''" maxlength="100" />
<label for="heslo">Heslo</label>
</p>
<input type="submit" class="login" name="Odeslat" value="Přihlásit" />
<input type="hidden" name="frm_login" value="1" />
</fieldset>
</form>
</div>
{else}
<div id="right_box2">
<p>
Jste přihlášen jako {$uzivatel.username}
<br />
<a href="admin.html"><input type="button" value="Administrace"></a>
<a href="odhlasit.html"><input type="button" value="Odhlásit"></a>
</p>
</div>
{/if}
</div>
<h3>Novinky</h3>
{if $novinky}
<ul>
{foreach from=$novinky item=novinka}
<li style="color: green; font-size: 24px;">{$novinka.nadpis}</li>
<li style="color: black; background-image: none;">{$novinka.obsah}</li>
<li style="color: gray; font-size: 10px; background-image: none;">{$novinka.datum_unix|date_format:'%d.%m.%y - %T'}</li>
{/foreach}
</ul>
{/if}
Re: Smarty - Šablonovací systém
Napsal: ned 28. úno 2010, 19:35
od KapaCZ
Povedlo se mi to upravit:
Kód: Vybrat vše
{foreach from=$akt_ item=text key=datum}
<li><b class="b">{$datum}</b> {$text}</li>
{/foreach}
Kód: Vybrat vše
$RiKap_aktuality = mysql_fetch_array(mysql_query("SELECT * FROM RiKap_aktuality ORDER BY id DESC LIMIT 0, 5;"));
$smarty->assign("akt_",$RiKap_aktuality);
Vypisuje to:

Re: Smarty - Šablonovací systém
Napsal: ned 28. úno 2010, 21:54
od arxeiss
Smarty nepoužívám a nechápu, ale to co vidím je normální chování mysql_fetch_array. Ono vrací jakoby vše 2x. Vlastně vrátí pole s prvky id, text, datum, 0, 1,2 kde 0 a id je to samé. Takže si napiš nad to cyklus, který ti za to pole dosadí jenom ty jedny prvky
Re: Smarty - Šablonovací systém
Napsal: pon 1. bře 2010, 07:55
od KapaCZ
Upravil jsem SQL dotaz:
Kód: Vybrat vše
$RiKap_aktuality = mysql_fetch_array(mysql_query("SELECT datum, text FROM RiKap_aktuality ORDER BY id DESC LIMIT 0, 5;"));
Vypisuje to:

Re: Smarty - Šablonovací systém
Napsal: pon 1. bře 2010, 18:58
od arxeiss
No, to akorát to že nevybíráš ID, ale stále jsi neudělal to co jsem psal já, to že ti to vrátí 2x je normální...
dej tam cyklus
Kód: Vybrat vše
$sql = mysql_fetch_array(mysql_query($dotaz));
for($i=0; $i < count($sql); $i++){
echo $sql[$i]['datum'].$sql[$i]['text'];
}
Edit:\\ Upraven skript
Re: Smarty - Šablonovací systém
Napsal: pon 1. bře 2010, 20:21
od KapaCZ
vůbec nic to nevyřeli je to úplně stejný
Re: Smarty - Šablonovací systém
Napsal: pon 1. bře 2010, 20:23
od arxeiss
Divné, já to používám a spokojeně
Takže pokud to tobě nejede, tak musí být chyba někde v tom SMARTy a to neznám