Zmena layoutu – HTML / XHTML – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zmena layoutu – HTML / XHTML – Fórum – Programujte.comZmena layoutu – HTML / XHTML – Fórum – Programujte.com

 

ebeš
~ Anonymní uživatel
29 příspěvků
30. 7. 2014   #1
-
0
-

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/

Nahlásit jako SPAM
IP: 178.41.94.–
peter
~ Anonymní uživatel
4014 příspěvků
30. 7. 2014   #2
-
0
-

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.

Nahlásit jako SPAM
IP: 2001:718:2601:258:d4ee:5c...–
ebeš
~ Anonymní uživatel
29 příspěvků
30. 7. 2014   #3
-
0
-

#2 peter
Viem a aj mam urobene jedno aj dvojstlpcove layouty. Rozmyslala som aj nad tym.,ze v na uvodnej stranke budem odkazovat cez nove index php na ino stlpcovy layout.Ale  to je take absurdne .Urcite musi existovat aj elegantnejsie riesenie.  

Nahlásit jako SPAM
IP: 178.41.94.–
peter
~ Anonymní uživatel
4014 příspěvků
30. 7. 2014   #4
-
0
-

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.
Nahlásit jako SPAM
IP: 2001:718:2601:258:d4ee:5c...–
ebeš
~ Anonymní uživatel
29 příspěvků
31. 7. 2014   #5
-
0
-

#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?.

Nahlásit jako SPAM
IP: 178.41.94.–
peter
~ Anonymní uživatel
4014 příspěvků
31. 7. 2014   #6
-
0
-

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

Nahlásit jako SPAM
IP: 2001:718:2601:258:7908:ad...–
ebeš
~ Anonymní uživatel
29 příspěvků
1. 8. 2014   #7
-
0
-

#6 peter
Bola by som moc drza, keby som este dalej tahala z teba rozumy? Z fleku sa nechytam, uz dlhsie sa tomu nevenujem.

Nahlásit jako SPAM
IP: 178.41.94.–
peter
~ Anonymní uživatel
4014 příspěvků
1. 8. 2014   #8
-
0
-

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.

Nahlásit jako SPAM
IP: 2001:718:2601:258:c541:2e...–
ebeš
~ Anonymní uživatel
29 příspěvků
1. 8. 2014   #9
-
0
-

#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.

Nahlásit jako SPAM
IP: 178.41.94.–
peter
~ Anonymní uživatel
4014 příspěvků
1. 8. 2014   #10
-
0
-

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();
?>
Nahlásit jako SPAM
IP: 2001:718:2601:258:c541:2e...–
peter
~ Anonymní uživatel
4014 příspěvků
1. 8. 2014   #11
-
0
-

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;
Nahlásit jako SPAM
IP: 2001:718:2601:258:c541:2e...–
ebeš
~ Anonymní uživatel
29 příspěvků
4. 8. 2014   #12
-
0
-

#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.

Nahlásit jako SPAM
IP: 178.41.94.–
peter
~ Anonymní uživatel
4014 příspěvků
4. 8. 2014   #13
-
0
-

   

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();
Nahlásit jako SPAM
IP: 2001:718:2601:258:68d1:47...–
peter
~ Anonymní uživatel
4014 příspěvků
4. 8. 2014   #14
-
0
-

Jo, pred ob_start melo byt samozrejme stranka.php, jakoze jiny soubor a require function.

//--- stranka.php ---
require "function.php";
Nahlásit jako SPAM
IP: 2001:718:2601:258:68d1:47...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

 

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