سیستم قالب نویسی وبلاگ

pilevar

Member
سلام

خسته نباشید

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

مثلا وقتی توی قالبشون از کد زیر استفاده بشه
HTML:
<post-title>
درواقع برای نمایش از کد زیر مثلا استفاده میشه:
PHP:
<?php echo $row_post['title']; ?>
ممنون میشم راهنماییم کنید.

با تشکر فراوان از شما
 

ziXet

مدیر انجمن PHP/MYSQL
اساس کار همشون replace کردن تگ با محتویات هست. ساده ترینشم str_replace هست.
 

parsiteam

Member
سلام . عزیزم از تابع str_replace باید استفاده کنی . برای اطلاعات بیشتر به php.net برو اسم تابع رو سرچ کن .


موفق باشی .
 

parsiteam

Member
اساس کار همشون replace کردن تگ با محتویات هست. ساده ترینشم str_replace هست.


ببخشید استاد من زمانی که مینوشتم نوشته ی شما نبود , قصد جسارت نداشتم . وقتی زدم دیدم شما هم جواب دادید .
 
آخرین ویرایش:

pilevar

Member
دوستان

من str_replace استفاده کردم

مثلا در کد زیر:
PHP:
<?php
$txt="omid <post-title> 123";
echo str_replace("<post-title>","<?php echo 'pilevar'; ?>",$txt);
?>

خروجی نمایشی توی مرورگر اینه:
[LTR]omid 123[/LTR]

و Source خروجی در مرورگر:
کد:
omid <?php echo 'pilevar'; ?> 123
 

pilevar

Member
البته دوستان اینو توجه داشته باشید که توی پست قبلی که نوشتم:
PHP:
...st-title>","<?php echo 'pilevar'; ?>"...

