onethink集团官网项目笔记整理(2015-05-31) – 901web前端博客 - 一个90后的前端之路,先学会做人,在学会做事,最后学会分享……

901web前端博客

人生就像一副复杂拼图
每个人总有属於自己的记忆碎片
Theme By 网上下载

联系我

RSS

五月 31, 2015

onethink集团官网项目笔记整理(2015-05-31)

最近的一个网站项目是制作集团的官网,开始的时候是一起写了静态页面,之后又和同事一起套了onethink的模版页面.用的是公司内部整理的kconethink系统,基于onethink自己做了一些内部的扩展和相关的优化,在制作这个项目的过程中,也是多人合作开发,其中也遇到了不少的问题,正是由于客户的需求不断改变,有不少问题需要考虑,也让自己对这个系统更加的熟悉,学习到了更多的内容.onethink是基于thinkphp写的,其实根本还是得我们熟悉thinkphp的语法和相关基础知识,才能运用的顺手.

首先,公司内部自己自己扩展了不少的插件和钩子,有导航高亮,百度地图,ajajx分页插件等等.此次制作该官网,页面相关的要求倒是不少,同时要兼容手机端,而且还是双语切换,瀑布流效果等,分页效果基本上都是ajax分页插件实现的(也就是同事@qiang写ajax分页插件).不过在使用的过程中也还是遇到了不少的问题.记忆特表深刻的就是那个瀑布流效果和新闻列表页面的描述截取.

下面整理一下在这个项目中遇到的相关基础知识,进行相关的笔记记录:

1.项目中相关目标文件的配置信息,我们可以在分类管理中,点击编辑进行相关的配置:(如下图)

另外就是导航链接的相关配置,当有二级菜单的时候,我们直接进入二级菜单的第一个子菜单页面.(这里就需要进行相关的链接配置).并且在有二级菜单的选项时候,我们点击对应的栏目进入还要添加对应的二级菜单栏目.(点击的地方是后台的导航管理里面,在对应有二级菜单的地方进行添加)

其次是导航栏目的调用部分代码:

##导航栏目部分做的相关判断:

  <think:nav name='nav' tree='true'>
	<li>
		<a href="<if condition='!$nav[_]'>{:get_nav_url($nav['url'])}<else/>javascript:;</if>" class="<eq name='key' value='0'>smenu1</eq> snav" child="{:getChildUrl($nav['_'])}">
			<span>{$nav.title}</span>
			<notempty name='nav["_"]'><i class="icong"></i></notempty>
		</a>
		<notempty name='nav["_"]'>
			<div class="sub_menu">
				<div class="submenuContainer">
					<ul>
						<volist name="nav['_']" id="sub">
								<li><a href="{:get_nav_url($sub['url'])}">{$sub.title}</a></li>
						</volist>
					</ul>
				</div>
			</div>
		</notempty>
	</li>
</think:nav>

###另外值得注意一点的是,当有二级下拉的子菜单的时候,点击导航管理,点击对应的导航栏目进去需要继续添加对应栏目的二级菜单,我自己再弄的时候确把这个给搞忘记了…^^^^^^

另外感觉有一个感觉比较实用的功能就是新建相关的模型,其中有基于文档的模型和独立模型两种,其中可以根据自己的需求建立相关的模型,当新建立了模型后,数据库中就增加了相关对应的数据表,然后我们可以根据模版页面中所需展示的数据来添加对应的字段.

##模型管理里面,当新增模型的时候需要填写的列表定义部分

id:编号
title:标题:article/edit?cate_id=[category_id]&id=[id]
type:类型
update_time:最后更新
status:状态
view:浏览
id:操作:[EDIT]&cate_id=[category_id]|编辑,article/setstatus?status=-1&ids=[id]|删除

##模版中进行相关的判断规则:

<if condition="$res[group] eq 1">
11111
<else/>
2222222
</if>

判断:(标签循环的时候添加判断)

<if condition="($key+1)%4 eq 0">class='list last'<else/>class='list'</if>

前台模版中对标题,描述中的html代码相关转义函数使用:前台 {$content|htmlspecialchars_decode}

前台模版中调用相关的截取函数:{$res.description|msubstr=0,60,’utf-8′,true}

