编辑系统模板的小工具
xoops使用smarty模板templates,完成内容和表现的分离,模板是控制表现的主要东东。我们在修改模板的时候遇到了一些麻烦,特别是系统模板。系统模板是xoops系统安装时安装的模板,如userinfo.php使用的模板,没有现成的方法更新。我们最初调试的时候使用了sql指令修改,由于是美工在修改,于是我总被打断工作去修改模板,于是我写了一个小程序来修改模板。
这个小程序被放在某个模块下,使用的时候浏览 http:// XOOPS/modules/…/tpledit.php?id=12 ,后面id就是模板的id /* include “../../mainfile.php”; include XOOPS_ROOT_PATH.”/header.php”; if (!$xoopsUser) { if ($xoopsUser->uid() == 1) { $tplid = $_GET[’id’]; } $tplhandle = new XoopsTplfileHandler(); $tplhandle->loadSource($tpl); //var_dump($tpl); //echo “hi $tplform = new XoopsThemeForm(’模板编辑’, ‘tpl edit’, ‘tpledit.php’, ‘POST’); $id_hidden = new XoopsFormHidden(’tplid’, $tplid); $tplform->addElement($id_hidden); //$tplform->assign($xoopsTpl); $tplform->display(); if ($op == 2) { $myts = & MyTextSanitizer :: getInstance(); //echo $tpl_source; redirect_header(”tpledit.php”, 3, ‘执行了模板的更新’); } include XOOPS_ROOT_PATH.”/footer.php”; } else { redirect_header(”../../index.php”, 30, ‘您没有权限’); }
模板文件的数据库表是tplfile,其中tpl_file字段是模板文件名,tpl_id字段就是模板id,模板id就是传送给这个程序的参数。
* Created on 2005-5-6
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
include_once XOOPS_ROOT_PATH.”/kernel/tplfile.php”;
include_once XOOPS_ROOT_PATH.”/class/xoopsformloader.php”;
redirect_header(’index.php’, 3, “您没有登陆,无法访问”);
exit ();
}
$tplid = 15;
if (isset ($_GET[’id’])) {
}
$op = “1″;
if (isset ($_POST)) {
foreach ($_POST as $k => $v) {
${ $k } = $v;
if ($k == “update”) {
$op = 2;
}
//echo $k.” “.$v.”
“;
}
$db = & Database :: getInstance();
$tplhandle->XoopsObjectHandler($db);
if (!$tpl = $tplhandle->get($tplid)) {
redirect_header(’../../index.php’, 3, “模板不存在,检查模板ID”);
exit ();
}
$tplsource = $tpl->getVar(’tpl_source’);
//echo $tplflietxt;
“;
//echo $op;
if ($op == 1) {
$tplform->addElement(new XoopsFormLabel(”tpl ID”, $tplid));
$tplform->addElement(new XoopsFormTextArea(”tpl file”, “tpl_source”, $tplsource), true);
$tplform->addElement(new XoopsFormButton(’更新’, ‘update’, ‘update’, ’submit’));
include XOOPS_ROOT_PATH.”/footer.php”;
}
$tpl_source = $myts->stripSlashesGPC(trim($tpl_source));
$tpl->setVar(’tpl_source’, $tpl_source);
$tplhandle->forceUpdate($tpl);
?>
.