« 1 2 »
Autor Zpráva
Svitko
Profil *
Mam taku oztazku, pouzivame tento kod na generovanie stranok alebo ako to nazvat.
<?php
$page=$_GET['page']; if (!$page) {$page='uvod';} switch ($page) 
{ 
case 'uvod': include 'stranky/uvod.html'; 
break;
case 'stranka1': include 'stranky/stranka1.html'; 
break;
case 'stranka2': include 'stranky/stranka2.html'; 
break;
}
?>


Len sa chcem opytat ci je mozne nejak tento kod upravit tak aby mi skazdou stranko menil aj TITLE stranky???
Taps
Profil
Svitko
zkus to takto
<?php
$page=$_GET['page']; if (!$page) {$page='uvod';} switch ($page) 
{ 
case 'uvod': 
$title="uvod";
include 'stranky/uvod.html'; 
break;
case 'stranka1':
$title="stranka1";
 include 'stranky/stranka1.html'; 
break;
case 'stranka2': 
$title="stranka2";
include 'stranky/stranka2.html'; 
break;
}
?>
<html><head><? echo $title; ?></head><body>

</body></html>
Svitko
Profil *
To nejde, teda ak som to nespravil zle:
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title><? echo $title; ?></title>
  </head>
  <body>
<?php
$page=$_GET['page']; if (!$page) {$page='uvod';} switch ($page) 
{ 
case 'uvod': 
$title="uvod";
include 'uvod.html'; 
break;
case 's1':
$title="stranka1";
 include 's1.html'; 
break;
case 'stranka2': 
$title="stranka2";
include 's2.html'; 
break;
}
?>
<br />
<a href="index.php?page=s1">stranka1</a>
  </body>
</html>
Svitko
Profil *
Tak co nikto netusite ako by to malo byt spravne?
AM_
Profil
Tak co nikto netusite ako by to malo byt spravne?
nere-postuj, nedělá se to.

máš to špatně, nejdřív tu proměnnou pochopitelně musíš naplnit, než ji použiješ, takže ten switch si nacpi někam na začátek, do $title ulož titulek a třeba do $body ulož, který soubor budeš includovat.
Svitko
Profil *
Hmm az nato ze som to nejak nepochopil :D
panther
Profil
Svitko
Hmm az nato ze som to nejak nepochopil :D
a co přesně na „tu proměnnou pochopitelně musíš naplnit, než ji použiješ, takže ten switch si nacpi někam na začátek“ nechápeš?
blizz_boz
Profil
ahoj naco tam mas ten case?

je uplne zbytocny ja by som ten kod na tvojom mieste skratil:

<?php
if (!isSet($_GET['page'])) $_GET['page'] = 'uvod';
$path = "stranky/{$_GET['page']}.html";
require_once(file_exists($path) ? $path : '404.html');


no s tym title to mozes vyriesit tak ze na zaciatok kazdeho vkladaneho suboru das nejaku globalnu premennu napr.:

<?php $GLOBALS['title'] = 'nadpis'; ?>


a potom budes menit title na sablone ale az za tym ako vloziz ten html subor. Elegantnejsie sa to riesi cez databazu, kazdy clanok ma stlpec title.
Svitko
Profil *
ahoj naco tam mas ten case?
je uplne zbytocny ja by som ten kod na tvojom mieste skratil:
1234 <?phpif (!isSet($_GET['page'])) $_GET['page'] = 'uvod';$path = "stranky/{$_GET['page']}.html";require_once(file_exists($path) ? $path : '404.html');
no s tym title to mozes vyriesit tak ze na zaciatok kazdeho vkladaneho suboru das nejaku globalnu premennu napr.:
1 <?php $GLOBALS['title'] = 'nadpis'; ?>
a potom budes menit title na sablone ale az za tym ako vloziz ten html subor. Elegantnejsie sa to riesi cez databazu, kazdy clanok ma stlpec title.