@zhouzhiqiang修改了ot标签自带的<think:article>标签,使其支持传递参数catename值.
在读取数据的时候,有时候程序没有问题,但是读取的数据条数不对头,这是我们可以查看下查询的条件,看看是否读取了回收站中的数据,对回收站中的数据进行一遍过滤.
网信金融官网邮件发送记录(新建独立模型):

根据相关模板页面中的表单字段进行,在后台直接建立独立模型,然后点击导航栏目的 “系统->左侧菜单管理->新增邮件记录栏目” 然后填写相关的标题和链接.

(如果不填写新建独立模型下面的列表定义的话,点击进去就没有进行相关的操作和记录,如果是建立基于文档模型的,如果不填写则无法提交).

点击菜单管理,点击进入邮件记录,进行新增菜单,将会在左侧菜单栏显示.

并且在新建立相关模型的时候,列表定义相关规则关系着相关模型数据的展示.

纠结蛮长时间的还是在处理瀑布流那块.我自己测试的时候,数据加载出来了.但是就是没有应用上jquery.masonry.min.js插件的效果,最后还是同事修改了ajax分页插件,将数据在解析出来之后进行了处理.才应用上瀑布流效果…

最后新闻列表以及其他ajax分页数据显示部分的截取函数格式写法:

最外面的一层div要添加ajax_data_box的类名.其次要写上:

<div class="single ajax_data_lists" style="display:none;">

<div class="thumb">
<img src="" class="addons_ajax_titlethumb" pos="titlethumb:src" alt="" style="max-width:198px">
</div>

<div class="text">
<h2><span class="time addons_ajax_create_time">{$res.create_time|date="y-m-d",###}</span><a href="" class="addons_ajax_title addons_ajax_url" pos="url:href">标题</a><img src="" class="addons_ajax_logo" pos="logo:src" width="74" height="30"/></h2>
<p class='addons_ajax_description'>简介</p>
</div>
</div>
<div class="pages">
						{:Hook('ajaxPage',array('cate_id'=>47,'fields'=>'title;description|msubstr=###,0,100;create_time|date=Y-m-d,###;titlethumb|get_cover_path_thumb;logo|get_cover_path_logo;__DOCUMENT.id as url|getDetailUrl','listRow'=>5,'order'=>'level desc,create_time desc','name'=>'dynamic'))}
						<div class="ajax_data_page"></div>

					</div>

###thinkphp自带截取字符串函数修复(fixed):

function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) {  
if(function_exists("mb_substr")) {  
  if($suffix)  
   {   
        if($str==mb_substr($str, $start, $length, $charset)) 
            {  
                return mb_substr($str, $start, $length, $charset);      
            } 
        else   
            { 
                return mb_substr($str, $start, $length, $charset)."...";  
            }
    }  

else {  return mb_substr($str, $start, $length, $charset);   }   }  

elseif(function_exists('iconv_substr')) { if($suffix)   {  

if($str==iconv_substr($str,$start,$length,$charset)) 
{  return iconv_substr($str,$start,$length,$charset);  }    
else{ return iconv_substr($str,$start,$length,$charset)."..."; }} 
else  {   
    return iconv_substr($str,$start,$length,$charset);   }   }  
    $re['utf-8']  = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";  
    $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";   $re['gbk']  = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";  
    $re['big5']  = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";   preg_match_all($re[$charset], $str, $match); 
    $slice = join("",array_slice($match[0], $start, $length));  
    if($suffix) return $slice."…";  
return $slice; 
}

##模板标签中,标签库中使用where条件

<div class="year year2015">

<think:article catename="fzlcwz" name='development'  where="developyear = 2015" order="developmonth desc" result='res' >
<div class="leftyear">
<if condition="$key eq 0">
<strong class="year">{$res.developyear}年</strong> 
<else/>
<strong class="year" style="opacity:0;filter:alpha(opacity=0); ">{$res.developyear}年</strong>
</if>
</div>
<div class="rightrecord">
<div class="center_info">
<span class="col1 month"><if condition="$res[developmonth] lt 10">0{$res.developmonth}<else/>{$res.developmonth}</if>月</span> 

<div class="listp">
		{$res.neirong}
</div>

</div>
</div>
</think:article>
</div>

相关文章

返回