منظورم از <?php echo 'pilevar'; ?> این بود یه کد پی اچ پی بیاد اینجا.
مثلا کد زیر بیاد جاش:
PHP:
for(int $i=1;$i<=10;$i++){
 

ziXet

مدیر انجمن PHP/MYSQL
البته دوستان اینو توجه داشته باشید که توی پست قبلی که نوشتم:
PHP:
...st-title>","<?php echo 'pilevar'; ?>"...
منظورم از <?php echo 'pilevar'; ?> این بود یه کد پی اچ پی بیاد اینجا.
مثلا کد زیر بیاد جاش:
PHP:
for(int $i=1;$i<=10;$i++){
من اصلا منظور شما رو متوجه نمی شم!
str_replace کارش خیلی سادس! توی یک متن جستجو میکنه و جای دو تا کلمه یا حرف رو با هم عوض میکنه! همین!
شما خودت باید تعمیمش بدی به اون چیزی که میخوای! شما باید درک مناسب از برنامه داشته باشی
مثلا مثل این:
PHP:
$txt = read(Ghaleb); //for ex
$title = $row['title'];
echo str_replace("<post-title>",$title,$txt);
 

pilevar

Member
من اصلا منظور شما رو متوجه نمی شم!
str_replace کارش خیلی سادس! توی یک متن جستجو میکنه و جای دو تا کلمه یا حرف رو با هم عوض میکنه! همین!
شما خودت باید تعمیمش بدی به اون چیزی که میخوای! شما باید درک مناسب از برنامه داشته باشی
مثلا مثل این:
PHP:
$txt = read(Ghaleb); //for ex
$title = $row['title'];
echo str_replace("<post-title>",$title,$txt);

خوب دوست عزیز درسته،
ولی.....


ولی اگر بخواهیم اصلا بگیم که اول شروع حلقه باشه،
مثلا اینجوری که بخوایم مطالب پشت سر هم باشه، که برنامه نویس قالب بالا و پایین قسمت مقالات رو مشخص کنه
مثلا برای شروع از دستور <start-content> و برای پایان از دستور <end-content> استفاده کنه.

و برای پردازش که همونجوری که فرمودین اگر از دستور Strt_replace استفاده کنیم، نمیتونیم شروع و پایان یک حلقه رو قرار بدیم :shock:

ممنون میشم بیشتر راهنمایی بفرمایید:rose:
 

mosi20

Active Member
شما چند روزه با php آشناشدی؟
من قبلا یه سیستم وبلاگدهی نوشتم ولی متاسفانه به دلایل مشکلات هاست نتونستم خیلی روش مانور بدم الان هم مشکل هاستی داره و نمیتونی خود سایت را ببینی.
یه بخش از کدهاش را میزارم خودت ببین .
هم بانک اطلاعاتی داره و هم حلقه و همه چیز به شرطی که خودت روش چند دقیقه فکر کنی.

PHP:
		if( preg_match("'\[temp\](.*?)\[/temp\]'i",  $GLOBALS['c_page_category'] )){
			$MY_PAGE_OUTPUT=my_sql( $f_5_r['page_category'], 1 , 1 , 0 , 0 ,'decode',1 );
		}else{
			$MY_PAGE_OUTPUT=$GLOBALS['c_page_category'];
		}
		$my_weblog_page_title=''.$my_weblog_page_title.'-بخش های وبلاگ';
		if( preg_match("#<mainpages>(.*?)</mainpages>#s", $MY_PAGE_OUTPUT  , $match)){
			$my_page_source_old=$match[1];
			$my_page_source='';
			$f_8 = mysql_query("SELECT * FROM `$db_53` WHERE `weblog_id`='{$w_id}'  ORDER BY `id` DESC") or die(mysql_error());
			while($my_item = mysql_fetch_assoc($f_8)){
				$my_this_part=$my_page_source_old;
				$my_this_part=str_replace("<id>", $my_item['id'], $my_this_part);
				$my_this_part=str_replace("<title>", my_sql( $my_item['title'], 1 , 1 , 0 , 0 ,'decode',1 ), $my_this_part);
				$my_this_part=str_replace("<url>", ''.c_weblog_ur.'/post/c-'.$my_item['id'].'/1.html', $my_this_part);
				if (strpos("$my_this_part","<pic>") !== false)		{
					if($my_item['pic']=='' || $my_item['pic']=='http://'){
						$my_this_part=str_replace("<pic>", '', $my_this_part);
					}else{
						$my_this_part=str_replace("<pic>", my_sql( $my_item['pic'], 1 , 1 , 0 , 0 ,'decode',1 ), $my_this_part);
					}
				}
				$my_this_part=str_replace("<note>", my_sql( $my_item['note'], 1 , 1 , 0 , 0 ,'decode',1 ), $my_this_part);
				if (strpos("$my_this_part","<posts>") !== false)		{
					$f_10 = mysql_query("SELECT  COUNT(*)  FROM `$db_52` WHERE `cat_id`='{$my_item['id']}'  AND `sh`='1' ") or die(mysql_error());
					$r_10 = mysql_result($f_10 ,  0);
					$my_this_part=str_replace("<posts>", $r_10, $my_this_part);
				}
				$my_page_source.=$my_this_part;
			}
			$MY_PAGE_OUTPUT=str_replace($my_page_source_old, $my_page_source, $MY_PAGE_OUTPUT);
		}
 

ziXet

مدیر انجمن PHP/MYSQL
خوب دوست عزیز درسته،
ولی.....


ولی اگر بخواهیم اصلا بگیم که اول شروع حلقه باشه،
مثلا اینجوری که بخوایم مطالب پشت سر هم باشه، که برنامه نویس قالب بالا و پایین قسمت مقالات رو مشخص کنه
مثلا برای شروع از دستور <start-content> و برای پایان از دستور <end-content> استفاده کنه.

و برای پردازش که همونجوری که فرمودین اگر از دستور Strt_replace استفاده کنیم، نمیتونیم شروع و پایان یک حلقه رو قرار بدیم :shock:

ممنون میشم بیشتر راهنمایی بفرمایید:rose:
من همون اول گفتم ساده ترین شکلش اینه که از str_replace استفاده کنی ولی برای درست کردن تگ های start و end یا تگ هایی که پارامتر هم بگیرن شما باید از عبارات باقاعده استفاده کنی که اول همه تگ ها رو تجزیه تحلیل کنی و بعد بر اساس اون نمایش بدی...

http://ir.php.net/regex
البته کار کردن با regex کار آسونی نیست.

موفق باشید
 

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

بالا