Vedeli by ste mi prosím poradiť,ako urobiť
úvodná stránka - obsah,jeden stĺpec
podstránka- obsah,2 stĺpce
Ako je to napr. na http://www.nedbalka.sk/
Vedeli by ste mi prosím poradiť,ako urobiť
úvodná stránka - obsah,jeden stĺpec
podstránka- obsah,2 stĺpce
Ako je to napr. na http://www.nedbalka.sk/
Kdyz to neumis pres css, pouzij tabulku. Pro 5 stranek nema smysl vymyslet...
Pripadne si dej do google = example simple 2 column layout. Pokud to najde neco jednoducheho, tak si tu stranku uloz a uprav nebo zkopiruj kod.
Aha, takze layouty mas, jen to potrebujes spojit, abys to mohla prepinat.
Co treba v CSS zadat display:none podle class v body? Cili, v php bych si z __FILE__ vytahl nazev souboru. (Pres reg. vyrazy mu odstranil diakritiku, dal spravne podtrzitka a tak) a pouzil to pro
<body class="index">
.index #levy {display:none;}
Pripadne tam pridat hloubku zanoreni? Protoze index nazev muze byt i v nejake slozce.
http://php.net/…edefined.php
$s = __FILE__;
$hloubka = count($s) - count(str_replace('/',''$s)); //lepe asi http://cz2.php.net/…tr-count.php
$r3 = '~^(.*).?[^.]*$+~'; $r2 = '~^.*/([^/]*)$+~'; $r1 = '~/$+~';
$name = preg_replace($r3,"$1",preg_replace($r2,"$1",preg_replace($r1,'',$s); // r1 by mel odstranit lomitka z konce (kdyz mas treba slozku slozka/), r2 ze zacatku do posledniho nalezeneho lomitka a r3 by mel odstranit vsechno po tectu; Netestovano! Asi by to slo napsat i do jednoho vyrazu.
#4 peter
Dakujem.
Rozumiem tomu malo a asi aj blbo, lebo ja nepotrebujem len skryt lavy stlpec,ale aj ho menit a taktiez aj obsah.
De facto mam 4 layouty.
Prvý uvodny- jednostlpcovy, z ktoreho sa mozem prepnut na 3 rozne dvojstlpcove / lisia sa v oboch stlpcoch/
Nedalo by sa to riesit nejakou podmienkou if v index php?.
Dalo, nevime, jak to mas resene. Pres swich porovnas s adresou. Pres file_get_content si stahnes text z sablony do promenne a pres str_replace v ni nahradis udaje.
<?php
switch (__FILE__)
{
case 'konkretni adresa': $sablona = 'tpl/xyz'; break;
default: $sablona = 'tpl/abc';
}
$data = array(
'{title}' => 'xxx',
'{h1}' => 'yyy'
);
//$s = file_get_content($sablona);
$sablona = '<title>{title}</title><h1>{h1}</h1>';
$out = str_replace(array_keys($data),$data,$sablona);
echo $out;
?>
Ja treba mam v jednom programu seznam ruznych promennych (ktere by asi nekdo dal do databaze):
- stranka soubor (pouzivam pro <form action=...>, navigaci a nejaky kod)
- stranka title (<title>...)
- stranka popis (<a title=...>)
- stranka nadpis (<h1>...)
- sablona
- editace datum (se da pouzit do paticky, informace pro nahodneho uzivatele, jak aktualni stranka je)
- editace uzivatel
- tvurce datum
- tvurce uzivatel
a mozna neco dalsiho
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.
#8 peter
Nejdem cez html ale php kody.A kvoli bezpecnosti pouzivam tabulky s cislami stranok .V prehliadaci sa mi potom nezobrazuju cesty k suborom.Ale pri tomto rieseni sa mi asi zobrazi, pravda? Co s tym?
Toto je index php
<?
ob_start ();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head>
<link rel="stylesheet" rel="nofollow" href="styles3.css" type="text/css" media="all">
</head>
<?
require "function.php";
?>
<body>
<div id="wrapper">
<div id="header1">
</div>
<div id="header">
<?php
include("bottom.htm")
?>
</div>
<div id="inner">
<div id="middle" class="clearfix">
<div id="content">
<div id="left1">
<?php
include("left1.htm")
?>
</div>
<div id="content2">
<?
obsah2()
?>
</div>
</div>
</div>
</div>
<div id="l"></div>
<div id="m"></div>
</div>
<?php
include("formulare/online.php")
?>
<?
ob_end_flush ();
?>
</body>
</html>
A fungovat to ma tak, ze uvodna stranka je bez left.Na uvodnej stranke su 3 vybery.Tie su uz s leftom, pricom kazdy vyber ma iny left a iny obsah.
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();
?>
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;
#11 peter
Novacik? JA som starusik.Kedysi velmi davno som nieco urobila a teraz som sa zasa dala na nieco nahovorit.Keby aspon nevymyslali debiliny. Som z toho blba a navyse nervozna,lebo mam kopu inej roboty.
1.TAkze som vytvorila priecinok tpl, kde som ulozila sablona1.htm, sablona 2.htm.Kedze mi vypadlo z kodu include( "left.htm"), ako zabezpecim nacitanie prislusneho suboru?
2.
'content' => obsah2(), // upravit php kod, aby nedelal echo
Samozrejme ze neviem, ako upravit
toto je funkcia obsah:
function obsah()
{
if(IsSet($_GET['strana'])): // overime, ci existuje premmenna $page
pripojit();
$vysledok = MySQL_Query("SELECT url FROM pages WHERE id ='".mysql_real_escape_string($_GET[strana])."'"); // napiseme sql prikaz
if(MySQL_NumRows($vysledok)==1):
$url = MySQL_Result($vysledok, 0, "url"); // adresu z databazy zapiseme do premennej $url
else:
$url = "prazdne.htm"; // pokial zaznam nebol najdeny, tak do premennej $url vlozime inu stranku, napr. upozornenie na chybu
endif;
else:
$url = "strana/main.htm"; // v pripade, ze neexistuje premenna $page, vlozime do $url hlavnu stranku
endif; // ukoncime prvu podmienku
require $url; // vygenerujeme stranku
}
A tych obsahov a leftov mam zasa viac.Na uvodnej stranke mam obsah 1/ bez leftu - to uz je zabezpecne v sablone/
Pri vybere 1 mam obsah 2, left2.
Pri vybere 2 mam obsah 3, left 3
Pri vybere 3 mam obsah 4, left 4
V php kode mam uz iba funkciu hlavicka a patka.
require $url; // nahradit
return file_get_contents($url); // mozna, jestli tam neni php kod
Jinak se zda, ze to bude asi slozitejsi problem, ze by to chtelo asi zvolit jinou metodu. Volba sablony zustane, ale v sablone bude tvuj php kod. A pak bys pouzila include('tpl/sablona1.php').
//--- function.php ---
function render($file)
{
switch ($file)
{
case 'C:\wamp\www\x\tpl-file.php': $sablona = 'sablona2.php'; break;
default: $sablona = 'sablona1.php';
}
include('tpl/'.$sablona};
}
ob_start();
render(__FILE__);
ob_end_flush();
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku