wordpress评论区域下方添加表情图标方法

最近研究淘宝网店,顺便自己开了个做测试,没想到拉了个小客户,虽然交易价很便宜只有一元钱,并且花了一会就解决了他的问题.

随后他又遇到了一些问题想我询问,不过我以学习研究的态度帮助了他,这也就是今天要说的内容,何如给wordpress模板的评论区域快添加一排表情.先来看看效果图…

表情图片位于评论区内的效果
表情图片位于评论区内的效果

看后大家觉得这个很简单的,其实说简单也简单说有点麻烦也的确有点麻烦.首先我要说的是,调用系统默认的表情是需要在适当的位置添加下面一行代码:

<?php if ( function_exists(cs_print_smilies) ) {cs_print_smilies();} ?>

然而究竟是在哪里添加这段代码呢,我们继续分析研究…

可能回事修改主题的comments.php模板文件,但是当你找到评论区表单部分的时候,你发现居然只有短短的一句话:

<?php comment_form(); ?>

于是这个要么就出现在了整个评论表单区域的前面要么出现在了最底部,这并不美观,更不是我们想要的.所以修改comments.php是做不到的…那么就需要研究一下comment_form();这个函数了,可能是我比较笨,我首先想到的依然是主题目录下的functions.php文件里面修改,恰巧我也找到了,不过略不相同,抱着试试的态度,搜索到了comment_form_default_fields,具体完整代码如下:

add_filter('comment_form_default_fields','MxS_fields');
/** -----------------------------------------------
	 * custom comments
*/ 
if ( ! function_exists('MxS_custom_comments')) {
function MxS_custom_comments($comment, $args, $depth) {
$GLOBALS['comment'] = $comment;
?>
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
<div id="comment-<?php comment_ID(); ?>">
<div class="message_head">
<span class="avatarx"><?php echo get_avatar($comment,$size='40',$default='' ); ?></span>
<span class="name"><?php comment_author_link() ?></span> <?php edit_comment_link( __( '(Edit)', 'mxs_theme' ), ' ' ); ?>
<span class="reply"><?php comment_reply_link( array_merge( $args, array( 'depth' => $depth, 'max_depth' => get_option('thread_comments_depth') ) ) ); ?></span>
</div>
<span class="date"><?php comment_date('y/m/d') ?></span>
<div class="clear"></div>
<div class="cmt_text"><?php comment_text(); ?></div>
</div><!-- #comment-##  -->	
<?php }}

当然这个函数之前的语句是与这个函数没有什么关系的.看这个函数,写的是已评论的表单结构.貌似也不对,其中有一句$GLOBALS[‘comment’] = $comment;目测好像是调用系统全局评论变量,具体是啥意思,我这PHP外行也不大明白…改来改去还是没该成功,于是想到会不会是跟系统函数模块有关.于是继续查找…找到了wp-includes/comment_template.php打开一看,仍然搜索comment_form,在1510行,找到了好长一段…耐心读下去..一直看到<?php if ( comments_open() ) : ?>字面上意思是,如果评论功能开启,则执行以下语句,接着看,就发现跟表单相关了.找到

<?php echo $args['comment_notes_after']; ?>
<p class="form-submit">
  <input name="submit" type="submit" id="<?php echo esc_attr( $args['id_submit'] ); ?>" value="<?php echo esc_attr( $args['label_submit'] ); ?>" />
  <?php comment_id_fields( $post_id ); ?>
</p>

其实也就看出来了,我不正是要在submit之前添加表情么?果断在form-submit前面加一行之前提到的表情调用代码,修改如下:

<?php echo $args['comment_notes_after']; ?>
<?php if ( function_exists(cs_print_smilies) ) {cs_print_smilies();} ?>
<p class="form-submit">
  <input name="submit" type="submit" id="<?php echo esc_attr( $args['id_submit'] ); ?>" value="<?php echo esc_attr( $args['label_submit'] ); ?>" />
  <?php comment_id_fields( $post_id ); ?>
</p>

保存,接着刷新一下文章内容页看到评论区域就有了表情了.至此关于wp评论区域调用系统自带的表情图标功能就实现了.是不是很简单啊 😀

PS: 似乎这个方法在现在的3.8.2修改无效了.如果不行就直接装个Custom Smilies插件吧~(2014年4月9日)

