Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:258:c541:2e...–

peter
HTML / XHTML › zmena layoutu
1. 8. 2014   #192541

pripadne by to slo upravit jeste takto, aby se tam nemusela vypisovat ta adresa 

$home = 'C:\\wamp\\www\\x\\';
switch ($file) // vyber sablonu podle aktualni stranky
  {
case $home.'tpl-file.php': $sablona = 'sablona2.htm'; break;
peter
HTML / XHTML › zmena layoutu
1. 8. 2014   #192540

Nj, klasicka chyba novacku placat php a html kod dohromady. Mnohem prehlednejsi je, ulozit si to do promennych.
Mno, a ten zbytek php kod? Tohle dela jen vykresleni.
Postrehy:
- pred <!DOCTYPE mas radek navic
- doctype bych pouzil jen html <!DOCTYPE HTML>
- php kod na zacatek
- include / require se pise require "function.php"; a include "bottom.htm"; (bez zavorek)
- <? a <?php je dobre psat <?php a taky jednotne a nestridat to

Mno, mi prijde, ze o php asi moc nevis, tak nevim, zda si poradis s timto kodem... Ale necham to ve tvych schopnych rukou. Mam tam pouzite 4 soubory a bude treba upravit obsah() a include(formulare). Tak se drz a snaz :) V podstate to, co je pod ob_start je jedine, co zbyde ve strance. Html kod sablony strany se presune do pomocneho html souboru.

--- tpl/sablona1.htm ---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
  <head>
    <title>{title}</title>
    <link rel="stylesheet" rel="nofollow" href="styles3.css" type="text/css" media="all">
  </head>
  <body>
    <div id="wrapper">
      <div id="header1"></div>
      <div id="header">{bottom}</div>         
      <div id="inner">        
        <div id="middle" class="clearfix">            
          <div id="content">                
            <div id="left1">{left}</div>                                 
            <div id="content2">{content}</div>            
          </div>        
        </div>    
      </div>
      <div id="l"></div>    
      <div id="m"></div>     
    </div>
  {form}
  </body>
</html>

--- tpl/sablona2.htm ---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
  <head>
    <title>{title}</title>
    <link rel="stylesheet" rel="nofollow" href="styles3.css" type="text/css" media="all">
  </head>
  <body>
    <div id="wrapper">
      <div id="header1"></div>
      <div id="header">{bottom}</div>         
      <div id="inner">        
        <div id="middle" class="clearfix">            
          <div id="content">                
            <!-- pozn: smazano left -->                                 
            <div id="content2">{content}</div>            
          </div>        
        </div>    
      </div>
      <div id="l"></div>    
      <div id="m"></div>     
    </div>
  {form}
  </body>
</html>

<?php
//--- function.php ---
function render($data,$file)
{
switch ($file) // vyber sablonu podle aktualni stranky
  {
case 'C:\wamp\www\x\tpl-file.php': $sablona = 'sablona2.htm'; break;
default: $sablona = 'sablona1.htm';
  }
$sablona = 'tpl/'.$sablona; // dopln adresar se sablonami
$sablona = file_get_contents($sablona); // nacti ze souboru text do promenne
$keys = array_keys($data); // ziskam indexy do pole pro str_replace
foreach($keys as $key=>$value) {$keys[$key] = '{'.$value.'}';} // pridam k indexum slozene zavorky
// si muzes udelat vypis pole, jestli te zajima, co tam je:
// echo '<pre>'; print_r($keys); 
return str_replace($keys,$data,$sablona); // nahrad v $sablone text '{bottom}' za obsah promenne pole $data['bottom'] a proved totez pro ostatni indexy pole $data
}

function obsah2()
{
return 'Ahoj';
}

function vlozPhp($url)
{
return 'Formulare: '.$url;
}

//--- stranka.php ---
ob_start();
//require "function.php";
$html = array(
'title' => 'titulek okna prohlizece / text zalozky', //file_get_contents("bottom.htm"), // mi to vypisuje na localhost C:\wamp\www\x\tpl-file.php, totez jsem tedy pouzil pro switch-case pro 'sablona2.htm'
'bottom' => __FILE__.'<br>bottom', //file_get_contents("bottom.htm"), // mi to vypisuje na localhost C:\wamp\www\x\tpl-file.php, totez jsem tedy pouzil pro switch-case pro 'sablona2.htm'
'left' => 'left',//file_get_contents("left1.htm"),
'content' => obsah2(), // upravit php kod, aby nedelal echo
'form' => vlozPhp("formulare/online.php") // upravit php kod
); 
echo render($html,__FILE__);
ob_end_flush();
?>
peter
HTML / XHTML › zmena layoutu
1. 8. 2014   #192533

No, zatim moc nevim, co chces, tvuj kod neznam ani, jak is to asi predstavujes, tam se taky moc nechytam. Zatim jen tak tipuji...  Klidne zkus tahat, ale :)

Ten kus php kodu by mel delat to, ze podle url zvoli sablonu. Precte si souboru podle $sablona. Prepise v nem text {title} na xxx a {h1} na yyy. Na otestovani jsem radek s oteviranim souboru zakomentoval a nahradil ho primym textem
//$sablona = file_get_content($sablona); // otevirani souboru
$sablona = '<title>{title}</title><h1>{h1}</h1>'; // primy text
Kdyz ten kod spustis, tak zdrojovy kod stranky bude mit <title>xxx</title><h1>yyy</h1>. Kdyz si zdrojovy kod nebudes prohlizet, tak v zahlavi okna bude xxx a na strance velke tucne yyy. Proste klasicke nahrazovani str_replace textu (viz php.net manual a priklady tam).

No a text pro nahrazeni si teda zvolis pomoci

switch (__FILE__)
{
case 'konkretni adresa': $sablona = 'tpl/xyz'; break;
default: $sablona = 'tpl/abc';
}

Muzes si pred to napsat
echo __FILE__;
Text, ktery to vypise pak vyplnis misto textu konkretni adresa. Umisteni sablon jsem zvolil do slozky tpl/. Sablonu 1 jsem pojmenoval jako xyz (bez pripony) a sablonu2 jako abc. Jsou to textove soubory, ktere muzou obsahovat treba html kod. nasledny file_get_content je otevre jako text. (viz manual, prace s file_get_content). V obou souborech muzes mit stejny html kod, treba
<title>{title}</title><h1>{h1}</h1>
A nebo tam muzes mit rozdilny html kod, treba tve 2 sloupce nebo 3 sloupce.

 

 

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