Help:
--- problem
My page generated via a template can't find some javascript.
---- setup
I am hosted on Apache 1.*
I have a folder containing many *.html containing content which I want to be
displayed in another style of page.
Suppose there is
foo/
foo/content1.html
...
foo/contentN.html
foo/content1.js
foo/template.html
foo/js1.js
foo/js2.js
foo/slick.css
foo/slick.php
The content might have it's own style and javascript parts
template.html
---
<HTML>
<HEAD>
<TITLE>:title:</TITLE>
<LINK REL="stylesheet" HREF="slick.css" TYPE="text/css">
<SCRIPT SRC="js1.js" LANGUAGE="JavaScript"></SCRIPT>
<SCRIPT SRC="js2.js" LANGUAGE="JavaScript"></SCRIPT>
:script: :style: :link:
</HEAD>
<BODY>
<DIV ID="logo">Logo ...</DIV>
<DIV ID="main">
<DIV ID="links"><SCRIPT>/* navbar('js') */</SCRIPT></DIV>
<DIV ID="content">:content:</DIV>
</DIV>
<DIV ID="copyright">Copyright ...</DIV>
</BODY>
</HTML>
---
slick.css
---
div#logo { background: #AAA }
div#content { background: #DDD }
div#links { background: #CCC }
div#copyright { background: #EEE }
---
content1.html
---
<HTML>
<HEAD>
<TITLE>Content 1</TITLE>
<SCRIPT SRC="content1.js" LANGUAGE="JavaScript"></SCRIPT>
</HEAD>
<BODY>
<H1>Content is king</H1>
<SCRIPT LANGUAGE="JAVASCRIPT">
helloFromContent1()
</SCRIPT>
</BODY>
</HTML>
---
content1.js
---
function helloFromContent1 () {
document.write ('<P>Hello from content1.js</P>')
}
---
js1.js
---
alert ('js1 here')
---
js2.js
---
alert ('js2 here')
---
slick.php
---
<?
list ($slash, $page) = explode ('/', $HTTP_SERVER_VARS['PATH_INFO']);
if (!file_exists ($page)) {
header("HTTP/1.0 404 Not Found");
echo ("<HTML><HEAD><TITLE></TITLE></HEAD><BODY><P>$page not
found.</P></BODY></HTML>");
return;
}
$template = 'template.html';
$template = implode ("", file ($template));
$source = implode ("", file ($page));
preg_match ("|<HEAD.*?>(.*)?</HEAD>|is", $source, $head); // i
insensitive, s newlines are a character
preg_match ("|<TITLE.*>(.*)?</TITLE>|is", $head[1], $title);
preg_match_all ("|(<SCRIPT.*?>.*?/SCRIPT>)|isU",$head[1], $script); // U
ungreedy
preg_match_all ("|(<STYLE .*>.*/STYLE>)|isU", $head[1], $style);
preg_match_all ("|(<LINK .*>)|isU", $head[1], $link);
preg_match ("|<BODY.*?>(.*)</BODY>|is", $source, $content);
$title = isset($title [1]) ? $title[1] : '';
$script = isset($script [1]) ? implode ($script[1]) : '';
$style = isset($style [1]) ? implode ($style [1]) : '';
$link = isset($link [1]) ? implode ($link [1]) : '';
$content= isset($content[1]) ? $content[1] : '';
$html = preg_replace (
array ("/:title:/", "/:style:/", "/:script:/", "/:link:/",
"/:content:/" )
, array ( $title , $style , $script , $link , $content )
, $template
);
echo $html;
?>
---
I can do
- site.com/info/template.html and get two alerts
- site.com/info/content1.html and see a new text under H1
- site.com/info/slick.php/content1.html and get neither alert nor new text.
- instead I get 4 browser (IE) 'problem alerts', I presume
- 1. for not finding js1.js
- 2. for not finding js2.js
- 3. for not finding content1.js
- 4. for not finding helloFromContent1() function
I don't want to change my SRC references to be site absolute, I want them
relative.
Any ideas how I should 'wrap' my content using php and get functioning pages
?
Thanks
--
Richard A. DeVenezia
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php