Jump to content
php.lv forumi

Skaistu template veidošana


yeahz

Recommended Posts

Papētīju phpbb templates, un sapratu, ka es arī tādā stilā gribu taisīt, lūk piemērs:

<!-- BEGIN bool -->
<!-- IF bool.FIELD_LENGTH eq 1 -->
	<!-- BEGIN options --><input type="radio" class="radio" name="{bool.FIELD_IDENT}" value="{bool.options.OPTION_ID}"{bool.options.CHECKED} /><span class="genmed">{bool.options.VALUE}</span>   <!-- END options -->
<!-- ELSE -->
	<input type="checkbox" class="radio" name="{bool.FIELD_IDENT}" value="1"<!-- IF bool.FIELD_VALUE eq 1 --> checked="checked"<!-- ENDIF --> />
<!-- ENDIF -->
<!-- END bool -->

 

Pats ar googles palīdzību esmu ticis tik tālu:

function template_output($page = 'index') {
global $INFO;

include("$INFO[switch]/$page.php");

$template = file_get_contents("template/header.html");
$template .= file_get_contents("template/$page.html");
$template .= file_get_contents("template/footer.html");

$search = array(
'|{TITLE}|',
'|{ERRORS}|',
'|{SUCCESSFULLY}|'
);

$replace = array(
'kkaads title',
$errors = isset($errors)?$errors:'',
$successfully = isset($successfully)?$successfully:''
);

$output = preg_replace($search, $replace, $template);
echo $output;
}

 

<h2>Ielogošanās</h2>

<div id="login">

<form action="" method="post">
	{ERRORS}{SUCCESSFULLY}
	<table>
		<tr><td><p>Lietotājvārds</p></td><td><input class="medium" type="text" name="username" /></td></tr>
		<tr><td><p>Parole</p></td><td><input class="medium" type="password" name="password" /></td></tr>
		<tr><td colspan="2" align="right"><input type="submit" value="Ielogoties" /></td></tr>
	</table>
</form>

</div>

 

Ar konkrētām lietām, kā {ERRORS} esmu ticis galā, bet kā lai veido to konstrukciju ar IF'iem? Būtu ļoti jauku, ja kāds izskaidrotu. + Varbūt jums ir kādi citi varianti, kā veidot šādas lietas. Ja ir, padalies. :)

Link to comment
Share on other sites

Jeega to pasham rakstiit nav - izmanto Smarty.

 

Un vispaar - es iesaku taadas lietas vispaar neizmantot. Pasaki luudzu kaadi tev buus ieguvumi ja izgudrosi savu (vai izmantosi gatavu) template language?

 

Reku tas augshas kods normala izskata (izgriezu nedaudz funkcionalitati, bet tas pats vien ir):

 


<? if($field_length == 1) : ?>
       <input type="radio" class="radio" name="name_var_rakstit_pats" value="<?= $value ?>" />
       <span class="genmed"><? echo $kautkas; ?></span>
<? else : ?>
       <input type="checkbox" class="radio" name="name_var_rakstit_pats" value="1" />
<? endif; ?>

Link to comment
Share on other sites

PHP pats par sevi ir template engine :)

 

Bet ja nu tik ļoti gribas, tad viens no labākajiem/vienkāršākajiem variantiem varētu būt CodeIgniter template klase. Lai gan vienīgais, kas pa lielam mainās ir <?=$var;?> uz {var}

 

MVC arī zināmā mērā varētu saukt par template sistēmu, jo atkarībā no apstākļiem tiek ielādēts konkrēts view's.

Es te vienā ne uz MVC balstītā projektā izdomāju ieviest vismaz CV (bez M) un tad tika uzrakstīta elementāra funkcija (arī balstīta uz tā paša CI loģikas).

function view($view, $vars = array(), $echo = true){
if(!empty($vars)) extract($vars); // mainīgie extraktojas tikai funkcijas ietvaros
ob_start();
include($view.'.php');
$html = ob_get_contents();
ob_end_clean();
if($echo) echo $html;
return $html;
}

Link to comment
Share on other sites

njaa tā ir kā valoda valodā tā kā kkādas matrjoškas. bet ja cilvēkiem tā patīk, kāpēc gan ne? :D

 

btw man arī tas "eq" kkā ar asmu asociējās, lai gan pats asm nemaz neprotu. tikai kodu esmu paskatījies (arī domājot par kodēšanas stilu :D)

 

oi un perlā tač arī tas eq bija ;)

Edited by 2easy
Link to comment
Share on other sites

