Welcome to the website navigation,本站只接受合法正规的企业网站,欢迎站长们提交你的网站获得展示和流量有任何问题请联系站长,欢迎大家加入本站。

                
提交网站
  • 网站:76083
  • 待审:5
  • APP:577
  • 文章:304416
  • 会员:56004
文字内链包年1000元 文字内链包年1000元 文字内链包年1000元 AI办公网站 AI绘画工具 AIchat

名站网址导航为大驾家提供DedeCMS站点程序站点教程相关的知识,比如织梦程序安装教程,织梦程序系统故障等教程。织梦程序dedecms网站程序中存在二种模板引擎,一个是静态网站网页模板引擎,也就是站长经常提到的模板用的就是这个引擎,咱们在织梦程序dedecms网站程序模板里经常看到的标签,例如{dede:arclist}{/dede:arclist}等,就是使用的这个引擎;另一个是动态的模板引擎,这个模板引擎一般用在“非核心模块的动态页面或站点列表页的模板解析”,从这名称就可以看出,动态模板引擎,用在动态页面,至于二者区别咱们这里不多说,请查一下织梦程序手册,里面有详细进解。

  今天咱们说的就是静态网站网页模板引擎,这个引擎就是咱们经常用的,只是咱们没有注意,咱们通过在模板里写的标签,就是这个来引擎来解析的,这也不是今天的讨论的范围,这个静态网站网页模板引擎的核心网站文件是:include/dedetag.class.php,今天的教程,就是学习一下这个引擎里面的功能的使用。

  如果不做二次网站开发的话,这个教程完全可以不用看,这些教程专为二次网站开发人员写的,也是自己在二次网站开发过程中的一点总结。

  刚登录织梦程序网站的后台后,左边的菜单就是就是通过循环标记,加上js来具体调用出来的,js今天咱们不讨论,只看一下菜单是如何实现的。在“织梦程序下载标签分析”这个教程里面介绍过了,这里再做一个概括:

  标签字符串的存在分二种情况,一种是存在于数据库表中,例如,下载标签softlinks,图片集标签imgurls,这些字段对应的字符串值,必须查询出来,然后,通过模板引擎遍历出咱们想要的网站内容。在这一种情况里面,又分二种,一种是存在在 织梦程序模板表字段fieldset里面的,这里面保存的都是附加表字段;另一种是存在于附加表里面的字段值,例如软件模型附加表里面的softlinks。
 
  插件模型表#@_plus里面字段menustring 对应的值,这个插件模型与频道模型是平级,这一点要注意。

  另一个就是不在数据库表中,而是在网站文件里面,这些网站文件后缀可以是htm,html,txt等,一般的后缀网站文件都可以。今天咱们进的就是第二种,咱们自己定义的,应用这种非常灵活,最大好处就是不用操作数据库表。

  不管哪一种,它们的通用相关具体代码如下是:

  1.引入模板引擎:dedetag.class.php,这是必须的,没有这个,一切空谈。

  2.实例化对象:$dtp = new DedeTagParse(),这个也是必须的,要不也是空谈。

  3.设置名字空间:$dtp->SetNameSpace('field','<','>')这个是也必须设置的,要不模板引擎也不知道你要做什么。这个系统数据库函数里面的field就是叫“标记的名字空间”,这个是可以改成自己的需要的,例如,织梦程序标签的标记的名字空

间是“dede”即$dtp->SetNameSpace("dede","{","}"),如果咱们要自己定义一个命子空间,例如,$dtp->SetNameSpace('m','<','>')、SetNameSpace('menu','<','>')等都是可以的。

  4.加载模板:$dtp->LoadTemplet('dedebase.html'),实际上所谓加载模板就是把存放标签的网站文件加载进来,以便后面的通过foreach把里面的网站内容遍历出来。模板网站文件dedebase.html里面的网站内容,如下所示。

<menu:item link="http://www.dedebase.com" title="织梦程序基地" />
<menu:item link="http://www.dedebase.com" title="织梦程序模板" />
<menu:item link="http://www.dedebase.com" title="织梦程序二次网站开发" />

  这里面任何的网站内容都可以随便写,但是必须名字空间对应,例如,名字空间是field,而你在模板写的是menu,这样就错了,模板中必须是field或,名字空间必须是menu,还有标记的开始与结束符号,必须一样,否则也会出错。

  在织梦程序有些网站文件里面,你会看到$dtp->LoadString(字符串),这完全正确,注意,这个系统数据库函数里面的必须是字符串。咱们去dedetag.class.php搜索检查看一下,你会发现,这个系统数据库函数又具体调用了“载入模板字符串”系统数据库函数LoadSource($str)
