Jaký je nejednoduší php framework nebo šablonovací systém? rubrika: Programování: PHP

Anonym
položil/-a 2.4.2016

Vetšinou webové prezentace vytvářím na redakčním systému Joomla. Občas nastanou situace, že nelze Joomlu použít na třístránkové nebo nepravidelně aktualizované weby z důvodu robustnosti systému.

Po ohlížel jsem se po šablonovacím systému (Smarty) nebo po PHP frameworku (Nette, Symfony, PHPixie, CodeIgniter). Bohužel ani jedna ani druhá varianta mě nepřišla vhodná pro statický web.

Návody jsou podle mě neúplný a hlavně jsou pro programátory, který chtějí hned tvořit redakční systém nebo používat databází.

Co by jste mi doporučily?

Komentáře

  • skliblatik : K čemu php pro statický web? 2.4.2016
  • Anonym : Pokud vím tak u statických webových stránek se musí stránky kompletně přepisovat. Než to v php se nemusí přepisovat celé. 2.4.2016
  • Kit : Statické weby běžně generuji v PHP. Je to velmi praktické. 2.4.2016
  • skliblatik : Statický web si můžeš vygenerovat předem a na serveru nemusíš už mít žádné skriptování. Pro vygenerování předem pak můžeš použí širší okruh technologií než jen php. Framework bych moc neřešil - zbytečná komplikace, spíš bych se poohlídl po dostatečně silném šablonovacím systému. V php je asi použitlný twig nebo latte, ale můžeš použít i třeba jinja2, jade, ... 2.4.2016
  • Kit : I samotné PHP má velmi jednododuše použitelné a přitom velmi silné šablonování. Twig nebo Latte jen zavádějí další syntaxi, ale přitom nemají žádný přínos - nijak práci nezjednodušují. 2.4.2016
  • skliblatik : @Kit to je pověra. Srovnal jsi si někdy šablonování v holém php a Twigu nebo Latte reálně? Já to kdysi zkoušel a v holém php to byl fialovej hnus. Kromě toho, že je to nepřehlednější, nejde třeba ani dědit šablony. 2.4.2016
  • skliblatik : <?php foreach($optionMap as $value => $label){?>[option value="<?=$value?>"]<?=$label?>[/option]<?php }?> 2.4.2016
  • skliblatik : {%for value, label in optionMap%}[option value="{{value}}"]{{label}}[/option]{%endfor%} 2.4.2016
  • skliblatik : Když zaměníš hranaté závorky za špičaté, vynikne rozdíl víc. 2.4.2016
  • Tomáš Votruba : Jak vypadá web, který chceš udělat? Jaký problém chceš pomoct vyřešit? 2.4.2016
  • Kit : @skliblatik: <?php echo new OptionMap($optionMap); 3.4.2016
  • skliblatik : @Kit a v OptionMap je funkce __toString, kde se spojujou řetězce? To jsi jen přenesl složitost jinam. Pokud by se jednalo o vytknutí opakující se sekvence, tak je to <?=build_options($option_map)?> vs {{build_options(option_map)}}, ale ve funkci/makru ti původní rozdíl opět vyskočí. V závislosti na implementaci (již jen suché php se spojování stringů vs mix php a html) se to může dál komplikovat. 3.4.2016
  • Kit : @skliblatik: Ano, v OptionMap je metoda __toString(), která ty stringy generuje. Takový objekt se totiž dá vložit přímo do stringu v uvozovkách nebo v Heredoc. Kromě toho mi ten {%for ... vůbec nefunguje, hlásí to syntax error. PHP a HTML nikdy nemíchám, v každém souboru mám právě jednu značku <?php a žádnou značku ?> ani <?=. Prostě mi vadí špagetové šablony. 3.4.2016
  • skliblatik : @Kit ad {%for - to je twig, možná je někde překlep, nevím, nechce se mi instalovat kvůli tomu php. Php a html jsem taky téměř nikdy nemíchal, když jsem dělal v php. A snažil jsem se ani do php nedávat html ani v podobě stringu - z php jsem natlačil data do šablony, a tam je vyrenderoval - pomocí šablonovacího jazyka. V jednu dobu jsem na základě dokola omílaných tvrzení na chvíli uvěřil, že php je vhodné jako šablonovací jazyk, ale pak jsem si ověřil, že to není pravda. No nic - asi bylo napsáno dost, aby si tazatel mohl vytvořit vlastní názor. 3.4.2016
  • Kit : @skliblatik: Twig? Říkal jsem si, že je to nějaký podivný zápis. Teď už HTML značky do PHP také nedávám, viz má odpověď úplně dole. V PHP data natlačím do DOMu a ten také strčím do šablony XSLT, která si v případě potřeby natáhne i jazykové moduly a číselníky v XML. 3.4.2016
  • Taco : @skliblatik: Že mu na to skáčeš. Nejde o to, že by si tam měl překlep. Jde o to, že se neobtěžoval ten twig instalovat. 4.4.2016
  • Kit : @Taco: Kuš! :-) 4.4.2016
odkaz
7 xxar3s
odpověděl/-a 2.4.2016

Minule ked som robil staticke sablony pre rakusanov HTML + CSS + JS, kde sa opakoval layout stranky tak som pouzil sablonovaci system Latte a potom som cez nodemon watchoval zmeny v sablonach. Akonahle v .latte subore nastala zmena, spustil sa PHPskript ktory z .latte sablon vygeneroval html-ko. Po refreshi som videl vysledok hned v prehliadaci.

latte-run.cmd:

nodemon index.js -e js,css,latte

index.js:

var spawn = require("child_process").spawn;
spawn("php", ["latte/build.php"]);

latte/build.php:

define('LATE_DIR', dirname(__FILE__));
define('ROOT_DIR', LATE_DIR . '/..');
 
require_once LATE_DIR . '/latte.php';
 
$latte = new Latte\Engine;
$latte->setTempDirectory(LATE_DIR . '/temp');
 
foreach ([
    'index',
    'detailseite_kanzlei',
    'detailseite_schwerpunkte',
    'schwerpunkte',
    'team'] as $name)
{
    $html = $latte->renderToString(ROOT_DIR . "/page/{$name}.latte");
    file_put_contents(ROOT_DIR . "/{$name}.html", $html);
}

Komentáře

  • Taco : Příjemná vychytávka. 6.4.2016

Pro zobrazení všech 8 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.