Tā, še re kur template engine, kurš līdzīgs phpbb template bāzei:

 

http://quickskin.worxware.com/

 

Vari būvēt tālāk visu, ko tev vajag.

Link to comment
Share on other sites

kādam vnm liksies ērts kkas, kas citam liksies galīgi neērts (vai suņa murgi). pieņemsim, ka 10 miljoniem developeru patīk templates, un viņi raksta savos blogos, cik tas ir forši. bet citiem 50 miljoniem developeru pietiek ar php replace funkcijām un nekas nav pretī arī, ka htmlā ir <?php if (...) ?>

 

vēl citi vsp nelieto templates, bet raksta htmlu tāpat iekš echo 'daudzas rindas ar html tagiem' un/vai ģenerē html ar funkcijām (piemēram crazy 2easy :D:D:D)

Link to comment
Share on other sites

Man tad gribētos jautāt - ja template sistēmas ir tāds murgs, kāpēc tik daudzi tos izmanto.

Kāpēc, piemēram, PHPBB radījis šādu savu template? Un man viņu template pagaidām liekas diezgan parocīga.

Es neaizstāvu neko, tikai gribu zināt...

 

Nez, iespējams, ka viņi padomāja arī par tiem, kas paši vēlētos mainīt templeitu saturu. Un kaut kādam cilvēkam, kas nerubī php, šis tē izskatītos tīrāk, skaidrāk:

 

html html html {user_name} html html html

nekā

html html html <?php echo $user_name;} html html html

Link to comment
Share on other sites

Man tad gribētos jautāt - ja template sistēmas ir tāds murgs, kāpēc tik daudzi tos izmanto.

Es nesaku, ka pati template ideja ir nepareiza. Bet tas, ka PHP pati ir template valoda un nav vajadzīgs template valodā būvēt iekšā vēlvienu valodu.

 

Kāpēc, piemēram, PHPBB radījis šādu savu template? Un man viņu template pagaidām liekas diezgan parocīga.

Kam negadās realizēt savas stulbās iedomas?

Viņu template nav nearko parocīgāka, kā uz PHP balstīta, bet daudz lēnāka gan.

 

 

Kāpēc es esmu tik kritisks?

Tāpēc, lai jaunie, kas mācās, nesāk jau pašā sākumā iet pa nepareiziem ceļiem.

Link to comment
Share on other sites

solis pretī muļķiem dažreiz ir arī solis pretī muļķīgam risinājumam

 

EDIT: es ar to gribēju teikt tikai to, ka Jūs visi, kas protat php, labāk izmantojiet php kodu ar

<?= $user_name ?>

nevis kkādu template valodu ar {user_name}. bet ja ļoti gribās htmlā repleisot {user_name}, tad vnk

strtr(file_get_contents('lapa.tpl'), array('{user_name}' => '2easy'))

savādāk codez pareizi teica, ka template engini ir lēnāki, jo ir apkarināti vēl ar 100 citām fīčām, kuras jūs nemaz nelietojat. ja vajag tikai kko repleisot, to var izdarīt arī ar php. ja templeitā vajag ifus vai ciklus, tad vēlreiz padomājiet, vai tiešām Jums tos vajag likt iekš template

Edited by 2easy
Link to comment
Share on other sites

html html html {user_name} html html html

nekā

html html html <?php echo $user_name;} html html html

Un tad kad tekstaa Reali vajadzees {user_name} tad tas nabga lietootajs, skjers galvu

{vai nejaushi trapiisies kaada skritiiba ... tad vispar var meklet un kjert buugus lidz bezgaliibai, teiksim izveidojiet standarta Templatu (HTML) kas aprakstiis dotas Templatu Engina Prieksrociibas ( neizmantojot Special entiites etc viltiibinjas)

...

Vismaz otrais varjants Skaidri un gaishi noraada Kura vieta ir Inkludots konkretais teksts ( bilde etc)

Ja maak smuki nodaliit PHP pamat kodu no pasha HTML tad nelieli PHP iestarpinajumi ( echo ... )

nepavisam nepgruutina HTML dizaina nomainju etc ..

Un Userim paskaidrot kas ir {user_name} un kas ir <?php echo $user_name; ?> ir vienlidiz sarezgiiti/viegli

pedejais varjant Preciizak norda ka tas ir Kods, nevis vienkarsh teksts ...

P.S. nu ja vel Jau ir Relegiskas dabas jautaajums ;)

Edited by Grey_Wolf
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...