PHPCMS利用数据源对网站数据调用至其他网站方法

话说,我工作上有个需要,公司论坛上想加个小区域,放一些公司的门户站的最新的新闻等等内容,问怎么解决?

情况: 两个站h.net(PHPCMS V9)是门户站b.net(DISCUZ 7.2)是论坛,当然这两个站都是拥有后台管理权限的!那么b.net有一个区域要放h.net的文章列表,OK,最初我以为是整合两个站,让其关联数据库.其实这个办法是错误的,对于PHPCMS V9这个系统来说,其实有个更好的解决办法,适合初级菜鸟使用,详细操作办法如下:

进入h.net后台,找到 模块 > 模块管理 > 数据源 > 添加数据源调用 弹出一个窗口

数据源未填写
数据源未填写

这些选项大家应该看得懂吧,我简单说明一下,

1.先看数据源调用配置区,调用方式中模型配置其实就是大家常用的PC标签调用方式,而自定义SQL也就是get sql方式调用的,这里建议新手选择模型配置.选择模型下拉菜单,这个就更不用说了,一般我们如果调用栏目内文章列表,则选择内容模块,接下来选择列表,则出现一些关于调用范围的选项和条件,大家根据自己需要添加,其中值得说明的是,调用附表建议勾上.这个跟字段的是否为主键有关,此处不进行详细说明.

2.公共配置区域,名称可以随便写了,只要你自己看得懂,输出方式,这个比较复杂,如果对动态脚本不熟悉的同学,我建议使用js,我今天也已js为例给大家说一下,选中js后,弹出选择模板,这里我分享一下我得模板,

<h3>最新行业动态</h3>
{loop $data $k $v}
    <li>· <a href="{$v[url]}">{$v[title]}</a></li>
{/loop}
数据源填好后
数据源填好后

其实跟普通的文章调用方式写的模板相同,缓存时间一般为0,数量自己决定,最后确定,于是就生成了一段代码.接下来我们将在论坛上放置此js代码.

打开论坛系统安装目录的模板目录,一般在安装根目录下的templates文件夹内的某个模板文件夹,我这里修改的是discuz.htm文件,此段代码我插入到

<!--{else}-->
<div id="ad_text"></div>
<!--{/if}-->

我进行简单修改如下:

<div id="ad_text"></div>
<!--{/if}-->
<style>
.linkBox {
  padding-bottom: 10px;
  height:100px;
  width:98%;
  border: 0px solid #6595D6;
  background-color: #E6F6E6;
  clear: both;
  margin:10px auto;
}
.linkBox ul {
  float:left;
  text-align:left;
  width:32%;
}
.linkBox ul h3 {
  margin-left:10px;
}
</style>
<div class="linkBox">
  <ul>
    <script type="text/javascript" src="http://h.net/index.php?m=dbsource&c=call&a=get&id=1"></script>
  </ul>
  <ul>
    <script type="text/javascript" src="http://h.net/index.php?m=dbsource&c=call&a=get&id=1"></script>
  </ul>
  <ul>
    <script type="text/javascript" src="http://h.net/index.php?m=dbsource&c=call&a=get&id=1"></script>
  </ul>
</div>

我这是样本,所以重复三块.仅供大家参考用.最终效果图

最终效果图
最终效果图

对了忘记说了,我这个调用的代码其实调用了两个地方的- -!所以略有不同..z请谅解

PS:其实这个链接效果上虽然成功了,其实还有个小问题…就是链接地址不正确,我后来才发现,又经过半天时间研究,原来是这么个小问题,详情请见<<PHPCMS数据源功能使用注意事项>>

PHPCMS V9 栏目模版空白无显示解决方案

先看看问题截图:

PHPCMS V9 栏目模版空白无显示解决方案
请选择什么模板?

很明显栏目首页模板:选择处什么都没有,该死的PHPCMS这次坑了我一大把啊.怎么会突然没有了?我还搜遍了全世界,跑论坛上找答案,结果论坛上的没有一个人回答是什么原因.当然提问贴不多,只有三个跟我的情况类似.于是推出结论,这个问题发生概率较小并且要么是奇迹诡异并且复杂的问题,要么是过于简单一般人能够处理的问题,而我最近脑袋卡壳,想不出来……