其中参数$str是字符串,然后,把这些字符串(也是就是标签)以这个字符串,作为网站文件名,系统缓存到网站文件data/tplcache/.md5($str).inc网站文件里面,然后,再把这个网站文件作为模板,通过系统数据库函数LoadTemplet()载入,从中可以看出,最终还是通过加载了这个系统数据库函数。

  还可能通过LoadSource($ctag->InnerText)来加载,最终也是加载了模板,这里面的参数$ctag->InnerText是标记之间的文本,要注意的是这个标记之间的网站文件也可能是一个标签,即标记中嵌套着标记。例如,下面的相关具体代码如下:
$menusMain = "
 <m:top mapitem='6' item='7' name='辅助插件' display='block'>
  <m:item name='插件管理器' link='plus_main.php' rank='10' target='main' />
  $plusset
</m:top>"

  $dtp = new DedeTagparse();
$dtp->SetNameSpace('m','<','>');
$dtp->LoadString($menusMain);

 foreach($dtp->CTags as $ctag)
    {

            $dtp2 = new DedeTagParse();
            $dtp2->SetNameSpace('m', '<', '>');
            $dtp2->LoadSource($ctag->InnerText);
            foreach($dtp2->CTags as $j=>$ctag2)
            {
                $mapstring .= "<li><a href='".$ctag2->GetAtt('link')."' target='".$ctag2->GetAtt('target')."'>".$ctag2->GetAtt('name')."</a></li>\r\n";
            }
            $mapstring .= "</ul>\r\n</dd>\r\n</dl>\r\n";
        }

相关具体代码如下已经简化了,请查网站文件dede/inc/inc_menu_map.php,最下面。

  5.循环遍历标记: foreach($dtp->CTags as $ctag){},根据需要遍历出自己想要的网站内容。

  以上就是循环标记的原理,现在咱们看一个例子。

  我想实现如下图所示的效果。

 
  正常情况咱们可以通过标签{dede:arclist}{/dede:arclist}就可以了,但是如果我想点每个文章标题,进入到不同的站点并且,不准查询数据库,用这个标签就完全实现不了了。

  咱们这样做就可以实现,建立一个网站文件dedebase.html这个网站文件名随便起,然后,在这里面写上如下相关具体代码如下。

<menu:item link="http://www.dedebase.com" title="织梦程序基地" />
<menu:item link="http://www.baidu.com" title="织梦程序模板" />
<menu:item link="http://www.g.com" title="织梦程序二次网站开发" />
<menu:item link="http://www.abc.com" title="织梦程序教程" />
<menu:item link="http://www.sina.com" title= 织梦程序dedecms网站程序网站内容管理系统" />

  然后,建立一个php网站文件test.php,在网站文件里写上,下面的相关具体代码如下。

<?php
header("Content-type:text/html;charset=utf-8");
require_once(dirname(__FILE__)."/include/common.inc.php");
/*require_once(DEDEINC."/typeunit.class.admin.php");
require_once(DEDEADMIN."/inc/inc_archives_functions.php");
*/
require_once(DEDEINC.'/dedetag.class.php');

      $dtp = new DedeTagparse();
      $dtp->SetNameSpace('menu','<','>');
      $dtp->LoadTemplet('dedebase.html');
      if(is_array($dtp->CTags))
      {
         foreach($dtp->CTags as $ctag)
         {
                 $title = $ctag->GetAtt('title');
                 $link = $ctag->GetAtt('link');
                 echo "<li><a href='{$link}' target='main'>{$title}</a></li>\r\n";
              }
            }


?>

  看看是不是已经实现了,搞定!

织梦程序dedecms网站程序网站文件上传功能分析教程tbKAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

tbKAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

关于DedeCMS站点程序站点教程相关的知识,就说到这里了希望能帮助朋友们。

标签:

分享到:

  网友投稿

注册时间:

网站:0 个   APP:0 个  文章:0 篇

  • 76083

    网站

  • 577

    APP

  • 304416

    文章

  • 56004

    会员

赶快注册账号,推广您的网站吧!
文章分类
热门网站
最新入驻APP小程序

宝贝市场2023-02-08

宝贝市场——买手和卖家商品展示

夺宝助手2023-02-08

夺宝助手小程序,查看每日快夺宝平

查诚信2023-02-08

查诚信是一款免费的商业查询工具

车价天天报2023-02-08

快速连接汽车销售,获知汽车最新报

考勤助理小程序2023-02-08

上班签到考勤,实时定位,后台轻松

汽车报价大全查询2023-02-08

汽车报价大全查询提供最新汽车市