• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > DedeCMS教程 > DedeCMS安装使用 >

DedeCMS修改单页面的编辑器

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-01-15点击:

DedeCMS有一个单页面的功能,可以生成完全不带模板的页面,支持DedeCMS的标签规则。

对于我来说DedeCMS提供的广告插件并不好用,因为不能把标签写在里面,这点和KingCMS的广告系统不一样,KingCMS的广告系统支持标签。

但DedeCMS的单页面却支持标签,不支持模板,调用的时候也不是特别的方便,只能自己写<!--#include file= "xxx.shtml"-->这样的代码在模板里,而且每次都要写死才行,修改的时候不能修改文件名,但这样勉强可以满足我的需要了。这里我为什么需要这个功能主要是为了更新方便公用部分都用SSI来调用,这样生成快,更新也快。

DedeCMS有个好处是编辑器有两种,一个是Dede自己开发的,一个是FCK,我需要在单页管理的时候用上编辑器,而原本是没有的,于是参考了篇文档进行修改了。

原创教程:单页文档与单独页面相结合,打造易用单页频道。

1、单页文档管理里增加一个单页,比如:公司简介。

2、修改模板,在根目录下》dede》templets内
templets_one_add.htm(增加新页面模板)
此句:<textarea rows="20"></textarea>
改为:<?php GetEditor("body",$body,450);?>

templets_one_edit.htm(更新页面模板)
此句:<textarea rows="20"><?php echo $row['body']?></textarea>
改为:<?php GetEditor("body",$row['body'],450);?> 

说明:上面是调出系统使用的编辑器,便可以使用图片上传,文件上传等类似发布新闻一样的功能。

3、在网站栏目管理内增加一个同名栏目,“栏目属性”设为单独页面。

4、为了使两者可以相互连接,采用“文件保存目录”项存放单页文档的ID号,。

5、打开include目录,新增一个文件inc_extend_functions.php,这是dede开放自定义函数的接口文件。

增加下列代码:
//调用单页的内容
参数说明
$dsql :数据库操作对象。
$aid :当前栏目编号。
function ShowOnepage($dsql,$aid) { 
    if (empty($aid)) $aid=0;
    $row = $dsql->GetOne("Select typedir,ispart From dede_arctype where ID=$aid");
    $aid = $row['typedir'];//取出单页文档的编号。
    if ($row['ispart']==2){ //判断当前栏目是否是单独页面
        $row = $dsql->GetOne("Select body From dede_sgpage where aid=$aid");
        $body = $row['body'];
    }
    if (empty($body)) $body="暂无";
    return $body;
}
//=====================

6、打开plus目录》list.php文件
增加如下代码:
//调用单页文档的内容
$body = ShowOnepage($dsql,$tid);
//=============

7、因为网站风格一般是统一的,所以我们可以为单独页面做一个通用模板(当然也可以做很多模板使用),这个模板可以使用dede的所有规定标签。

8、这一步是所有操作的核心目的,就是在模板你要调用单页文档内容的位置,增加一个标签:
{dede:global/}

9、最后在“高级选项”内加载,至此所有工作完毕。

总结:
此功能实现不需要让用户多次在本地编辑生成单页文档的代码,只需像上传新闻一样上传相关内容便可有各种不同的单页。

其实dede完全可以让两者合二为一,简化操作。

上面如有不详或错漏之处,请大家回贴指明。

这篇主要讲的是怎么给单页加上模板,其实我觉得有点多此一举,完全可以用模型做一个就好了,不过这句还是很重要的

修改模板,在根目录下》dede》templets内
templets_one_add.htm(增加新页面模板)
此句:<textarea rows="20"></textarea>
改为:<?php GetEditor("body",$body,450);?>

templets_one_edit.htm(更新页面模板)
此句:<textarea rows="20"><?php echo $row['body']?></textarea>
改为:<?php GetEditor("body",$row['body'],450);?> 

这句主要是调出了编辑器
 

但问题接着来了,FCK编辑器会自动加上<html><body>这样的标签,换成Dede自己的HTML编辑器却不会出现这样的问题,但我想把这个地方单独出来所以自己又写了个函数

找到include/inc_functions.php这个文件找到
 

function GetEditor($fname,$fvalue,$nheight="350",$etype="Basic",$gtype="print",$isfullpage="false"){
 if(!isset($GLOBALS['__funAdmin'])) include_once(dirname(__FILE__)."/inc/inc_fun_funAdmin.php");
  return SpGetEditor($fname,$fvalue,$nheight,$etype,$gtype,$isfullpage);
}

复制出来 修改成这样

function GetEditorD($fname,$fvalue,$nheight="350",$etype="Basic",$gtype="print",$isfullpage="false"){
 if(!isset($GLOBALS['__funAdmin'])) include_once(dirname(__FILE__)."/inc/inc_fun_funAdmin.php");
  return SpGetEditorD($fname,$fvalue,$nheight,$etype,$gtype,$isfullpage);
}

 


然后找到include/inc/inc_fun_funAdmin.php找到 function SpGetEditor这个函数 复制整段
 

function SpGetEditor($fname,$fvalue,$nheight="350",$etype="Basic",$gtype="print",$isfullpage="false")
{
 if(!isset($GLOBALS['cfg_html_editor'])) $GLOBALS['cfg_html_editor']='fck';
 if($gtype=="") $gtype = "print";
 if($GLOBALS['cfg_html_editor']=='fck'){
   require_once(dirname(__FILE__)."/../FCKeditor/fckeditor.php");
   $fck = new FCKeditor($fname);
   $fck->BasePath  = $GLOBALS['cfg_cmspath'].'/include/FCKeditor/' ;
   $fck->Width  = '100%' ;
   $fck->Height  = $nheight ;
   $fck->ToolbarSet = $etype ;
   $fck->Config['FullPage'] = $isfullpage;
   if($GLOBALS['cfg_fck_xhtml']=='Y'){
    $fck->Config['EnableXHTML'] = 'true';
     $fck->Config['EnableSourceXHTML'] = 'true';
   }
   $fck->Value = $fvalue ;
   if($gtype=="print") $fck->Create();
   else return $fck->CreateHtml();
  }else{
   require_once(dirname(__FILE__)."/../htmledit/dede_editor.php");
   $ded = new DedeEditor($fname);
   $ded->BasePath  = $GLOBALS['cfg_cmspath'].'/include/htmledit/' ;
   $ded->Width  = '100%' ;
   $ded->Height  = $nheight ;
   $ded->ToolbarSet = strtolower($etype);
   $ded->Value = $fvalue ;
   if($gtype=="print") $ded->Create();
   else return $ded->CreateHtml();
 }
}


修改为下面的代码
function SpGetEditorD($fname,$fvalue,$nheight="350",$etype="Basic",$gtype="print",$isfullpage="false")
{

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 tom@tiptop.cn ,  QQ