Jump to content
php.lv forumi

Vispār Kopā.


Venom

Recommended Posts

  • 2 weeks later...

Kāpēc jādrukā tas <? xml ... ????

Ja jau esat aizdomājušies līdz XML, tad pēdējais laiks iebraukt šablonos.

Defaultais HTML liekams šablonfailā. Šablonu apstrādātājs meklē īpašās vietas un tās aizvieto ar vajadzīgo. Teiksim ar {{CHARSET}} apzīmē vietu, kur jāievieto lapas charsets un notiek tas viss ir nasko str_replace().

 

Mana šablonu klase (vislabākā pasaulē atrodamā):

 

<code><font color="#000000">

<font color="#0000CC"><?
</font><font color="#006600">class </font><font color="#0000CC">MyShape
</font><font color="#006600">{
var </font><font color="#0000CC">$ROOT </font><font color="#006600">= </font><font color="#CC0000">""</font><font color="#006600">;
var </font><font color="#0000CC">$SHAPENAMES </font><font color="#006600">= array();
var </font><font color="#0000CC">$SHAPES </font><font color="#006600">= array();

function </font><font color="#0000CC">MyShape</font><font color="#006600">(</font><font color="#0000CC">$path_to_root</font><font color="#006600">=</font><font color="#CC0000">''</font><font color="#006600">)
{
	</font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">ROOT </font><font color="#006600">= </font><font color="#0000CC">$path_to_root</font><font color="#006600">;
}

function </font><font color="#0000CC">get_shape</font><font color="#006600">(</font><font color="#0000CC">$shape</font><font color="#006600">)
{
	if (isset(</font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">SHAPES</font><font color="#006600">[</font><font color="#0000CC">$shape</font><font color="#006600">]))
	{
		return </font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">SHAPES</font><font color="#006600">[</font><font color="#0000CC">$shape</font><font color="#006600">];
	}
	else
	{
		return(</font><font color="#0000CC">[url=http://lv.php.net/implode]implode[/url]</font><font color="#006600">(</font><font color="#0000CC">[url=http://lv.php.net/file]file[/url]</font><font color="#006600">(</font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">ROOT </font><font color="#006600">. </font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">SHAPENAMES</font><font color="#006600">[</font><font color="#0000CC">$shape</font><font color="#006600">]),</font><font color="#CC0000">""</font><font color="#006600">));
	}
}

function </font><font color="#0000CC">new_shape</font><font color="#006600">(</font><font color="#0000CC">$shape_attributes </font><font color="#006600">= array())
{
	while (list(</font><font color="#0000CC">$shapename</font><font color="#006600">,</font><font color="#0000CC">$shapesource</font><font color="#006600">) = </font><font color="#0000CC">[url=http://lv.php.net/each]each[/url]</font><font color="#006600">(</font><font color="#0000CC">$shape_attributes</font><font color="#006600">))
	{
		</font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">SHAPENAMES</font><font color="#006600">[</font><font color="#0000CC">$shapename</font><font color="#006600">] = </font><font color="#0000CC">$shapesource</font><font color="#006600">;
	}
}

function </font><font color="#0000CC">insert_values</font><font color="#006600">(</font><font color="#0000CC">$shapename</font><font color="#006600">,</font><font color="#0000CC">$fields_and_values</font><font color="#006600">)
{
	</font><font color="#0000CC">$shape </font><font color="#006600">= </font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">get_shape</font><font color="#006600">(</font><font color="#0000CC">$shapename</font><font color="#006600">);
	while(list(</font><font color="#0000CC">$field_name</font><font color="#006600">,</font><font color="#0000CC">$field_value</font><font color="#006600">) = </font><font color="#0000CC">[url=http://lv.php.net/each]each[/url]</font><font color="#006600">(</font><font color="#0000CC">$fields_and_values</font><font color="#006600">))
	{
		</font><font color="#0000CC">$shape </font><font color="#006600">= </font><font color="#0000CC">[url=http://lv.php.net/str_replace]str_replace[/url]</font><font color="#006600">(</font><font color="#CC0000">"{"</font><font color="#006600">.</font><font color="#0000CC">[url=http://lv.php.net/strtoupper]strtoupper[/url]</font><font color="#006600">(</font><font color="#0000CC">$field_name</font><font color="#006600">).</font><font color="#CC0000">"}"</font><font color="#006600">,</font><font color="#0000CC">$field_value</font><font color="#006600">,</font><font color="#0000CC">$shape</font><font color="#006600">);
	}
	</font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">SHAPES</font><font color="#006600">[</font><font color="#0000CC">$shapename</font><font color="#006600">] = </font><font color="#0000CC">$shape</font><font color="#006600">;
}

function </font><font color="#0000CC">make_list</font><font color="#006600">(</font><font color="#0000CC">$childname</font><font color="#006600">,</font><font color="#0000CC">$data</font><font color="#006600">)
{
	</font><font color="#0000CC">$mothershape </font><font color="#006600">= </font><font color="#CC0000">""</font><font color="#006600">;
	foreach (</font><font color="#0000CC">$data </font><font color="#006600">as </font><font color="#0000CC">$record</font><font color="#006600">)
	{
		</font><font color="#0000CC">$temp_shape </font><font color="#006600">= </font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">get_shape</font><font color="#006600">(</font><font color="#0000CC">$childname</font><font color="#006600">);
		while(list(</font><font color="#0000CC">$field_name</font><font color="#006600">,</font><font color="#0000CC">$field_value</font><font color="#006600">) = </font><font color="#0000CC">[url=http://lv.php.net/each]each[/url]</font><font color="#006600">(</font><font color="#0000CC">$record</font><font color="#006600">))
		{
			</font><font color="#0000CC">$temp_shape </font><font color="#006600">= </font><font color="#0000CC">[url=http://lv.php.net/str_replace]str_replace[/url]</font><font color="#006600">(</font><font color="#CC0000">"{"</font><font color="#006600">.</font><font color="#0000CC">[url=http://lv.php.net/strtoupper]strtoupper[/url]</font><font color="#006600">(</font><font color="#0000CC">$field_name</font><font color="#006600">).</font><font color="#CC0000">"}"</font><font color="#006600">,</font><font color="#0000CC">$field_value</font><font color="#006600">,</font><font color="#0000CC">$temp_shape</font><font color="#006600">);
		}
		</font><font color="#0000CC">$mothershape </font><font color="#006600">.= </font><font color="#0000CC">$temp_shape</font><font color="#006600">;
	}
	return </font><font color="#0000CC">$mothershape</font><font color="#006600">;
}

function </font><font color="#0000CC">make_simple_list</font><font color="#006600">(</font><font color="#0000CC">$childname</font><font color="#006600">,</font><font color="#0000CC">$data</font><font color="#006600">,</font><font color="#0000CC">$indicator</font><font color="#006600">)
{
	</font><font color="#0000CC">$mothershape </font><font color="#006600">= </font><font color="#CC0000">""</font><font color="#006600">;
	foreach (</font><font color="#0000CC">$data </font><font color="#006600">as </font><font color="#0000CC">$record</font><font color="#006600">)
	{
		</font><font color="#0000CC">$temp_shape </font><font color="#006600">= </font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">get_shape</font><font color="#006600">(</font><font color="#0000CC">$childname</font><font color="#006600">);
		</font><font color="#0000CC">$temp_shape </font><font color="#006600">= </font><font color="#0000CC">[url=http://lv.php.net/str_replace]str_replace[/url]</font><font color="#006600">(</font><font color="#CC0000">"{"</font><font color="#006600">.</font><font color="#0000CC">[url=http://lv.php.net/strtoupper]strtoupper[/url]</font><font color="#006600">(</font><font color="#0000CC">$indicator</font><font color="#006600">).</font><font color="#CC0000">"}"</font><font color="#006600">,</font><font color="#0000CC">$record</font><font color="#006600">,</font><font color="#0000CC">$temp_shape</font><font color="#006600">);
		</font><font color="#0000CC">$mothershape </font><font color="#006600">.= </font><font color="#0000CC">$temp_shape</font><font color="#006600">;
	}
	return </font><font color="#0000CC">$mothershape</font><font color="#006600">;
}

function </font><font color="#0000CC">end_parse</font><font color="#006600">(</font><font color="#0000CC">$shapename</font><font color="#006600">)
{
	</font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">SHAPES</font><font color="#006600">[</font><font color="#0000CC">$shapename</font><font color="#006600">] = </font><font color="#0000CC">[url=http://lv.php.net/ereg_replace]ereg_replace[/url]</font><font color="#006600">(</font><font color="#CC0000">"{[A-Z_]+}"</font><font color="#006600">,</font><font color="#CC0000">""</font><font color="#006600">,</font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">get_shape</font><font color="#006600">(</font><font color="#0000CC">$shapename</font><font color="#006600">));
}

function </font><font color="#0000CC">print_shape</font><font color="#006600">(</font><font color="#0000CC">$name</font><font color="#006600">)
{
	if (isset(</font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">SHAPES</font><font color="#006600">[</font><font color="#0000CC">$name</font><font color="#006600">]))
	{
		echo </font><font color="#0000CC">$this</font><font color="#006600">-></font><font color="#0000CC">SHAPES</font><font color="#006600">[</font><font color="#0000CC">$name</font><font color="#006600">];
	}
}
</font><font color="#0000CC">?>
</font>}</font>
</code>

 

Šeit apskatāms šablonfaili:

 

Pirmais:

pamats.tpl

 

<code><font color="#000000">
<html>
<head>
<title>{LAPAS_VIRSRAKSTS}</title>
</head>
<body>
{LAPAS_VIRSRAKSTS}
{SATURS}
</body>
</html></font>
</code>

 

Otrais (viena raksta šablons):

raksts.tpl

 

<code><font color="#000000">
<div style="padding: 10px; font-size: 90%;">
<b>{VIRSRAKSTS}</b><br />
{TEKSTS}
</div></font>
</code>

 

Un tagad šablonu izmantošana sekojoša rakstu masīva parādīšanai:

($raksti definīcijas vietā varēja būt mysql_get_assoc() no atlasītiem MySQL rezultātiem)

 

<code><font color="#000000">
<font color="#0000CC"><?
$raksti</font><font color="#006600">=array(	array(</font><font color="#CC0000">'virsraksts'</font><font color="#006600">=></font><font color="#CC0000">'Ekonomiskā krīze Valmierā'</font><font color="#006600">,
			</font><font color="#CC0000">'teksts'</font><font color="#006600">=></font><font color="#CC0000">'Šodien Valmierā cenas stāvus gaisā'</font><font color="#006600">),
			array(</font><font color="#CC0000">'virsraksts'</font><font color="#006600">=></font><font color="#CC0000">'Apsveicam!'</font><font color="#006600">,
			</font><font color="#CC0000">'teksts'</font><font color="#006600">=></font><font color="#CC0000">'Apsveicam Pēteri Rūjienā deviņdesmitajos šūpuļsvētkos!'</font><font color="#006600">),
			array(</font><font color="#CC0000">'virsraksts'</font><font color="#006600">=></font><font color="#CC0000">'Pāvilostā dzelzceļnieku streiks'</font><font color="#006600">,
			</font><font color="#CC0000">'teksts'</font><font color="#006600">=></font><font color="#CC0000">'Pāvilostas dzelzceļnieku arodbiedrība pieteikusi streiku'
	</font><font color="#006600">));

require_once(</font><font color="#CC0000">'myshape.class.php'</font><font color="#006600">);
</font><font color="#0000CC">$lapa </font><font color="#006600">= new </font><font color="#0000CC">MyShape</font><font color="#006600">(</font><font color="#CC0000">'home/www/sabloni/'</font><font color="#006600">);
</font><font color="#0000CC">$lapa</font><font color="#006600">-></font><font color="#0000CC">new_shape</font><font color="#006600">(array(
</font><font color="#CC0000">'pamatsablons'</font><font color="#006600">=></font><font color="#CC0000">'pamats.tpl'</font><font color="#006600">,
</font><font color="#CC0000">'viena_raksta_sablons'</font><font color="#006600">=></font><font color="#CC0000">'raksts.tpl'
</font><font color="#006600">));
</font><font color="#0000CC">$lapa</font><font color="#006600">-></font><font color="#0000CC">insert_values</font><font color="#006600">(</font><font color="#CC0000">'pamatsablons'</font><font color="#006600">,array(
</font><font color="#CC0000">'lapas_virsraksts'</font><font color="#006600">=></font><font color="#CC0000">'Novadu ziņas'</font><font color="#006600">,
</font><font color="#CC0000">'saturs'</font><font color="#006600">=></font><font color="#0000CC">$lapa</font><font color="#006600">-></font><font color="#0000CC">make_list</font><font color="#006600">(</font><font color="#CC0000">'viena_raksta_sablons'</font><font color="#006600">,</font><font color="#0000CC">$raksti</font><font color="#006600">)
));
</font><font color="#0000CC">$lapa</font><font color="#006600">-></font><font color="#0000CC">end_parse</font><font color="#006600">(</font><font color="#CC0000">'pamatsablons'</font><font color="#006600">);
echo </font><font color="#0000CC">$lapa</font><font color="#006600">-></font><font color="#0000CC">get_shape</font><font color="#006600">(</font><font color="#CC0000">'pamatsablons'</font><font color="#006600">);
</font><font color="#0000CC">?></font>
</font>
</code>

 

Koda izpildes rezultātā vajadzētu iegūt HTML failu:

<code><font color="#000000">
<html>
<head>
<title>Novadu ziņas</title>
</head>
<body>
<div style="padding: 10px; font-size: 90%;">
<b>Ekonomiskā krīze Valmierā</b><br />
Šodien Valmierā cenas stāvus gaisā
</div>
<div style="padding: 10px; font-size: 90%;">
<b>Apsveicam!</b><br />
Apsveicam Pēteri Rūjienā deviņdesmitajos šūpuļsvētkos!
</div>
<div style="padding: 10px; font-size: 90%;">
<b>Pāvilostā dzelzceļnieku streiks</b><br />
Pāvilostas dzelzceļnieku arodbiedrība pieteikusi streiku
</div>
</body>
</html></font>
</code>

 

Un tas ir viss. Dizaineriem dodam šablonus, paši ķeramies pie kodiem.

Link to comment
Share on other sites

  • 3 weeks later...

Nu, attālināšos no šabloniem un tomēr par to php+xml;

Uzliku tomēr short_tags=off;

<?xml ...>

<?xml stylesheet ...>

<body>

<?php

echo 'php strādā';

?>

</body>

Lieta tāda, ka diezgan grūti dabūt nopārsēt ar xsl:template, ja fails beidzas ar *.php. Izdevās to izdarīt, ieliekot php lapas augšā

header("Content-type: text/xml");

Bet tagad atkal viss tiek ļoti stipri "pieskatīts" un, ja php izraksta, piem. kādu ' ', lapas contents vairs nerādās (pie am pārsvarā nevis izmetot xml-warningu, bet vienkārši tuxha lapa).

Vai nevarētu uztaisīt tā, lai tas viss varētu būt "non-valid", bet tomēr rādītos?

Link to comment
Share on other sites

  • 2 weeks later...

Ja galīgi lauž, var jau vienkārši noehot to "<?"

<code><font color="#000000">

<font color="#0000CC"><?
</font><font color="#006600">echo </font><font color="#CC0000">'<?xml version="1.0" encoding="utf-8" ?>'</font><font color="#006600">;
</font><font color="#0000CC">?>
</font>
</font>
</code>

Link to comment
Share on other sites

paldies jb4 par shablonu kodu, tieshaam vienkaarshi :)

 

tagad tik jaasagaida kaads labs raksts par xml.

to, kas ir xml apmeeram saprotu, bet gribeetu uzzinaat siikaak ko un kaa

 

(un nesuutiet mani uz googli vai kur citur; ko lai dara cilveeks, kam inets tikai lv zonaa?!)

Link to comment
Share on other sites

<code><font color="#000000">

<font color="#0000CC"><?php
</font><font color="#006600">require_once(</font><font color="#CC0000">'myshape.class.php'</font><font color="#006600">);
</font><font color="#0000CC">$lapa </font><font color="#006600">= new </font><font color="#0000CC">MyShape</font><font color="#006600">(</font><font color="#CC0000">'home/www/sabloni/'</font><font color="#006600">);
</font><font color="#0000CC">$lapa</font><font color="#006600">-></font><font color="#0000CC">new_shape</font><font color="#006600">(array(
</font><font color="#CC0000">'pamatsablons'</font><font color="#006600">=></font><font color="#CC0000">'pamats.tpl'</font><font color="#006600">,
</font><font color="#CC0000">'iipashais_fails'</font><font color="#006600">=></font><font color="#CC0000">'fails.php'
</font><font color="#006600">));
</font><font color="#0000CC">$lapa</font><font color="#006600">-></font><font color="#0000CC">insert_values</font><font color="#006600">(</font><font color="#CC0000">'pamatsablons'</font><font color="#006600">,array(
</font><font color="#CC0000">'asdf'</font><font color="#006600">=></font><font color="#0000CC">$lapa</font><font color="#006600">-></font><font color="#0000CC">get_shape</font><font color="#006600">(</font><font color="#CC0000">'iipashais_fails'</font><font color="#006600">)
));
</font><font color="#0000CC">$lapa</font><font color="#006600">-></font><font color="#0000CC">end_parse</font><font color="#006600">(</font><font color="#CC0000">'pamatsablons'</font><font color="#006600">);
echo </font><font color="#0000CC">$lapa</font><font color="#006600">-></font><font color="#0000CC">get_shape</font><font color="#006600">(</font><font color="#CC0000">'pamatsablons'</font><font color="#006600">);
</font><font color="#0000CC">?>
</font>
</font>
</code>

Link to comment
Share on other sites

  • 2 months later...
×
×
  • Create New...