دریافت قسمت های مختلف یک قالب (تمپلت)

Goroop.ir

Member
با عرض سلام و خسته نباشد ...

من دارم یه کلاس تمپلت میسازم و فقط مشکل من اینه که چطوری مثل وبلاگ های بلاگفا و یا میهن بلاگ و ...

که تگ های بین <blogfa> .... </blogfa> تکرار میشند ؟



من میخام این قسمت ها رو دریافت کنم


مثلا:

HTML:
<html>
<body>
<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" lang="fa">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 
<font  color=00000>
salam chetori
</font>
 
<!-- start -- >
<b> 
tekra in ja
</b>
<!-- end -- >
<head/>
<body/>
</html>


مثلا این کد بالا قالب ما هست

و من میخام قسمت های بین <!-- start -- > و <!-- end -- > رو بگیرم

ایا تابعی برای این کار وجود داره ؟

منتظر جواب شما هستم .
 
آخرین ویرایش:

para2x

Member
من يه بار همچين كاري رو انجام دادم
يه فانكشن كوچولو هم براش نوشتم :

PHP:
function gettemplate($file,$substart,$subend){
$start=0;
$content="";
$fp=fopen($file,"r");
while($line=fgets($fp,100)){
	if(ereg($substart,$line))
	$start=1;
	//shoro bardasht
	if($start==1)
$content.=$line;
	//payane bardasht
		if(ereg($subend,$line))
	$start=0;
} 
return $content;
}//end of function
echo gettemplate("xml.xml","<HTMLFORM>","</HTMLFORM>")
 

para2x

Member
PHP:
 gettemplate("xml.xml","<htmlform>","</htmlform>")

آرگومان اول فايل
آرگومان دوم اوت تگي كه شروع ميشه
و آرگومان سوم اوني كه تموم ميشه
 

Goroop.ir

Member
خوب حالا اگر بخام تمام قالب رو نمایش بدم و یک جای قالب رو هی تکرار کنم باید چیکار کنم ؟
مثلا همین وبلاگ ها که هی قسمت پست هاشون تکرار میشه ؟
 

para2x

Member
اين تابع برا اين بود كه يه قسمت از تمپليت رو كه بين دو تا تگ هست بكشي بيرون فكنم بشه برا اين كار هم يه فانكشن نوشت كه قسمتي كه بايد تكرار بشه رو بكشي بيرون و بعد بذاري تو حلقه
ببخشيدا ولي
آقاي گرووپ شما بايد خودتان يه سري قانون [تگ] برا قالبتون تعريف كنيد مثل همين تگ ها يي كهبلاگفا و اينا ميذارن بعد تويه قالب از ونا استفاده كنيد و بعد هم اون تگ ها رو replace كنين
 

Goroop.ir

Member
خوب من این کار رو کردم
ولی تنها مشکلم قسمت پست ها هستش که میخام تکرار بشن

وگر نه و تمام کار هاش رو انجام دادم
حتی فانکشنی که خودت دادی رو ویرایش دادم یعنی شده یک موتور تمپلت ولی اون چیزی که میخام در نمیاد
 

para2x

Member
راستش برا پست ها كه تو حلقه هس من هنوز امتحان نكردم
شايد بقيه بچه ها .... تو اين زمينه كار كرده باشن
 

Goroop.ir

Member
از دوستان خواهش میکنم اگر کسی در مورد تکرار یک جای قالب چیزی میدونه مارو راهنمایی بکنه
این هم کدی که برای تمپلت نوشتم:

class.php
PHP:
<?php 
class template 
{ 
 
    function faile($code) 
    { 
        $this -> faile = $code;
    } 
function gettemplate($substart,$subend,$arye){ 
     $this -> arye = $arye;
$start=0; 
$content=""; 
$fp=fopen($this -> faile,"r"); 
while($line=fgets($fp,100)){ 
if(ereg($substart,$line))
{
$start++; 
}
    if($start==1) 
{
$content.=$line; 
}
if(ereg($subend,$line))
{
$start=0; 
}
}
$this -> codefile =$content;
     foreach ($this->arye as $var => $repa)
     {
$this -> codefile =  str_replace('{' . $var . '}', $repa, $this -> codefile); 
       }
echo $this -> codefile;
}
}
?>

