phpcms中文标签
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中文标签
PHPCMS2007改变了3.0不易理解的长标签调用方式,采用中文方式封装长标签,降低了模板的制作门槛。
现在只需要在后台进行简单的设置就可以生成一个中文标签。
在模板制作过程中,甚至不需要先设置中文标签,只需要在模板中按现有规则插入中文标签,例如{tag_最新文章},
等模板全部制作完毕后,再根据已有的命名在后台设置中文标签,更新网站即可。
在模板目录中,以tag_开头的即为标签模板,同一类别的不同模板用中划线-表示,例如tag_article_list.html和
tag_article_list-1.html均为文章列表的标签模板。
在后台添加中文标签时可以选择不同的模板来个性化你的网站。
备注:如果您习惯3.0式的长标签调用,可以参考模板目录tags_config.php文件里和函数及其参数,一个标签实际上就是一个函数调用,phpcms模板里是可以直接插入函数的。
新建标签
新增一个类型的调用,我们需要新增加一个标签列表,我们不能修改以前的标签,如果修改以前的标签,那么使用这个标签的页面也会随之改变。
文章列表标签
幻灯片文章标签
我们通过上面的导航可以选择要添加的标签的类型
栏目标签
我们可以通过预览来查看我们设置的效果
通过这里可以修改选中的模版
最好我们通过会产生一个只有的标签
我们将{tag_文章1}复制到我们的模版中,更新相关页面生成静态--即可显示结果。
修改标签
我们进入标签管理--找到需要修改的标签,如果是栏目标签,或者其他标签,我们通过导航来进入相应的标签管理列表
修改标签会直接影响到已经应用于此标签的模版页面。
所以通过修改标签可以轻松的完成页面的显示效果,比如标题长度,是否显示点击次数等等标签应用
网页美工设计者往往要在前台模板中输出变量或一段程序,但是他们对这些程序是不懂的,所
以要将这些程序简化成像写HTML标记一样,这样他们就容易写了。
而这些简化的标记被成为标签。
这些标签在执行是时候还会被提取出来重新还原成程序被执行。
下面举几个例子说明:
现在看这段代码在前台被编译后的样子:
这写标签不是随便乱写的,只有后台提供是那写才可以插到前台里面。
提供这些标签的地方在每个频道里面。
就以文章频道为例,打还网站后台,在后台首页的导航栏中选择“网站频道”,如图:
加载完成后,在页面的左框架中选择“文章”点击。
在加载后的页面的左框架中选择“高级管理”中的“标签调用管理”点击。
如图:
在新加载的页面截图如下:
在这个页面定义的标签都可以使用。
在举些在前台模板中插标签的例子,如图:
此段代码经过编译之后在前台显示的内容为:
像这些里面有中文的标签叫作中文标签,一般的中文标签都是用{tag_中文名}的形式。
还有一些标签里面只有英文,比如“{$cat[catname]}”这个标签的作用就是输出数组cat里catname的值。
这是前台模版里典型输出变量的标签,格式是{变量}。
下面的截图中大量的使用了标签:
这个页面里使用了像{if $subheading}
--{$subheading}<h2>{/if}这是一个判断标签,当{if $subheading}里的变量$subheading被赋值且值不为0、空时就回显示{if}与{/if}之间的值,即
<h2>--{$subheading}<h2>在浏览器上被显示出来。
这个是条件判断标签。
还有一种是循环标签,见图:</p>
style="BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999
1px solid; WIDTH: 928px; BACKGROUND: white; BORDER-TOP:
#999 1px solid; BORDER-RIGHT: #999 1px solid"{loop $a $b} * {/loop} 或者{loop $a $b $c} * {/loop} ,{loop $a $b} * {/loop}
被解析成<? if(is_array($a)) foreach($a AS
$b) { ?> * <? } ?> ,而{loop $a $b $c} *
{/loop}则被解析成<? if(is_array($a)) foreach($a AS $b=>$c) {> * <}>
注意if和loop语法应该写在html注释符之间,这样可以避免在编辑工具中难看,例如:
这样写if
<!--{if $a>$b}--><!--{else}--><!--{/if}-->
这样写loop
<!--{loop $arr $key $val}--><!--{/loop}-->
判断标签和循环标签都是前台模版中最常用的标签。
跨站JS调用
我们要跨站调用列表的话,我们新增加的标签就不能带有任何的变量,如果带有变量,将会产出下面的结果
没有任何变量访客通过调用下面的代码进行调用
取自
"/wiki/Phpcms:%E6%A0%87%E7%AD%BE%E8 %AF%B4%E6%98%8E"
2个分类: CMS使用| PHPCMS内容管理系统
================================================
问题1:怎么让文章按电极率排序
问题2 SELECT a.contentid,a.catid 这样的代码跟`contentid`,`hits_month`这样的代码有什么区别
本帖最后由misssky 于2009-10-28 18:53 编辑
用GET语句
语句如下{get sql="SELECT * FROM `phpcms_content` a, `phpcms_content_count` b WHERE
a.contentid=
b.contentid AND status=99 ORDER BY b.hits DESC" rows="调用个数"}
复制代码
这个是总排行
你也可以把红色部分换成b.hits_day这个是当天换成b.hits_week是周,hits_month是月PHPCMS中GET标签调用文章列表隔行背景换色效果实现方法
CMS通提示:
本文CMS通站长站介绍了如何在PHPCMS中实现GET标签调用的文章列表隔行背景换色或偶数行不同CSS样式
对于文章列表,如果需要实现隔行背景换色,除了可以通过JS来给偶数行添加不行CSS属性来实现为,也可以通过在循环输出内容时直接给偶数行加上不同CSS。
PHPCMS中GET标签调用文章时,如果需要实现隔行换色,则只需要在<li>标签中添加{if $n%2==0} style=" background-color: #FFFFCC"{/if}即可,整体代码如下:
XML/HTML代码
{get sql="SELECT `title`,`url`,`updatetime` FROM `phpcms_content` WHERE `status` =99 ORDER BY `contentid` DESC" rows="10" }
<li{if $n%2==0} style=" background-color: #FFFFCC"{/if}><span class="date">{date('Y-m-d',$r[updatetime])}</span><a href="{$r[url]}">{$r[title]}</a></li> {/get}
演示:/list.php?catid=185#get
TAG标签调用文章列表中实现隔行换色实现方法和GET标签上代码类似。
--------------------------------------------------------------------------------- PHPCMS文章列表以标题和摘要形式显示的修改
PHPCMS文章列表页(对应list.html模板)默认是只显示20条最新文章的标题的及链接的,这样稍显单调,默迹通常的做法是将最终文章列表页修改成标题+摘要的形式显示,这样从SEO和用户体验角度考虑可能好些,同时也使这个页面右侧边栏长些,可多放一些调用或AD啥的。
效果预览:
修改方法:
1.下载tag_content_list.html,将内容用如下代码替换:
XML/HTML代码
<div id="zy_list">
<DL>
{loop $data $n $r}
<DT><span class="date" {if date("Y-m-d",$r['updatetime'])==date("Y-m-d",TIME)}
style="color:#FF0000;"{/if}>{date('Y-m-d', $r[updatetime])}</span>
{if $showcatname}<a href="{$CATEGORY[$r[catid]][url]}"
class="catname">[{$CATEGORY[$r[catid]][catname]}]</a>{/if} <a href="{$r[url]}"
target="{$target}" class="{$class}"><strong>{str_cut($r[title], $titlelen)}</strong></a></DT> <DD>{$r[description]}
<div align="right">[<a href="{$r[url]}" target="_blank">阅读全文</a>]</div>
</DD>
{/loop}
</DL>
</div>
{if $pages}<p id="pages">{$pages}</p>{/if}
(当然,重新建一个模板,如tag_content_list_zy.html,粘贴上代码后上传,再修改列表页标签对应的模板为该模板也行,注意更新模板缓存)
2.查看{tag_二级栏目标题列表}标签(标签管理处点击编辑)确保该标签有勾选读取摘要字段,如
下图:
3.在phcms.css样式文件最后添加如下CSS代码,以调整标题+摘要列表布局:
CSS代码
#zy_list dl {
line-height:150%;
margin:10px;
}
#zy_list dl dt a {
font-family:Verdana,Arial,Helvetica,sans-serif;
font-size:14px;
}
#zy_list dl dd {
border-bottom:1px dashed #E1E1E1;
margin-bottom:5px;
padding:5px;
text-indent:2em;
}
当然,如果觉得CMS通站长站的布局CSS不太适合里时,可自行调整。
补充:
当然站长朋友们也可以新建一个tag_content_list_zy.html标签模板,放上面的代码,然后复制{tag_二级栏目标题列表}这个标签另建标签如{tag_二级栏目标题列表含文章摘要},选择刚建立的tag_content_list_zy.html,然后复制list.html新建一个列表页如list_zy.html,然后把其中的{tag_二级栏目标题列表}标签换成新建的{tag_二级栏目标题列表含文章摘要},几个模板都上传到templates/default/phpcms模板目录下后,更新缓存,然后再给需要实现标题摘要列表的栏目设置列表页模板为list_zy.html,这样做的好处时可以尽量少影响其它不需要这样做的部分。
phpcms 标签缓存的作用和常见标签的报错处理方法
标签缓存
在以phpcms 内容模型标签为例:存在于模板目录
templates/default/phpcms/tag_config.inc.php 。
手动修改的话,需要在后台更新缓存。
其中phpcms 为内容模型的目录,假如你要修改问吧模块,那么则是
templates/default/ask/tag_config.inc.php
下面是一个中文标签的例子
<?php
return array (
'标签内容列表' =>
array (
'introduce' => '',
'mode' => '1',
'sql' => 'select * from `phpcms_content` a,`phpcms_content_tag` k where a.contentid=k.contentid and a.status=99 and k.tag=\'$tag\' order by a.contentid desc', 'selectfields' =>
array (
0 => 'contentid',
1 => 'catid',
2 => 'typeid',
3 => 'areaid',
4 => 'title',
5 => 'style',
6 => 'thumb',
7 => 'keywords',
8 => 'description',
9 => 'userid',
10 => 'updatetime',
11 => 'islink',
12 => 'inputtime',
13 => 'url',
),
'orderby' => 'contentid DESC',
'page' => '$page',
'number' => '20',
'template' => 'tag_content',
'var_description' =>
array (
1 => '链接样式',
2 => '打开窗口',
3 => '标题长度',
),
'var_name' =>
array (
1 => 'class',
2 => 'target',
3 => 'titlelen',
),
'var_value' =>
array (
1 => 'url',
2 => '_blank',
3 => '80',
),
'type' => 'content',
'modelid' => '1',
'tagcode' => 'tag(\'phpcms\', \'tag_content\', "select * from `phpcms_content` a,`phpcms_content_tag` k where a.contentid=k.contentid and a.status=99 and k.tag=\'$tag\' order by a.contentid desc", $page, 20, array ( \'class\' => \'url\', \'target\' => \'_blank\', \'titlelen\' => \'80\',))',
),
当在模板中出现SQL 语句报错,那么就是这里的SQL 出现的问题。
常见的是Table does not exists
那么就需要替换当前文件的标签文件了。
我们只要将表前缀phpcms_ 替换为自己的前缀即
可。
而前缀可以在include/config.inc.php 中找到
====================================================================== phpcms标签模板及专题模板的制作
1.标签模板的制作
前面我们已经讲到了每个频道模板的制作,但是我们只是插入对应的标签代码,如何做到显示的效果能个性化,满足自己的要求呢?,那么我们就要对自己的标签模板做个性化的设计
所有以tag_开头的模板
都是标签模板
以文章频道的模板为例
我们会看到
tag_articlelist.html 文章列表标签模板
tag_picarticle.html 图片文章标签模板
剩下的两个我们一般做模板的时候,如果自己对于js代码不是很理解的话,我们一般不会去动它,
打开文章列表标签模板
CODE: [Copy to clipboard] <table width="100%" border="0" align="center" cellpadding="1" cellspacing="1">
{loop $articles $i $article}
{if $i%$cols==0} <tr> {/if}
<td height="20" width="{$width}">
{$article[img]} {if $showcatname}{$article[catname]}{/if} <a href="{$article[url]}" title="{$article[alt]}" target="{$target}" class="tag_title_link">{$article[title]}</a>
{if $showhits}({$article[hits]}){/if}
{if $showauthor}[作者:{$article[author]}]{/if}
{if $article[showcommentlink]} <a href="{PHPCMS_PATH}comment/?item=articleid&itemid={$article[articleid]}"
target="_blank"><span class="color_red">评</span></a>{/if}
{if $datetype}[<span class="tag_date">{$article[adddate]}</span>]{/if}
{if $descriptionlen}<br/><span class="tag_description"> {$article[description]}</span>{/if}
</td>
{if $i%$cols==($cols-1)}</tr>{/if}
{/loop}
</table>
{if $pages}
<div class="pages">{$pages}</div>
{/if} 这个里面
{loop $articles $i $article}是一个循环,我们要关注的就是这个循环里面的内容
{if $i%$cols==0} <tr> {/if} 我们在标签里面设定的参数,显示几列,根据这个来控制标签的显示
{$article[img]} 文章的图片,显示精华,置顶,还是普通文章
{if $showcatname}{$article[catname]}{/if} 所属栏目
{$article[url]} 文章路径
{$article[title]} 文章标题
{if $showhits}({$article[hits]}){/if} 点击数
{if $showauthor}[作者:{$article[author]}]{/if} 作者
{if $article[showcommentlink]} <a href="{PHPCMS_PATH}comment/?item=articleid&itemid={$article[articleid]}"
target="_blank"><span class="color_red">评</span></a>{/if} 评论连接
{if $datetype}[<span class="tag_date">{$article[adddate]}</span>]{/if} 添加时间
{if $descriptionlen}<br/><span class="tag_description"> {$article[description]}</span>{/if} 描述说明
如果我们要实现时间的靠右对齐,那么我们可以把这个模板改成
CODE: [Copy to clipboard] <table width="100%" border="0" align="center" cellpadding="1" cellspacing="1">
{loop $articles $i $article}
{if $i%$cols==0} <tr> {/if}
<td height="20" width="{$width}">
{$article[img]} {if $showcatname}{$article[catname]}{/if} <a href="{$article[url]}" title="{$article[alt]}" target="{$target}" class="tag_title_link">{$article[title]}</a>
{if $showhits}({$article[hits]}){/if}
{if $showauthor}[作者:{$article[author]}]{/if}
{if $article[showcommentlink]} <a href="{PHPCMS_PATH}comment/?item=articleid&itemid={$article[articleid]}"
target="_blank"><span class="color_red">评</span></a>{/if}
{if $descriptionlen}<br/><span class="tag_description"> {$article[description]}</span>{/if}
</td>
<td>{if $datetype}[<span class="tag_date">{$article[adddate]}</span>]{/if}</td>
{if $i%$cols==($cols-1)}</tr>{/if}
{/loop}
</table>
{if $pages}
<div class="pages">{$pages}</div>
{/if} 或者设置css里面tag_date的属性为float:right
图片文章页面的标签模板也是如此,我们需要做的,基本上就是css的变化来控制效果,这就需要大家对于css有一个比较浅显的掌握,具体可以参考css手册,网上到处都是,指的说明的一点,css的简写仅仅支持IE,FF和opera尚不能全部支持!
2.专题模板的制作
专题页面的制作主要设计的页面有
special.html 专题首页
special_list.html 专题列表页
special_show.html专题内容页
tag_speciallist.html专题标签页
专题是相同类型的文章组成的一个合集,大家可以把他看做一个栏目,只不过这个栏目比较特
殊,它属于一个频道多个栏目下相同主题的文章合集,他的模板制作和文章栏目页面的制作是一模一样的,只不过是概念你的不同罢了,大家不要被这个概念吓到了!
写到这里,菠萝教你做模板系列基本要完工了,剩下的模板中,官方在默认模板中都有了相应的提示文件,相信不是很难看懂
这个教程希望对大家做模板有一个启发,请大家牢牢记住这一点
phpcms的模板就是html代码+js+标签
只要大家灵活掌握标签的调用,那么一定会做出很多个性化的pp模板的!
===================================================================。