No to case som tam mal preto lebo tam bolo (ja sa v tom neviznam :))
No to tvoje ide, lenze len ked dam to title pod ten php script a tym padom je uz v body co je dost blbe. Nejde to nejak tak aby bolo tam kde ma byt.
Svitko
Profil *
No to case som tam mal preto lebo tam bolo (ja sa v tom neviznam :))
No to tvoje ide, lenze len ked dam to title pod ten php script a tym padom je uz v body co je dost blbe. Nejde to nejak tak aby bolo tam kde ma byt.
Svitko
Profil *
Posledne dve zmazte, troska mi zblbol prehliadac. Sorry
blizz_boz
Profil
Svitko
Ved prave preto by si mal pouzit nejaky sablonovaci system, a potom mozes menit title az po nacitani vkladanej stranky a pritom title bude v hlavicke. Mozem ti poslat bud moj sablonovaci system alebo si stiahni napr Smarty ale ten nwm ci podporuje PHP kod priamo v sablone... Moj sablonovaci system podporuje priamo title o nic sa nemusis starat...

$template = new Template('default-template');
$template->setTitle(true);
$template->select('index');
$template->assign("TITLE", "Nazov stranky");
$template->assignFile("OBSAH", PAGES_DIR . '/stranka.php');


moj sablonovaci system vytvara nadpis z casti, ktoru nastavis metodou assign a tym co obsahuje sablona v globalnej premennej title vo vkladanej stranke.

teda nadpis bude mat tvar "Nazov vkladanej stranky - Hlavny nazov celej stranky"
AM_
Profil
postup:
<?php
  $title='Ahoj';
  $include='ahoj.php';
?>
<html><head><title><?php echo $title; ?></title>
....
<?php include $include; ?>

jen si nahoře místo těch pevných přiřazení dáš ten case.
blizz_boz
Profil
AM_

No ale týmto spôsobom nemôže nastavovať nadpis priamo vo vloženej stránke. Je to dosť krkolomné riešenie... :/
Svitko
Profil *
to blizz_boz:

Tak s toho som uz uplne magor :D.
Nemohol by si mi ten priklad poslat na email: jsvitek@gmail.
blizz_boz
Profil
vidím že v PHP asi nie si doma. veď pošli mi celý projekt na mail a ja ti to prerobím tak, aby si mohol používať nadpisy...

blizz.boz@gmail.com
AM_
Profil
blizz_boz
mě spíš přijde krkolomné jen kvůli nadpisu zavádět šablonovací systém :)
a nevím, proč by titulky nemohly být zapsané v jednom souboru, obzvlášť pokud to nechce moc komplikovat.
Svitko
Profil *
No nemam ziadny projekt, ja to skusam na uplne jednoduchych veciach. Zatial este web nemam spraveny. Teda mam ale budem ho prerabat. Ak je to nejak moc zlozite tak to asi bude zbytocne. Mne osobne by to stacilo ako si napisal to prve len to title keby sa dalo dat do head.
blizz_boz
Profil
AM_
lebo vzdy ked prida novy subor (napr. navy clanok) do projektu tak musi editovat aplikaciu len preto aby pridal jeden nadpis.

naopak pre mna je najvyssia priorita, jednoduchost. hlavne jdnoduchost rozsiritelnosti systemu. a pouzit ten sablonovaci system je uplne jednoduche a prehladne kod je plne objektovy... takto aspon ziska spravne navyky...

