Flatfile page template with $variables?

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
User avatar
JAB Creations
DevNet Resident
Posts: 2341
Joined: Thu Jan 13, 2005 6:44 pm
Location: Sarasota Florida
Contact:

Flatfile page template with $variables?

Post by JAB Creations »

I'd like to create a flat file page template that I will be able to edit via a browser. What I think is a simple concept would be input text elements for $title, $meta_description, $meta_keywords, with a textarea for the $page variable.

At this moment my main interest is figuring out if I can have PHP target $variables on a page and write form content to the specified variable, if so I'm open to examples and suggestions please. :D

Code: Select all

<?php
$title = 'My Web Page';
$meta_description = 'This is my handy dandy web page,  great is it not?';
$meta_words = 'cheese, girls, Mario, candy, explosions ';
$page = <<<EOD
<body>
//stuff here
</body>
EOD;
?>
User avatar
s.dot
Tranquility In Moderation
Posts: 5001
Joined: Sun Feb 06, 2005 7:18 pm
Location: Indiana

Re: Flatfile page template with $variables?

Post by s.dot »

Tis really easy till you get into the complicated stuff. :P

Just define a custom template tag in your template, such as {$var} or ##VAR## or whatever.

Then..

Code: Select all

$page = str_replace('{$title}', $title);
Set Search Time - A google chrome extension. When you search only results from the past year (or set time period) are displayed. Helps tremendously when using new technologies to avoid outdated results.
User avatar
JAB Creations
DevNet Resident
Posts: 2341
Joined: Thu Jan 13, 2005 6:44 pm
Location: Sarasota Florida
Contact:

Re: Flatfile page template with $variables?

Post by JAB Creations »

Well I've set up as much as I can think of for the moment.

What I still need to do is figure out how to target the variables in the template file...I'm not sure I follow scottayy right now so before I start toying with things beyond me I thought I'd post what wasn't yet beyond me. :mrgreen:

Here are the two files, I have written the editor to also edit files that request this if they send a referrer. Of course in any live scenario this would need to be encased within an authentication script.

index.tpl

Code: Select all

<?php
// $_POST info should be assigned as the values to the respective variables below ($_POST['title'] goes to $title).
$title = '';
$meta_description = '';
$meta_keywords = '';
$page = <<<EOD
 
EOD;
?>
index.php

Code: Select all

<?php
// User clicks anchor 'edit this page', sends referer...
if (isset($_SERVER['HTTP_REFERER'])) {$edit_page = basename($_SERVER['HTTP_REFERER']);}
else {$edit_page = basename($_SERVER['PHP_SELF']);}
 
// Non-Structural content is saved to TPL extension equivelent...
// Content = $title, $meta, $page (between open/close body element)
// Structure = everything else in and around.
$template = str_replace('.php','.tpl',$edit_page);
global $template;
 
 
// If POST then let's write to that template! <!-- s:) --><img src=\"{SMILIES_PATH}/icon_smile.gif\" alt=\":)\" title=\"Smile\" /><!-- s:) -->
if ($_SERVER['REQUEST_METHOD'] == "POST") {
 
$title = $_POST['title'];
$meta_description = $_POST['meta_description'];
$meta_keywords = $_POST['meta_keywords'];
$page = $_POST['page'];
 
$somecontent = "Add this to the file\n";
 
// Let's make sure the file exists and is writable first.
if (is_writable($template)) {
 
    // In our example we're opening $template in append mode.
    // The file pointer is at the bottom of the file hence
    // that's where $somecontent will go when we fwrite() it.
    if (!$handle = fopen($template, 'a')) {
         echo "Cannot open file ($template)";
         exit;
    }
 
    // Write $somecontent to our opened file.
    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Cannot write to file ($template)";
        exit;
    }
 
    echo "Success, wrote ($somecontent) to file ($template)";
 
    fclose($handle);
 
} else {
    echo "The file $template is not writable";
}
 
 
 
} // End if request method = post
 
function get_title() {
// Temp echo...
echo 'we need to import the title from the variable on the flatfile';
}
 
function get_meta_description() {
// Temp echo...
echo 'we need to import the description from the variable on the flatfile';
}
 
function get_meta_keywords() {
// Temp echo...
echo 'we need to import the keywords from the variable on the flatfile';
}
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title><?php get_title();?></title>
<meta name="Description" content="<?php get_meta_description();?>" />
<meta name="keywords" content="<?php get_meta_keywords();?>" />
<style type="text/css">
form fieldset {
 border: #99c solid 1px;
}
h1 {
 font-size: 18px;
}
input.button {
 background-color: #fff;
 border: #000 solid 1px;
 clear: left;
 cursor: pointer;
 display: block;
 float: left;
 height: 18px;
 margin: 1px;
  width: 65%;
}
input.button:hover, input.button:focus, input.text:hover, input.text:focus {
 background-color: #99c;
}
input.text {
 border: #000 solid 1px;
 display: block;
 float: left;
 height: 18px;
 margin: 1px;
 width: 50%;
}
label {
 border: #000 dotted 1px;
 clear: left;
 display: block;
 float: left;
 height: 18px;
 margin: 1px;
 padding-left: 2px;
 width: 15%;
}
textarea {
 border: #000 solid 1px;
 clear: left;
 display: block;
 float: left;
 padding: 4px;
 width: 65%;
}
textarea:hover, textarea:focus {
 background-color: #99c;
}
</style>
</head>
 
<body>
 
<h1>Page Editor</h1>
<div>
<p>The file to be edited below is <b><?php echo $edit_page;?></b> which has it's content saved to the template file <b><?php echo $template;?></b>.</p>
 
<p>This page was requested via a <i><?php echo $_SERVER['REQUEST_METHOD'];?></i> request.</p>
</div>
 
<form action="<?php echo basename($_SERVER['PHP_SELF']);?>" method="post">
<fieldset>
<label for="title">Title</label><input class="text" id="title" name="title" tabindex="1" type="text" value="" />
<br />
<label for="meta_description">Meta Description</label><input class="text" id="meta_description" name="meta_description" tabindex="2" type="text" value="" />
<br />
<label for="meta_keywords">Meta Keywords</label><input class="text" id="meta_keywords" name="meta_keywords" tabindex="3" type="text" value="" />
<br />
<textarea id="page" name="page"></textarea>
<br />
<input class="button" type="submit" />
</fieldset>
</form>
 
</body>
</html>
 
 
Post Reply