قالب : example.php
HTML:
<start>
<html>
<body>
<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" lang="fa">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 
<p>{content}<BR></p> 
<p>{famili}</p> 
 </start>
{HTMLFORM}
<b> 
{tekrar}
</b>
{/HTMLFORM}
 
<head/>
<body/>
</html>

ایندکس که قالب رو و تگ هاشو ویرایش میده index.php

PHP:
<?php 
include 'class.php';
$tpl =new template();
$tpl -> faile('example.tpl');
$tpl -> gettemplate("<start>","</start>",array('content' => 'www.Goroop.com','famili' => 'تست سیستم تمپلت'));  
$tpl -> gettemplate("{HTMLFORM}","{/HTMLFORM}",array('tekrar' => 'به مجید انلاین خوش امدید'));  
?>


اگر به قالب توجه کنید میبنید که اولش نوشته <start> و اخرش هم نوشته </start> این تمپلت میاد قسمت های رو تکیه به تیکه میگیره .

برای قسمت پست ها {HTMLFORM} و {/HTMLFORM} این تیکه ها رو نشون میده

یعنی فقط بین این تگ ها رو دریافت میکنه و باقیه قالب رو نمایش نمیده

و برای تکرار یک قسمت باید از این روش استفاده کرد :

PHP:
<?php 
include 'class.php';
$tpl =new template();
$tpl -> faile('example.tpl');
$tpl -> gettemplate("<start>","</start>",array('content' => 'www.Goroop.com','famili' => 'تست سیستم تمپلت'));  
$tpl -> gettemplate("{HTMLFORM}","{/HTMLFORM}",array('tekrar' => 'به مجید انلاین خوش امدید'));  
$tpl -> gettemplate("{HTMLFORM}","{/HTMLFORM}",array('tekrar' => 'به مجید انلاین خوش امدید'));  
$tpl -> gettemplate("{HTMLFORM}","{/HTMLFORM}",array('tekrar' => 'به مجید انلاین خوش امدید'));  
?>
</SPAN>

یعنی قسمت های بین {HTMLFORM} و {/HTMLFORM} رو سه بار نمایش میده و ویرایش میده به متن ( به مجید انلاین خوش امدید )

حالا اگر کسی چیز بهتری سراغ داره دریق نکنه ترو خدا اینجا بزاره خیلی احتیاج دارم

من نمیخام این سیستم تیکه به تیکه نمایش بده میخام یک قسمت از قالب رو بزارم توی حلقه و هی تکرار کنم


با تشکر .
 
آخرین ویرایش:

para2x

Member
مي توني از يه همچين چيزي استفاده كني
البته من اينو همين الان بدون فكر و دقت نوشتم (فقط يه ايده هست )خودت كاملش كن
PHP:
{loop}
<b>{title}</b>
<span>{content}</span>
<span>{author}</span>
{/loop}
محتويه اين دوتا تگ رو بگير ({loop}) بذار تويه يه حلقه و بعد متغيير ها رو replace كن
 

Goroop.ir

Member
خوب من هم همین مشکل رو دارم

من میخام محتویات قالب رو بگیرم و یک قسمتش رو بزاری توی حلقه و تکرارش کنم
مثلا:

PHP:
{loop} 
<b>{title}</b> 
<span>{content}</span> 
<span>{author}</span> 
{/loop}
</SPAN>

قسمت <span>{author}</span> رو بزارم توی حلقه و تکرار کنم و وقتی قالب رو نمایش بدم اینطوری بشه


PHP:
{loop} 
<b>{title}</b> 
<span>{content}</span> 
<span>{author}</span> 
<span>{author}</span> 
<span>{author}</span> 
<span>{author}</span> 
{/loop}
</SPAN>

از دوستانی که در مورد تمپلت انجین چیزی میدونن داخل این فروم مترح کنن
 

جدیدترین ارسال ها

بالا