喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
     
标题: [原创] 可视化最好的模板  
 
litqqs
注册会员
Rank: 2
初级会员


UID 64079
精华 1
积分 154
帖子 116
金钱 144 喜悦币
威望 10
人脉 0
阅读权限 20
注册 2005-5-12
状态 离线
可视化最好的模板

哈, 只是玩玩. 近来研究下写DW的插件, 后为自己的模板写个插件.

图片, 以及网页控件


模板的嵌套




心动就要行动.
秋士出品,必是精品.
2007-9-7 11:18 AM#1
查看资料  访问主页  发短消息  QQ  顶部
 
rjp_ww
注册会员
Rank: 2
初级会员


UID 67694
精华 0
积分 168
帖子 426
金钱 168 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-1-2
状态 离线
[推荐阅读] 为文件名添加诸如_thumb这样的标记
好强呀,能不能免费教教我们呀,呵呵!
2007-9-7 11:28 AM#2
查看资料  发短消息  顶部
 
litqqs
注册会员
Rank: 2
初级会员


UID 64079
精华 1
积分 154
帖子 116
金钱 144 喜悦币
威望 10
人脉 0
阅读权限 20
注册 2005-5-12
状态 离线
[推荐阅读] discuz 论坛 数据库表结构设计
好, 接下来是教程.



心动就要行动.
秋士出品,必是精品.
2007-9-7 10:11 PM#3
查看资料  访问主页  发短消息  QQ  顶部
 
litqqs
注册会员
Rank: 2
初级会员


UID 64079
精华 1
积分 154
帖子 116
金钱 144 喜悦币
威望 10
人脉 0
阅读权限 20
注册 2005-5-12
状态 离线
[推荐阅读] 职业状态投票
第一步, 进入 [DW安装目录]\Configuration\Translators\
建立一个空白文件 vt.htm




心动就要行动.
秋士出品,必是精品.
2007-9-7 10:13 PM#4
查看资料  访问主页  发短消息  QQ  顶部
 
litqqs
注册会员
Rank: 2
初级会员


UID 64079
精华 1
积分 154
帖子 116
金钱 144 喜悦币
威望 10
人脉 0
阅读权限 20
注册 2005-5-12
状态 离线
[推荐阅读] 在大城市太郁闷太拥挤怎么办啊
第二步:  文件粘上下以HTML代码保存.

<?php
<html>
<
head>
<
title>VT If Tag Translator</title>
<
meta http-equiv="Content-Type" content="text/html; charset=gbk">
<
script language="JavaScript">
/*
 * author:TengQiu Li(Viky Li)
 * date:2007-06-10
 * modify:2007-09-07
 *
 */