Svitko
pre mna je najednoduchsie ulozit si clanky do databazy a vkladat ich pomocou sablonovacieho systemu, moj redakcny system najprv skontroluje ci je clanok ulozeny v databaze a ked ho nenajde tak ho hlada ako subor na disku a automaticky ho vlozi do sablony...
Svitko
Profil *
Ano databaza je fajn ale problem je ze nie je a nemozem ju pouzit. Preto toto. Je to jednoducha stranka. Kde by to bolo aj zbytocne. Pozri ak mozes take nejaku tu sablanu posli. Staci jednoducha index+nejake 2 stranka. Aby som videl ako to funguje. Teda ak mozes.
blizz_boz
Profil
nj ked budem mat cas tak zajtra ti to poslem ak by som zabudol tak mi to pripomen...
AM_
Profil
Svitko
pokud si nedokážeš aplikovat řešení co jsem ti poslal ve [#13] , tak do šablony se tuplem zamotáš.
Svitko
Profil *
No na ten tvoj som sa ani nejak nepozeral, to moj problem myslim ani moc neriesi.
blizz_boz
Profil
Svitko

no tak mám to tu, keby si chcel aj vysvetlenie tak môžem zajtra:

<?php
header("Content-Type: text/html; charset=UTF-8"); //nastaví slovenské kódovanie

define('TEMPLATES_DIR', 'templates');

require_once 'libs/template.php'; //nahraje knižnicu na prácu so šablónami

if (!isSet($_GET['page'])) $_GET['page'] = 'uvod';

$path = "pages/{$_GET['page']}.html";

$template = new Template('sablona-priklad');
$template->setTitle(true);
$template->select('index');
$template->assign("TITLE", "Portál");
$template->assignFile("CONTENT", file_exists($path) ? $path : '404.html');
echo $template->build();


http://www.ipremiere.eu/apps/template-example.zip

a tu je demo:

http://www.ipremiere.eu/apps/sablony-demo/
AM_
Profil
No na ten tvoj som sa ani nejak nepozeral, to moj problem myslim ani moc neriesi.
ne, to tvůj problém vyřešilo tak 100x jednoduššeji, než nasazování šablon, ale dobře :) pouze musíš použít vlastní inteligenci a dosadit si do toho kódu to, co zde bylo napsáno dříve :)
Svitko
Profil *
AM_
to je sice pravda ze je to jednoduchsie, no ja by som aj pouzil nejake inteligentne myslenie ale ja sa v PHP vobec nevyznam :D, k tomu som este nedosiel. Zatial len html a CSS.

blizz_boz
Diik, pozrem a uvidim co stym :)
Svitko
Profil *
AM_

No uz som to tvoje pochopil :) a funguje.

<?php
$page=$_GET['page']; if (!$page) {$page='uvod';} switch ($page) 
{ 
case 'uvod': 
$title='uvod';
$include='uvod.html';
break;
case 's1': 
$title='stranka1';
$include='s1.html';
break;
}
?>
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title><? echo $title; ?></title>
  </head>
  <body>
<?php include $include; ?>
<br />
<a href="index.php?page=s1">stranka1</a>
  </body>
</html>


Ale nedalo by sa tam nasatavit nejak kod od blizz_boz v prispevku 8.
Lebo to je jednoduksie o co si. Len by to chcelo aby sa tam dal aj nastavit adresar. Lebo takto by mohli byt stranky len v jednom.

<?php
if (!isSet($_GET['page'])) $_GET['page'] = 'uvod';
$path = "stranky/{$_GET['page']}.html";
require_once(file_exists($path) ? $path : '404.html');
?>
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title><? echo $title; ?></title>
  </head>
  <body>
az tu sa ma zobrazit text <br />
<?php include $path; ?>
<br />
<a href="index.php?page=s1">stranka1</a>
  </body>
</html>


Ja som to dal takto ale to nie je dobre, lebo sa mi tam ta stranka vygeneruje dvakrat :D.
AM_
Profil
jistěže lze nastavit adresář. dal bych tam konstantu, takže na začátek něco jako
DEFINE('PAGE_DIR', 'stranky/');

...
include PAGE_DIR.$include;

generuje se ti to dvakrát, protože v záhlaví máš require_once a v těle pak znovu include, které se chovají prakticky identicky - vyhoď to require_once, protože to obsah načítá na špatném místě.
Svitko
Profil *
OK skusim len ako mam v odkaze dafinovat potom adresar??
Svitko
Profil *
Teda aby sme sa rozumeli ja chcem aby sa dalo v odkaze definovat aky bude adresar pre danu stranku ktoru ma nacitat.
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0