首页
关于本站
网站模板
代码教程
Emlog教程
米拓教程
SEO优化教程
Ecshop教程
zblog教程
Excel技巧
电脑软件教程
互联网
免费资源
网络新闻
留言咨询
在线问答
申请友链
网址导航
联系舍力
搜索
舍力
登录
搜索
舍力
静以修身。
累计撰写
1140
篇文章
累计收到
3550
条评论
首页
栏目
首页
关于本站
网站模板
代码教程
Emlog教程
米拓教程
SEO优化教程
Ecshop教程
zblog教程
Excel技巧
电脑软件教程
互联网
免费资源
网络新闻
留言咨询
在线问答
申请友链
网址导航
联系舍力
代码教程
2015-6-30
利用@media screen实现自适应网页布局兼容IE的respond.js
respond.js 是一个快速、轻量的 polyfill,用于为 IE6-8 以及其它不支持 CSS3 Media Queries 的浏览器提供媒体查询的 min-width 和 max-width 特性,实现响应式网页设计(Responsive Web Design)。 (function(w) { "use strict"; w.matchMedia = w.matchMedia || function(doc, undefined) { var bool, docElem = doc.documentElement, refNode = docElem.firstElementChild || docElem.firstChild, fakeBody = doc.createElement("body"), div = doc.createElement("div"); div.id = "mq-test-1"; div.style.cssText = "position:absolute;top:-100em"; fakeBody.style.background = "none"; fakeBody.appendChild(div); return function(q) { div.innerHTML = '­<style media="' + q + '"> #mq-test-1 { width: 42px; }</style>'; docElem.insertBefore(fakeBody, refNode); bool = div.offsetWidth === 42; docElem.removeChild(fakeBody); return { matches: bool, media: q }; }; }(w.document); })(this); (function(w) { "use strict"; var respond = {}; w.respond = respond; respond.update = function() {}; var requestQueue = , xmlHttp = function() { var xmlhttpmethod = false; try { xmlhttpmethod = new w.XMLHttpRequest(); } catch (e) { xmlhttpmethod = new w.ActiveXObject("Microsoft.XMLHTTP"); } return function() { return xmlhttpmethod; }; }(), ajax = function(url, callback) { var req = xmlHttp(); if (!req) { return; } req.open("GET", url, true); req.onreadystatechange = function() { if (req.readyState !== 4 || req.status !== 200 && req.status !== 304) { return; } callback(req.responseText); }; if (req.readyState === 4) { return; } req.send(null); }, isUnsupportedMediaQuery = function(query) { return query.replace(respond.regex.minmaxwh, "").match(respond.regex.other); }; respond.ajax = ajax; respond.queue = requestQueue; respond.unsupportedmq = isUnsupportedMediaQuery; respond.regex = { media: /@media+\{(*\{*\})+/gi, keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes+\{(?:*\{*\})+*\}/gi, comments: /\/\**\*+(*\*+)*\//gi, urls: /(url\()?(+)?(\))/g, findStyles: /@media *(+)\{(+?)$/, only: /(only\s+)?(+)\s?/, minw: /\(\s*min\-width\s*:\s*(\s*+)(px|em)\s*\)/, maxw: /\(\s*max\-width\s*:\s*(\s*+)(px|em)\s*\)/, minmaxwh: /\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*+)(px|em)\s*\)/gi, other: /\(*\)/g }; respond.mediaQueriesSupported = w.matchMedia && w.matchMedia("only all") !== null && w.matchMedia("only all").matches; if (respond.mediaQueriesSupported) { return; } var doc = w.document, docElem = doc.documentElement, mediastyles = , rules = , appendedEls = , parsedSheets = {}, resizeThrottle = 30, head = doc.getElementsByTagName("head") || docElem, base = doc.getElementsByTagName("base"), links = head.getElementsByTagName("link"), lastCall, resizeDefer, eminpx, getEmValue = function() { var ret, div = doc.createElement("div"), body = doc.body, originalHTMLFontSize = docElem.style.fontSize, originalBodyFontSize = body && body.style.fontSize, fakeUsed = false; div.style.cssText = "position:absolute;font-size:1em;width:1em"; if (!body) { body = fakeUsed = doc.createElement("body"); body.style.background = "none"; } docElem.style.fontSize = "100%"; body.style.fontSize = "100%"; body.appendChild(div); if (fakeUsed) { docElem.insertBefore(body, docElem.firstChild); } ret = div.offsetWidth; if (fakeUsed) { docElem.removeChild(body); } else { body.removeChild(div); } docElem.style.fontSize = originalHTMLFontSize; if (originalBodyFontSize) { body.style.fontSize = originalBodyFontSize; } ret = eminpx = parseFloat(ret); return ret; }, applyMedia = function(fromResize) { var name = "clientWidth", docElemProp = docElem, currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body || docElemProp, styleBlocks = {}, lastLink = links, now = new Date().getTime(); if (fromResize && lastCall && now - lastCall < resizeThrottle) { w.clearTimeout(resizeDefer); resizeDefer = w.setTimeout(applyMedia, resizeThrottle); return; } else { lastCall = now; } for (var i in mediastyles) { if (mediastyles.hasOwnProperty(i)) { var thisstyle = mediastyles, min = thisstyle.minw, max = thisstyle.maxw, minnull = min === null, maxnull = max === null, em = "em"; if (!!min) { min = parseFloat(min) * (min.indexOf(em) > -1 ? eminpx || getEmValue() : 1); } if (!!max) { max = parseFloat(max) * (max.indexOf(em) > -1 ? eminpx || getEmValue() : 1); } if (!thisstyle.hasquery || (!minnull || !maxnull) && (minnull || currWidth >= min) && (maxnull || currWidth <= max)) { if (!styleBlocks) { styleBlocks = ; } styleBlocks.push(rules); } } } for (var j in appendedEls) { if (appendedEls.hasOwnProperty(j)) { if (appendedEls && appendedEls.parentNode === head) { head.removeChild(appendedEls); } } } appendedEls.length = 0; for (var k in styleBlocks) { if (styleBlocks.hasOwnProperty(k)) { var ss = doc.createElement("style"), css = styleBlocks.join("\n"); ss.type = "text/css"; ss.media = k; head.insertBefore(ss, lastLink.nextSibling); if (ss.styleSheet) { ss.styleSheet.cssText = css; } else { ss.appendChild(doc.createTextNode(css)); } appendedEls.push(ss); } } }, translate = function(styles, href, media) { var qs = styles.replace(respond.regex.comments, "").replace(respond.regex.keyframes, "").match(respond.regex.media), ql = qs && qs.length || 0; href = href.substring(0, href.lastIndexOf("/")); var repUrls = function(css) { return css.replace(respond.regex.urls, "$1" + href + "$2$3"); }, useMedia = !ql && media; if (href.length) { href += "/"; } if (useMedia) { ql = 1; } for (var i = 0; i < ql; i++) { var fullq, thisq, eachq, eql; if (useMedia) { fullq = media; rules.push(repUrls(styles)); } else { fullq = qs.match(respond.regex.findStyles) && RegExp.$1; rules.push(RegExp.$2 && repUrls(RegExp.$2)); } eachq = fullq.split(","); eql = eachq.length; for (var j = 0; j < eql; j++) { thisq = eachq; if (isUnsupportedMediaQuery(thisq)) { continue; } mediastyles.push({ media: thisq.split("(").match(respond.regex.only) && RegExp.$2 || "all", rules: rules.length - 1, hasquery: thisq.indexOf("(") > -1, minw: thisq.match(respond.regex.minw) && parseFloat(RegExp.$1) + (RegExp.$2 || ""), maxw: thisq.match(respond.regex.maxw) && parseFloat(RegExp.$1) + (RegExp.$2 || "") }); } } applyMedia(); }, makeRequests = function() { if (requestQueue.length) { var thisRequest = requestQueue.shift(); ajax(thisRequest.href, function(styles) { translate(styles, thisRequest.href, thisRequest.media); parsedSheets = true; w.setTimeout(function() { makeRequests(); }, 0); }); } }, ripCSS = function() { for (var i = 0; i < links.length; i++) { var sheet = links, href = sheet.href, media = sheet.media, isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet"; if (!!href && isCSS && !parsedSheets) { if (sheet.styleSheet && sheet.styleSheet.rawCssText) { translate(sheet.styleSheet.rawCssText, href, media); parsedSheets = true; } else { if (!/^(*\/\/)/.test(href) && !base || href.replace(RegExp.$1, "").split("/") === w.location.host) { if (href.substring(0, 2) === "//") { href = w.location.protocol + href; } requestQueue.push({ href: href, media: media }); } } } } makeRequests(); }; ripCSS(); respond.update = ripCSS; respond.getEmValue = getEmValue; function callMedia() { applyMedia(true); } if (w.addEventListener) { w.addEventListener("resize", callMedia, false); } else if (w.attachEvent) { w.attachEvent("onresize", callMedia); } })(this); 直接下载>>respond.zip<<文件
2015年6月30日
10402 阅读
2 评论
代码教程
2015-6-26
删除ecshop手机网页WAP版的方法分享
删除ecshop自带的WAP版。用手机打开ECSHOP,就会跳转到mobile文件夹,如果打开wap功能,就能看到wap版得网站,且有BUG,难看。但目前智能手机、PAD、IPhone、Android可以跟电脑一样浏览和购物。实在不行,就下载个uc浏览器。所以这个wap功能实在无用武之地,可以彻底删除,且提高安全性。 1、删除/wap和/mobile目录和目录下的所有文件 2、删除根目录index.php中的 3、删除相关数据库(在SQL执行以下代码) DELETE FROM ecs_shop_config WHERE ecs_shop_config.code in ( "wap", "wap_config","wap_logo"); 4、删除languages/zh_cn/admin/shop_config.php中的
2015年6月26日
22084 阅读
1 评论
Ecshop教程
2015-6-13
必知信息发布技巧 - 关于关键词不得不知道的四点
1、选择核心关键字:饰品作为核心关键字其热门程度之高可想而知,一般像饰品这样的热门关键字基本上是通过百度推广做上去的,如果不惜金钱为代价可以通过百度推广,搜索发现,这个关键字已经被一些权威站点或者百度竞价垄断。不过你可以选择其他的相关的做核心关键字。比如"饰品+赠送","女性饰品购物”等等。 2、相关关键字:每个搜索引擎都给大家提供了参考。百度,雅虎,谷歌都有相关搜索,而且雅虎还有一个热门搜索,显示近期常用的相关词语。大家可以把相关关键字词作为网站的分类栏目。作为分类栏目好处是可以突出关键字,让其他内页辅助,并且可以在网站内多次合理的出现。稍微细心的朋友都会发现,很多时候页面里无相关内容,只因为分类栏目与搜索的关键字相同,却出现在搜索结果里。 3、生僻关键字:做生僻关键字主要是将来结合百度下拉进行生僻关键字炒作,比如在百度中输入品牌(公司名称)+空格出现你想要的生僻关键词,做生僻关键词前期需要大量投入文章,其文章标题要以热门关键字+生僻关键字的组合出现,例如OBH 气泡水机,最后通过百度下来营销工具,把生僻关键字做到百度下拉菜单栏目里。 4、垃圾关键字:你可以自己根据自己的网站内容,寻找一些相关的,但是很少被人使用的关键字。虽然这类关键字带来的流量很小,不过排名容易上去,也许一个页面,一个更新信息,被收录后当天就能排在第一页。补充一些相关页面比制造一直垃圾页面更能带来流量。特别是对于一些地方站,行业站来说,这是个比较好的方法。我有个网站,在来路统计里看到,关键字舍力博客一个月才被搜索几十次,但是所有的生僻关键字加一起,却占据了10%。
2015年6月13日
11386 阅读
8 评论
SEO优化教程
2015-6-13
标题拟定 - 如何设置关键词更好的被收录(标题关键词策划)
更好的被收录策划关键词: 1、产品名称 2、公司名+产品名称 3、地区+产品名称 4、型号+产品名称 5、类别+产品名称 6、用途+产品名称 7、地区+型号+产品名称 8、品牌+型号+产品名称 9、性能+产品名称 10、产品名称+价格 11、产品名称+厂家 12、产品名称+批发 13、产品名称+供应商 ……其它的产品也是一样,如果是全国市场,可以在产品的前面加上各城市名。 (要注意的是产品名称里不要放电话号码或者QQ之类的)这样的话您的客户就可以通过不同的关键词搜索到您这边,效果自然就来得快了。
2015年6月13日
9925 阅读
0 评论
SEO优化教程
2015-6-13
信息发布技巧 - 百度收录规则(百度内部人员大揭底)
如果想让百度收录的更多,我们就要写原创,而且要保质保量的完成,这样才能将即时客户转变成潜在客户,如果一个网站不能做到吸引客户,让他们没有了解的欲望,那这样的网站是很不成功的。所以我们不仅要提高网站的内容质量,还要了解百度收录的秘密。 百度讨厌的几种做法: 1、点击后打开的页面与客户想看的页面大相径庭,是另一个不相干的网页,这是一些作弊行为,百度是很不喜欢的,如果这种情况很多或者说是主要的“优化”形式,这个站的收录内容应该是很少了,而且是越来越少,因为用户体验上不去,权重也会越来越低。 2、这个问题很常见,百度要求内容与题目要有呼应。如果只是标题中有这种关键词,而内容中出现的很少这就属于作弊行为,百度会察觉到的,如果百度不在信任你的网站,那收录的内容一定会越来越少。 3、百度收录如果都是千篇一律,那用户体验一定也会下降,所以他们并不喜欢收录同样的内容,即使很精彩很经典,也不如新的更能吸引眼球。百度喜新厌旧,如果网站每天都更新,而且内容原创,受客户欢迎,那何愁百度不来收录呢?所以想增加收录量,网站内容一定要新颖。 百度对于内容的要求: 一、标题 1、原创:标题也需要原创,不要复制粘贴,搜索引擎喜欢原创的内容,重复的内容发布没有意义,搜索引擎不会收录。 2、带有长尾核心关键词:首先,确定你要推广的主关键词,如果你要推广高顶灯,那么,你的关键词就是“高顶灯”。然后,你要知道,主关键词的竞争是比较剧烈的,而且笼统的一个“高顶灯”,既不利于百度搜索引擎收录,也不能有效打动顾客,那么,如何具体化这个主关键词,至关重要,那就需要加入“长尾关键词”。 站在消费者的角度,这样一个标题也呼之欲出了,一连串的带有关键词的标题就出来了。 二、如何写内容 内容可以从多个方面进行描述如:产品概述、适用场所、性能、售后服务、特点等分段描述,注意用户体验。 三、图片 “治大国如烹小鲜”,发布产品信息,也应该有炒一碟菜的细致、精心。而一篇没有精美的图片相辉映的产品信息,就好比讲究“色香味俱全”的菜肴,少了“色”这一味,让人顿失胃口。 四、收录 只要不是重复性的内容,属原创内容百度,360,搜狗等搜索引擎一定会收录,客户在搜索引擎上搜索“高顶灯”类相关信息搜索结果中即会有您发布的信息。
2015年6月13日
9287 阅读
1 评论
SEO优化教程
2015-6-12
【转】5月份百度算法调整,排名下降原因分析
受夫唯老师的邀请,昨天在搜外的公开课上分享了百度K站的一些分析和算法的调整,经过今天为各位朋友同学分析了几十个网站之后,基本上确定了5月百度打击的核心目的是“SEO优化过度”。 经过数据整理得出以下特征: 1、绝大部被降权网站,标题、关键词、描述中都有关键词堆砌行为,推荐学习58同城的TDK写法。在TDK中堆砌关键词也是百度识别SEO站点的主要有效方式之一。 2、大部分被降权网站在文本、alt、超链接中的title属性中有堆砌关键词。这属于搜索引擎反作弊规则的重要一环,建议合理使用这些标签,而不是在其中使劲添加关键词。 3、部分网站有过度使用加粗标签。这个标签是百度打击SEO优化的一个主要标签。非常容易造成降权。 4、部分网站有多个H1等作弊行为,多个H1将会导致被反作弊规则识别,直接降权。 5、不少站点出现了大量的空连接或者重复链接,这是用户体验差的表现,有一定概率造成降权。 6、有大约1/5的站点访问速度特别慢。请及时更换空间或者服务器,访问速度过低会被降权,这是百度站长平台多次声明过的。 7、不少网站使用了QQ客服代码链接:http://wpa.qq.com/msgrd?v=3……,是以直接的链接形式出现的,建议这样的链接用JS实现或者加nofollow。有可能导致搜索引擎误判。 8、少量的网站存在一定数量死链接,建议尽快处理好。 9、在诊断过程中出现了一个可能是被百度误伤的正常优化站,建议可以调整自己的优化手法,或者向百度反馈,或者等待即可。 10、大部分网站都有大量的重复链接(内链),或者重复导出链接(向外导出链接),这是容易触发反作弊规则的一个情况。 以下是今天网站诊断过程中找到的几个很有代表性的截图: 上面的网站同时匹配了TDK堆砌关键词、多个H1作弊、重复链接、alt中关键词堆砌、title属性关键词堆砌、内页存在大量导出链接。嗯,这个站不调整自己的网站基本上不可能恢复排名了。
2015年6月12日
15696 阅读
0 评论
SEO优化教程
2015-6-12
SEO中TDK写法的意思以及注意事项
在SEO中,所谓的TDK其实就是title、description、keywords这三个标签,这三个标签在网站的优化过程中,至关重要所以今天童童来和大家分享下,如何去写好TDK标签! 1、title标题标签 一般采用的是关键词+网站名模式,建议是1-3个关键词用下划线_连接,最后小划线-链接网站名,标题一般建议是28个字,百度对网站标题索引是28个字,即你写的多排名结果不会显示出完整标题,所以最好是28个字内。 2、keywords关键词标签 建议选取网站的核心关键词3个左右,不要太多,用半角逗号相连。新人朋友有些喜欢在keywords标签中加入很多关键词,生怕浪费了,其实没这个必要,想什么都抓住,最后什么也抓不住。而且现在的keywords标签搜索引擎都不怎么看的。 3、description描述标签 建议是站名开头,用网站关键词说成一句话,一定要通顺。描述标签一般写120字以内,建议是64个字以内,因为百度等搜索引擎对描述标签排名索引是64个字。 Title标签是最为重要的一环,关系着目标关键词的排名,Keywords标签对百度搜索结果影响不大,Description标签是对title的一个补充,适合长尾关键词出现。 所有标签要符合四不过三,三不过四,二不过五的关键词撰写原则。所谓原则就是指四个字的关键词不要重复出现超过三次,三个字的关键词不要重复出现超过四次,二个字的关键词不要重复出现超过五次。
2015年6月12日
12768 阅读
0 评论
SEO优化教程
2015-6-12
emlog教程:手机访问自动跳转到首页或相应文章地址
手机访问自动跳转到首页或相应文章地址,在模板文件header.php中<head></head>之间加入如下代码即可。 <script type="text/javascript"> if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){ if(window.location.href.indexOf("?mobile")<0){ try{ if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){ window.location.href="<?php echo BLOG_URL; ?>/m/?post=<?php echo $logid;?>"; } }catch(e){} } } </script>
2015年6月12日
13183 阅读
16 评论
Emlog教程
2015-6-11
Ecshop:后台添加新功能栏目以及管理权限设置
一、添加菜单项 打开 /admin/includes/inc_menu.php文件(后台框架左边菜单),在最后添加一行如下: 1$modules = 'sns_list.php?act=list'; ecshop默认一级菜单项有16项,所里这里的例子从17开始。当然这个key可以随便取的,index.php文件中对菜单用了ksort排序。“17_other_menu” 表示一级菜单,“sns_list”表示二级菜单。等号后面的值表示该菜单栏目打开的页面链接。 二、配置菜单语言 打开 /languages/zh_cn/admin/common.php文件,添加语言 1$_LANG = '其它设置'; 2$_LANG = 'SNS管理'; 这时候,用管理员身份(admin用户)登录后台,便可看到新添加的菜单项了。因为admin的权限是“all”。如果后台有多个管理员,比如ecshop商城的供货商们,或者其它管理人员(由admin创建的其它可登陆后台的账户),如果想让他们也拥有新添加菜单的查看权利,则必须为他们分配该栏目的管理权限。 三、把新菜单加入权限列表 打开 /languages/zh_cn/admin/priv_action.php文件,在“权限管理的一级分组”注释行下面添加如下代码 1$_LANG = '其它设置'; 这里的“other_manager”是该一级栏目的权限名称,这里和栏目名称“17_other_menu”保持一致,也可以随便取个名。这里以示区别,就没有和菜单名一样。 然后,添加二级栏目“sns_list”的权限名称。在本文件的最后添加即可 1//其它管理 2$_LANG = 'SNS管理'; 这里这个权限名称和二级菜单名是一致的。这两项现在在哪里呢?如下图 四、把一级菜单和二级菜单的权限关联起来 Ecshop:后台添加新栏目打开数据库,看到{pre}_admin_action表,新增两行数据。如下图 截图中第1列数据是action_id,是该表的自增主键。第2列数据是parent_id,来自上级的action_id。第3列数据就是step3中定义的权限名(键)。这样的话,两种权限就联系起来了。到这里,打开后台“管理员列表”,点击“分派权限”的图标,便可以看到step3示图所示权限了。用某后台用户勾选提交,该用户登陆后就能看到新增的菜单项了。
2015年6月11日
20929 阅读
0 评论
Ecshop教程
2015-6-11
Ecshop一些比较常用的标签函数分享
限制某个参数调用的数量: <!-- {if $smarty.foreach.参数.index lt 数量}-->代码<!-- {/if} --> 控制当某个参数少于多少时的显示方式: <!-- {if $smarty.foreach.参数.iteration<数量}-->代码<!-- {/if} --> 以上的参数函数如下(提供部分): 排行榜:top_goods 热门商品:hot_goods 精品推荐:best_goods 新品上市:new_goods 分类商品:cat_goods 最新文章:new_articles 举例: <!-- {foreach name=top_goods from=$top_goods item=goods}--> <!-- {if $smarty.foreach.top_goods.iteration<3}--><ul class="topcp_tp"><li><a href="{$goods.url}"><img src="{$goods.thumb}" alt="{$goods.name|escape:html}" class="samllimg" /></a></li></ul><!-- {/if} --> <!-- {if $smarty.foreach.top_goods.iteration>3}--><ul class="topcp_wz"><li><a href="{$goods.url}" title="{$goods.name|escape:html}">{$goods.short_name}</a></li></ul><!-- {/if} --> <!-- {/foreach} -->
2015年6月11日
20383 阅读
0 评论
Ecshop教程
2015-6-4
Emlog模板设置插件使用教程及开发规范
一直以来,emlog走的轻量级路线,没有集成模板后台设置,于是很多功能强大的模板不得不在需要的时候,修改文件以改变设置。那么,有了这个插件以后,就可以不用如此纠结了,只要模板按照开发规范来开发,就可以使用本插件在后台进行设置了。重点强调,本插件是辅助插件,所有设置依赖于模板的功能,而不是插件本身,因此不要问我为什么没有blabla功能,请去寻求模板作者。 插件名称:模板设置 插件作者:奇遇 下载地址:http://www.emlog.net/plugin/144 哪些模板支持? 多模板,尤其是CMS模板,会有很多设置项,大多会有一个options.php文件,当你需要修改配置时,就得去修改文件,那么哪些模板才能用上插件的后台设置功能呢? 答案是:按照规范来开发的模板。模板开发者请看下面! 如何让模板能被插件识别? 在模板目录里放入options.php,内容格式如下即可,可以任意增加设置项,注意$options变量和注释: <?php /*@support tpl_options*/ !defined('EMLOG_ROOT') && exit('access deined!'); $options = array( 'sidebar' => array( 'type' => 'radio', 'name' => '侧边栏位置', 'values' => array( 'left' => '左边', 'right' => '右边' ), 'default' => 'right', ), 'sortIcon' => array( 'type' => 'image', 'name' => '分类图标设置', 'values' => array( TEMPLATE_URL . 'images/star.png', ), 'depend' => 'sort', 'unsorted' => true, 'description' => '给不同的分类设置不一样的小icon,以20×20为宜', ), ); options.php里,每个元素都该写什么? 如上所示,$options数组里,key为设置项的id,而value是一个数组,数组里包含若干个元素。其中type属性和name属性必选,name是设置项名字,而type用来指定设置项的类型,支持的类型如下: radio: 单选按钮 checkbox: 复选按钮 text: 文本 image: 图片 page: 页面 sort: 分类 tag: 标签 对于所有类型,default属性用于指定默认值,当没有指定default时,使用values里第一个值,若都没有指定,则会使用奇怪的默认值。 对于radio和chexkbox,values属性用来设置各个按钮的值和显示名称。 除sort外,均可以指定depend为sort,表示该选项可以根据不同的分类设置不同的值,当指定depend为sort时,可选unsorted属性,为true时,表示包括未分类,为false不包括,默认为true。 sort和page可设置multi属性为true,表示多选。 description属性可选,用以描述该选项。 若type为text,可设置multi属性为true,表示多行文本,即input和textarea的区别,可选属性rich用以支持富文本,若设置该值,将加载编辑器。 若type为sort、page或者tag,且设置了多选,默认值将为空,否则将为第一个该类型的值。 模板里如何调用设置项 插件提供简单方法_g($key),如上示例,可以使用_g('sidebar')来获取侧边栏的设置,取到的值将为0或者1,使用_g('sortIcon')来获取分类icon的全部设置,以分类id为key的数组,使用_g('sortIcon.1')来获取分类id为1(如果存在)的sortIcon。需要注意的是,对于类型为page的,将取到页面id,类型为sort的,将取到分类id,类型为tag的,将取到标签名。 若不传递参数,即使用_g()方法将获取到所有设置项,对于老的模板迁移来的,可以用extract(_g());来代替原来的加载option文件。
2015年6月4日
15345 阅读
1 评论
Emlog教程
2015-6-4
Emlog博客程序像置顶文章一样显示热门和最新文章图标
Emlog是一款基于PHP和MySQL的功能强大的博客及CMS建站系统。致力于为您提供快速、稳定,且在使用上又极其简单、舒适的内容创作及站点搭建服务。 如何像置顶文章一样显示热门和最新文章图标,如下图所示 代码直接放入标题后面即可 <?php if(((date('Ymd',time())-date('Ymd',$value))<=2)&&($value=='n')){?> 说明:当发布日期小于2天则显示 <?php }elseif($value>=300){?> 说明:当访问量大于300则显示 <?php }?>
2015年6月4日
8459 阅读
2 评论
Emlog教程
14
15
16
17
18