过了若干小时,突然想到做个测试,我把list_xxx全部移到别的地方,再来看栏目列表页模板,也没有了,说明读取模板正常,而category的模板里,有个是我用系统默认备份功能备份了一遍的,就是所谓的,选中某个文件按住ALT拖放,对的罪魁祸首就是这步操作.本来是想做个备份文件,而这个文件包含了中文字,那么就导致PHPCMS系统无法读出所有的模板,这也太2了啊!!!解决方案很简单,把文件名改成全英文字符的就可以了.

phpcms文章列表循环不同样式制作方法

大家在用PHPCMS系统做网站的时候,有时候在列表循环可能希望用到不同的布局格式,而并不希望在整个列表中做好几个pc标签配合不同的start参数的时候,你可以试试我这个方法.

先来看看效果图:

phpcms文章列表循环不同样式制作方法
phpcms文章列表循环不同样式制作方法

那么我这张图清晰的告诉大家,这个列表分为三个部分,而我将采用两个PC标签完成它(之所以用两个PC标签输出,目的在于温习phpcms嵌套循环内容输出,当然你完全可以通过我的方法用一个PC标签搞定),因为CSS样式已经做好,这里大家只用看程序部分即可,先上代码部分:

<div class="hifi_PubArea">
  <div class="MainTitle">
    <div class="classTitle">
      <div><a href="{APP_PATH}cydiy/">创意DIY&nbsp;</a></div>
    </div>
    <div class="fr Blue_List_A"><a href="{APP_PATH}cydiy/" class="block_more"></a></div>
  </div>
  {pc:content action="lists" catid="40" order="id DESC" num="5" return="data"}
  <ul class="video_MainList">
    {php $num=0}
    {loop $data $r}
    {php $num++}
    {if $num==1}
    <li class="classMain">
    <a href="{$r[url]}"><img src="{$r[thumb]}" /></a>
    <h3><a href="{$r[url]}">{$r[title]}</a></h3>
    <p class="videoDpt">{$r[description]}</p>
    <p>栏目:<span>{$CATEGORYS[$r[catid]][catname]}</span></p>
    {php $keywords = explode(' ',$r['keywords']);}
    <p>书签:<span>{loop $keywords $keyword}<a href="{APP_PATH}{$r['catid']}-{urlencode($keyword)}.html" class="keywords">{$keyword}</a>{/loop}</span></p>
    <p>发布时间:<span>({date('Y-m-d',$r[inputtime])})</span></p>
    <div class="videoPart3">
      {pc:content action="lists" catid="40" order="id DESC" num="4" start="5" return="data"}
      <ul>
        {loop $data $v}
        <li><h4><a href="{$v[url]}">{str_cut($v[title],54,'...')}</a></h4></li>
        {/loop}
      </ul>
      {/pc}
    </div>
    <div class="clear"></div>
    </li>
    {/if}
    {if $num>=2}
    {php $num++}
    <li class="videoPart2">
    <a href="{$r[url]}"><img src="{$r[thumb]}" /></a>
    <h4><a href="{$r[url]}">{$r[title]}</a></h4>
    <p>栏目:<span>{$CATEGORYS[$r[catid]][catname]}</span></p>
    {php $keywords = explode(' ',$r['keywords']);}
    <p>书签:<span>{loop $keywords $keyword}<a href="{APP_PATH}{$r['catid']}-{urlencode($keyword)}.html" class="keywords">{$keyword}</a>{/loop}</span></p>
    </li>
    {/loop}
    {/if}
  </ul>
  {/pc}
</div>

看不懂?好吧,我简单说明一下,其中图片中的Part1Part2其实就是第一个PC标签所循环的内容,而循环出来的5篇文章,其中第一篇和后面四篇是不同的,那么,这里有个判断语句,给$num初始值定义为0,随着循环自增,当$num==1是输出第一个很特殊的结构样式,然后当$num>=2时,则开始输出剩余的4篇文章,Part3则穿插在Part1内,当然我有用了一个PC标签调用文章,这里就要增加一句start=”5″了,当然如果你不想用PC标签,其实可以用Part2同样的方法来做,当然不要忘记在第8行内的num改成9,因为此栏目一共有9篇文章,那么就呈现了一个PC标签循环列表中可以采用三种不同的样式结构了.

其实这段代码理解起来也没有什么难度,基本上是基本语法,希望大家看了之后有所收获能够在其他所需要的地方活学活用.