var TransVar=false;//表明是否转换变量
var TransConst=false;//表明是否转换常量
var TransFormat='img|select|options|edit|editint|editnum|checkselect|checkcheckbox|checkradio|radio|checkbox';//表明要转换格式化名,当前可转换有: img|select|options|inputint|inputnum|num|date
function getTranslatorInfo()
{
    var 
i=0;
    var 
transArray = new Array(10);
    
transArray[0] = "VT";
    
transArray[1] = "VT If Translator";
    
transArray[2] = "5";
    
transArray[3] = "htm";
    
transArray[4] = "html";
    
transArray[5] = "php";
    
transArray[6] = "shtm";
    
transArray[7] = "shtml";
    
transArray[8] = "0";
    
transArray[9] = "byExtension";// byExpression|allFiles|noFiles|byExtension|bystring
    
return transArray
}
function 
strToValue(str)
{
    var 
r= new RegExp('"'"g");
    
strstr.replace(r,'"');
    
strstr.replace(/</ig,'&lt;');
    
strstr.replace(/>/ig,'&gt;');
    return 
str;
}
function 
translateMarkupdocNameStrsiteRootStrinStr )
{
    var 
patternFound false;
    var 
pos 0;
    var 
outStr '';
    var 
remainInStr inStr;

    
//转换格式化器
    
if(''!=TransFormat){
        
pos=0;
        
//remainInStr = outStr;
        //outStr='';
        //reg = new RegExp("(str_img)","im");
        
reg=new RegExp("({(\$[\$a-z_0-9\[\]\'\\"]+):("+TransFormat+")(='([^rn']*?)')?})", "im");
        while ((pos = remainInStr.search(reg)) >= 0){
            var matchStr = RegExp.$1;
            var varStr = RegExp.$2;
            var formatStr = RegExp.$3;
            var _Str = RegExp.$4;
            var paramStr = RegExp.$5;
            outStr += remainInStr.substr(0, pos);
            var replacement='';
            switch(formatStr){
                case '
img'        :replacement='<img src="" '+paramStr.replace(/"/g,'"')+' />';break;
                case 'select'    :replacement='<select '+paramStr.replace(/"
/g,'"')+'><option>'+varStr+'</option></select>';break;
                case 
'options'    :replacement='<option >'+varStr+'</option>';break;
                case 
'checkbox'    :replacement='<input type="checkbox" />'+varStr; break;
                case 
'radio'    :replacement='<input type="radio" />'+varStr; break;
                case 
'edit'        :replacement='<span style="background:#FFFF99"><input value="'+strToValue(varStr)+'" type="text" '+paramStr.replace(/"/g,'"')+' /></span>';break;
                case '
editint'    :replacement='<span style="background:#FFFF99"><input value="'+strToValue(varStr)+'" type="text" '+paramStr.replace(/"/g,'"')+' /></span>';break;
                case 'editnum'    :replacement='<span style="
background:#FFFF99"><input value="'+strToValue(varStr)+'" type="text" '+paramStr.replace(/"/g,'"')+' /></span>';break;    
                
case 'checkselect'        :replacement '<img width="10" height="10">';break;
                case 
'checkcheckbox'    :replacement '<img width="10" height="10">';break;
                case 
'checkradio'        :replacement '<img width="10" height="10">';break;
                case 
'date'    ://replacement='<span style="background-color:#FF80FF;color:black;padding:0px 2px;">';
                                
replacement += paramStr.replace('Y','1980').replace('m','05').replace('d','12').replace('H','04').replace('i','07').replace('s','33');
                                
//replacement += '</span>';
                                
break;    
                default :
replacement='{'+varStr+'}';break;    
            }
            
// Do translation
            
outStr += '<MM:BeginLock translatorClass="' getTranslatorInfo()[0] + '" type="vtFormatVar" orig="' escape(matchStr.replace(/"/g,'"')) + '" >'+replacement+'<MM:EndLock>';
            // Re-search text following match
            remainInStr = remainInStr.substring(pos + matchStr.length);
            // Remember that at least one translation was performed
            patternFound = true;
        }
        outStr += remainInStr;
    }

    //转换if与elseif
    pos = 0;
    remainInStr = outStr;
    outStr = '';
    reg = new RegExp("
(<!--[ trn]*@[ trn]*(if|elseif)[ trn]*((.*?))[ trn]*-->)", "im");
    while ((pos = remainInStr.search(reg)) >= 0)
    {
        var matchStr = RegExp.$1;
        var matchTag = RegExp.$2;
        var matchCon = RegExp.$3;
        matchCon = matchCon.replace(/^[ t]+/,'').replace(/[ t]+$/,'').replace(/[ t]+/,' ');
        if(matchCon.length>10) matchCon = matchCon.substr(0,7) + '...';
        matchCon = matchCon.replace('&','&').replace('<','&lt;').replace('>','&gt;').replace('"','"e;');
        var replace =matchTag+'('+matchCon+')';

        outStr += remainInStr.substr(0, pos);
        // Do translation
        outStr += '<MM:BeginLock translatorClass="' + getTranslatorInfo()[0] + '" type="
vtIf" orig="' + escape(matchStr) + '"';

        outStr += '><span style="
background-color:#FF80FF;color:black;padding:0px 2px;">@'+replace+'</span><MM:EndLock>';
        
        // Re-search text following match
        
remainInStr remainInStr.substring(pos matchStr.length);
        
// Remember that at least one translation was performed
        
patternFound true;
    }
    
outStr += remainInStr;
    
//转换else
    
pos=0;
    
remainInStr outStr;
    
outStr='';
    
reg = new RegExp("(<!--[ trn]*@else[ trn]*-->)""im");
    while ((
pos remainInStr.search(reg)) >= 0)
    {
        var 
matchStr RegExp.$1;
        
outStr += remainInStr.substr(0pos);
        
// Do translation
        
outStr += '<MM:BeginLock translatorClass="' getTranslatorInfo()[0] + '" type="vtIf" orig="' escape(matchStr) + '"';

        
outStr += '><span style="background-color:#FF80FF;color:black;padding:0px 2px;">@else</span><MM:EndLock>';
        
        
// Re-search text following match
        
remainInStr remainInStr.substring(pos matchStr.length);
        
// Remember that at least one translation was performed
        
patternFound true;
    }
    
//转换 endif
    
outStr += remainInStr;
    
pos=0;
    
remainInStr outStr;
    
outStr='';
    
reg = new RegExp("(<!--[ trn]*@(/if|endif);?[ trn]*-->)""im");
    while ((
pos remainInStr.search(reg)) >= 0)
    {
        var 
matchStr RegExp.$1;
        
outStr += remainInStr.substr(0pos);
        
// Do translation
        
outStr += '<MM:BeginLock translatorClass="' getTranslatorInfo()[0] + '" type="vtIf" orig="' escape(matchStr) + '"';

        
outStr += '><span style="background-color:#FF80FF;color:black;padding:0px 2px;">@endif</span><MM:EndLock>';
        
        
// Re-search text following match
        
remainInStr remainInStr.substring(pos matchStr.length);
        
// Remember that at least one translation was performed
        
patternFound true;
    }
    
outStr += remainInStr;
    
    
//转换常量
    
if(TransConst){
        
pos=0;
        
remainInStr outStr;
        
outStr='';
        
reg = new RegExp("({[([a-z_0-9x81-xfe]+)]})""im");
        while ((
pos remainInStr.search(reg)) >= 0)
        {
            var 
matchStr RegExp.$1;
            var 
constStr RegExp.$2;
            
outStr += remainInStr.substr(0pos);
            
// Do translation
            
outStr += '<MM:BeginLock translatorClass="' getTranslatorInfo()[0] + '" type="vtConst" orig="' escape(matchStr) + '"';

            
outStr += '><span style="background-color:#FF80FF;color:black;padding:0px 2px;">'+RegExp+'</span><MM:EndLock>';
            
            
// Re-search text following match
            
remainInStr remainInStr.substring(pos matchStr.length);
            
// Remember that at least one translation was performed
            
patternFound true;
        }
        
outStr += remainInStr;
    }
//
//

    
return patternFound outStr "";
}
</script>
</head>
<body>
</body>
</html>
?>
[ 本帖最后由 litqqs 于 2007-9-7 10:18 PM 编辑 ]




心动就要行动.
秋士出品,必是精品.
2007-9-7 10:15 PM#5
查看资料  访问主页  发短消息  QQ  顶部
 
litqqs
注册会员
Rank: 2
初级会员


UID 64079
精华 1
积分 154
帖子 116
金钱 144 喜悦币
威望 10
人脉 0
阅读权限 20
注册 2005-5-12
状态 离线
[推荐阅读] 买PHP程序员一个,6k-7k
接下来是上面代码的说明:
要实现代码的转换, 代码中必须实现两个JS函数

array getTranslatorInfo()
string translateMarkup(string docNameStr,string siteRootStr,string inStr )

----------------------------------------

array getTranslatorInfo()这个函数返回转换的重要资讯

//代码说明:
function getTranslatorInfo()
{
        var transArray = new Array(10);        //这个数组的元素个数, 千万别多填哦
        transArray[0] = "VT";        //代码转换器名称, 英文字母,数字,下划线与减号组成且首字母不能是数字
        transArray[1] = "VT If Translator";//转换器标题, 随你写什么都可以
        transArray[2] = "5";   //这个参数是接下来文件后缀个数
        transArray[3] = "htm";
        transArray[4] = "html";
        transArray[5] = "php";
        transArray[6] = "shtm";
        transArray[7] = "shtml";
        transArray[8] = "0";  //表达式个数
        transArray[9] = "byExtension";// 启用转换器的条件. 当前是依据文件后缀来启用转换器. 可选值. byExpression|allFiles|noFiles|byExtension|bystring
        return transArray;
}
上面的参数不好表达, 多写几个这个函数自己领会
例一:
function getTranslatorInfo()
{
        var r=new Array(5);
        r[0]='VT2';
        r[1]='VT2 Title';
        r[2]='0';
        r[3]='0';
        r[4]='allFiles'; //所有文件都启用
}
例二:
function getTranslatorInfo()
{
        var r=new Array(7);
        r[0]='VT2';
        r[1]='VT2 Title';
        r[2]='0';
        r[3]='2';
        r[4]='<!--[ \r\n\t]*#';
        r[5]='VikyLi';
        r[6]='byExpression'; //文件代码中能配上两个正则表达式任一个时启用转换器
}
例三:
function getTranslatorInfo()
{
        var r=new Array(6);
        r[0]='VT2';
        r[1]='VT2 Title';
        r[2]='0';
        r[3]='1';
        r[4]='VikyLi';
        r[5]='bystring'; //文件代码中含有上面字符串时启用转换器
}




心动就要行动.
秋士出品,必是精品.
2007-9-7 10:38 PM#6
查看资料  访问主页  发短消息  QQ  顶部
 
litqqs
注册会员
Rank: 2
初级会员


UID 64079
精华 1
积分 154
帖子 116
金钱 144 喜悦币
威望 10
人脉 0
阅读权限 20
注册 2005-5-12
状态 离线
[推荐阅读] 承揽网站开发[php,jsp兼职]
第二个函数是实现转换的关键函数.
写个简单点的来说明:
function translateMarkup( docNameStr, siteRootStr, inStr )
{
/*
docNameStr  名件路径
siteRootStr 站点路径
inStr            DW代码视图中看到的代码
*/
        var pos = 0;
        var outStr = '';
        var remainInStr = inStr;
        var reg= new RegExp('(\[smile([0-9]+)\])','im'); //转换类似 [smile0] [smile1] [smile2] [smile3] 的代码 成一些字符表情
        while ((pos = remainInStr.search(reg)) >= 0){
                var matchStr = RegExp.$1;//匹配到的代码
                var num = RegExp.$2;
                outStr += remainInStr.substr(0, pos);
                var replacement='';
                switch(num){
                        case 0:        replacement=':)';break;
                        case 1:        replacement=':(';break;
                        case 2:        replacement='--!';break;
                        default:replacement='-_-';break;
                }
                replacement='<span style="color:red;font-weight:bold; padding:3px;">' + replacement + '</span>';
                //标签MM:BeginLock 的属性 orig 用来保全原来的代码
                //中间是你想要显示的内容
                outStr += '<MM:BeginLock translatorClass="' + getTranslatorInfo()[0] + '" type="vtFormatVar" orig="' + escape(matchStr.replace(/"/g,'"')) + '" >'+replacement+'<MM:EndLock>';
                remainInStr = remainInStr.substring(pos + matchStr.length);
        }
        return outStr;
}




心动就要行动.
秋士出品,必是精品.
2007-9-7 11:06 PM#7
查看资料  访问主页  发短消息  QQ  顶部
 
litqqs
注册会员
Rank: 2
初级会员


UID 64079
精华 1
积分 154
帖子 116
金钱 144 喜悦币
威望 10
人脉 0
阅读权限 20
注册 2005-5-12
状态 离线
[推荐阅读] session 如何传递 mysql的一列
要更详细的插件请点DW的菜单-->帮助-->扩展Dreamweaver



心动就要行动.
秋士出品,必是精品.
2007-9-7 11:09 PM#8
查看资料  访问主页  发短消息  QQ  顶部
 
wzhu (wzhu)
版主
Rank: 7Rank: 7Rank: 7
C[A-Z]O


UID 68040
精华 0
积分 47788
帖子 1562
金钱 47765 喜悦币
威望 0
人脉 23
阅读权限 100
注册 2006-1-14
来自 湖北荆州>陕西西安>辽宁 ...
状态 离线
[推荐阅读] 南昌舰网科技有限公司提供服务器租用及托管
说真的,俺用不起DW.倒是大学时,学校的机房里面是Win98,及其上有个frontpage倒用过



<?wzhu
wzhu.print("This is a wzhu language");
?>
2007-9-7 11:25 PM#9
查看资料  访问主页  Blog  发短消息  QQ  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.066222 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP