תבניות בPHP - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תבניות בPHP


gkman

Recommended Posts

שלום.

אני מעוניין ללמוד ליצור תבניות בPHP.

אני זוכר שקראתי איפשהו מדריך שמשתמש במעין עוגנים כאלו שמראים לדף לאן להכניס את התוכן,הכותרת, התפריט וכו.

חיפשתי מדריכים בגוגל אבל כל מה שמצאתי היה בעיקר דברים שהם לא באמת תבניות והם משתמשים בincludeים כדי ליצור את הדף.

מצאתי גם משהו דומה שמשתמש בiHTML שבחיים לא שמעתי על זה. http://ontosys.com/php/templates.html

אם אני לא טועה המדריך שחיפשתי השתמש בפונקציה preg replace אבל אני לא בטוח.

המטרה העיקרית שלי זה תבניות שאפשר להחליף לגמרי את המבנה והעיצוב של הדף. ולא רק לבצע שינויים קטנים באיזורים מסוימים של כל דף.

שימו לב שאני מועניין לבנות את התבניות בעצמי ולא להשתמש בדברים כדוגמת סמארטי או וורדפרס-

היה את האתר PHP ישראל\ איתן או משהו כזה (בעיצוב סגול) נדמה לי שלו היה מדריך אבל לא מצאתי את הכתובת שלו (מצאתי את זה: http://php.eitan.ac.il/ שיכול להיות שזה זה אבל הוא לא פעיל כרגע)

קישור לתוכן
שתף באתרים אחרים

כן זה האתר.. כניראה שהוא כבר לא פעיל או נפל זמנית

אתה יכול להשתמש בפונקציה preg replace כמו שאמרת

אני יתן דוגמא

נגדיר מערך בשם $output

ונגדיר משתנה $string שמכיל את העיצוב (אתה יכול כמובן להגדיר אותו מקובץ קיים בעזרת הפקודה file_get_contents)

לצורך הדוגמא נגדיר את הנתונים הבאים:

$output["title"] = "Hey";
$output["content"] = Some info";

$string = "<html><body><h1>{title}</h1><br>{content}</body</html>";

ונשתמש בפקודה הבאה

preg_replace('/\{(\w+)\}/e',"\$output['\\1']",$string);

התוצאה שתקבל היא בעצם תרגום של הסוגריים המסולסלים למערך שהגדרת

התוצאה שתתקבל היא


<html><body><h1>Hey</h1><br>Some info</body</html>

זוהי כמובן דוגמא קטנה, אבל יכולה לעזור המון :)

בהצלחה

קישור לתוכן
שתף באתרים אחרים

תודה על התגובה.

השיטה שלך תעבוד אם אני רוצה שבתוכן שלי יהיה גם קוד PHP? כי שיחקתי קצת עם הדוגמא שלך ועם הfile_get_contents

ואני לא מצליח להריץ קוד PHP ביחד עם התבנית.

קישור לתוכן
שתף באתרים אחרים

בתוך התבנית לא ניתן להוסיף PHP

תיצור קובץ תבנית בפורמט שרשמתי לך

כל משתנה תגדיר אותו בסוגריים מסולסלים

דוגמא לקובץ תבנית:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">[/url]
<html xmlns="[url]http://www.w3.org/1999/xhtml">[/url]
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Preg replcae test</title>
</head>

<body>
<h1>{title}</h1>
<p>{content}</p>
<h1>{title2}</h1>
<p>{content2}</p>
</body>
</html>

ובקוד PHP תגדיר את המשתנים title, title2, content,content2 במערך מסוים

לדוגמא


<?php
$output["title"] = "כותרת ראשונה";
$output["content"] = "תוכן הכתבה";
$output["title2"] = "כותרת שנייה";
$output["content2"] = "תוכן הכתבה השנייה";

//some php codes will work here Ie (if $string is not set
if (!isset($string)) {
$string = file_get_contents("./filelocation/file.ext");
}
else { $string = file_get_contents("./filelocation/file.ext"); }

preg_replace('/\{(\w+)\}/e',"\$output['\\1']",$string);
?>

קישור לתוכן
שתף באתרים אחרים

אני קורא את התגובה האחרונה שלי- וקולט שלא הסברתי את עצמי נכון.

אני רוצה שבתוך התוכן שלי יהיה קוד PHP.

הנה דוגמא למה שניסיתי:

index.php





<?php
require_once ('builder.php');
die()
?>
<!--INFO Begin -->
{title} Some Title {/title}
{date} 2012-7-29 {/date}
{onload} {/onload}
<!-- INFO End -->


<h1>
this is another page
</h1>

another text- text if can execute php commands in template. if text succeeds should see date below:<br />
<?php
echo date("Y.m.d")
?>


<br />
<a href="page1.php"> page1.php </a>

ו- bulider.php





<?php
$page = file_get_contents(basename($_SERVER['PHP_SELF']));
$template = file_get_contents('template.html');
function GetBetween($content,$start,$end){
$r = explode ($start, $content);
if (isset ($r[1])){
$r = explode ($end, $r[1]);
return $r[0];
}
return '';
}


$info = GetBetween($page, '<!--INFO Begin -->', '<!-- INFO End -->');


$output["title"] = trim(GetBetween($info, '{title}', '{/title}'));
$output["date"] = trim(GetBetween($info, '{date}', '{/date}'));
$output["onload"] = trim(GetBetween($info, '{onload}', '{/onload}'));


$content_pos = stripos($page, '<!-- INFO End -->');
$content_pos += strlen('<!-- INFO End -->');
$output["content"] = substr($page, $content_pos);


$result_page = preg_replace('/\{(\w+)\}/e',"\$output['\\1']",$template);


echo $result_page;
?>

הקוד של הPHP להצגת התאריך לא מציג- יש דרך לגרום לזה לפעול?

קישור לתוכן
שתף באתרים אחרים

לא ממש הבנתי מה התכוונת

אם אתה מגדיר את ה OUTPUT בתור משתנה רגיל שמכיל את התאריך

אין סיבה שהוא לא ידפיס אותו רגיל..

ובתוך התבנית, אתה מגדיר את התוכן כ {title} בלבד או עם סוגר פתיחה \ סגירה ( {title} adasd {/title} ?

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...