查看 XOOPS 栏目文章
七月
26

[Fixed]Article模组取某个分类的子分类时出错的Bug

Author Dominic    Category XOOPS     Tags , ,

当我们使用XOOPS的article模组时,如果我们想获取某个分类的所有子分类时,会发现取到的数据有可能不是我们所需要的,返回的却是所有分类,当然这个Bug只存在于article1.0版本中,下个版本中可能会被修正。(不知道D.J.什么时候出下个版本呢)

修改htdocs\modules\article\class\category.php文件中378行附近,

原来为:

$category_array = $tree->getAllChild(0);

修改之后:

$category_array = $tree->getAllChild($pid);//Modifyed By XuYong 没有使用$pid,导致没有起到任何作用

即可。

七月
26

XOOPS中修正获取真实用户名的Bug (Fixed)

Author Dominic    Category XOOPS     Tags ,

调用XOOPS中返回用户姓名时,通过getUnameFromId返回用户姓名时,如果希望返回用户真实姓名时,但是当用户没有填写真实姓名的时候返回的将会是空串,下面这个就用于解决这个问题,当用户没有填写真实姓名时返回用户登录名。

htdocs\kernel\user.php文件,139行附近将getUnameFromId函数做如下修改即可:

原函数:

   1: function getUnameFromId( $userid, $usereal = 0 )
   2: {
   3:     $userid = intval($userid);
   4:     $usereal = intval($usereal);
   5:     if ($userid > 0) {
   6:         $member_handler =& xoops_gethandler('member');
   7:         $user =& $member_handler->getUser($userid);
   8:         if (is_object($user)) {
   9:             $ts =& MyTextSanitizer::getInstance();
  10:             if ( $usereal ) {
  11:                 return $ts->htmlSpecialChars($user->getVar('name'));
  12:             } else {
  13:                 return $ts->htmlSpecialChars($user->getVar('uname'));
  14:             }
  15:         }
  16:     }
  17:     return $GLOBALS['xoopsConfig']['anonymous'];
  18: }

修改之后函数为:

   1: function getUnameFromId( $userid, $usereal = 0 )
   2:     {
   3:         $userid = intval($userid);
   4:         $usereal = intval($usereal);
   5:         if ($userid > 0) {
   6:             $member_handler =& xoops_gethandler('member');
   7:             $user =& $member_handler->getUser($userid);
   8:             if (is_object($user)) {
   9:                 $ts =& MyTextSanitizer::getInstance();
  10:                 if ( $usereal ) {
  11:                     if(trim($user->getVar('name')) != '') {
  12:                         return $ts->htmlSpecialChars($user->getVar('name'));
  13:                     } else {
  14:                         return $ts->htmlSpecialChars($user->getVar('uname'));
  15:                     }
  16:                 } else {
  17:                     return $ts->htmlSpecialChars($user->getVar('uname'));
  18:                 }
  19:             }
  20:         }
  21:         return $GLOBALS['xoopsConfig']['anonymous'];
  22:     }
七月
26

[Hack]给XOOPS的Transfer服务书签应用增加几种在线书签

Author Dominic    Category XOOPS     Tags , , ,

xoops中的transfer API非常好,但是其书签功能中支持的在线书签服务实在太少,我添加了几种现在流行的在线书签服务,当然我们还可以添加更多。

修改htdocs\Frameworks\transfer\plugin\bookmark\language\schinese_utf8.php文件如下,支持google书签、美味书签、Sina Vivi、365Key、BlogChina、Poco、Sohu、天极、和讯、QQ、百度。如果采用gb2312编码或者gbk编码则编辑htdocs\Frameworks\transfer\plugin\bookmark\language\schinese.php这个文件。

<?php
/**
 * Transfer handler for XOOPS
 *
 * This is intended to handle content intercommunication between modules as well as components
 * There might need to be a more explicit name for the handle since it is always confusing
 *
 * @copyright    The XOOPS project http://www.xoops.org/
 * @license        http://www.fsf.org/copyleft/gpl.html GNU public license
 * @author        Taiwen Jiang (phppp or D.J.) <php_pp@hotmail.com>
 * @since        3.00
 * @version        $Id$
 * @package        Frameworks::transfer
 */ 

define("_MD_TRANSFER_BOOKMARK", "书签");
define("_MD_TRANSFER_BOOKMARK_DESC", "添加到书签"); 

/* Chinese */
define("_MD_TRANSFER_BOOKMARK_ITEMS",
    "<span id=\"article-bookmarkit\"><ul class=\"list-bookmark\" id=\"bookmarkit\">"
    . "<li><a href=\"javascript:void(google = window.open('http://www.google.com/bookmarks/mark?op=edit&output=popup&title=' + encodeURIComponent('%1\$s')+ '&bkmk=' + encodeURIComponent('%2\$s') , 'google')); google.focus();\">[<strong style='color:red'>Google</strong>]</a>  </li>"
. "<li><a title=\"Delicious\" href=\"javascript:void(delicious=window.open('http://del.icio.us/post?url='+encodeURIComponent('%2\$s')+'&title='+encodeURIComponent('%1\$s'), 'delicious'));delicious.focus();\">[<strong style='color:#0000FF'>del.icio.us</strong>]</a>  </li>"
. "<li><a href=\"javascript:void(vivi = window.open('http://vivi.sina.com.cn/collect/icollect.php?pid=28&title=' + encodeURIComponent('%1\$s') + '&url=' + encodeURIComponent('%2\$s') + '&desc=' + encodeURIComponent(t), 'vivi')); vivi.focus();\">[<strong style='color:red'>新浪 VIVI</strong>]</a>  </li>"
. "<li><a href=\"javascript:void(365key = window.open('http://www.365key.com/storeit.aspx?t=' + encodeURIComponent('%1\$s') +'&u=' + encodeURIComponent('%2\$s') + '&c=' + encodeURIComponent(t), 'keyit')); 365key.focus();\">[<strong style='color:#a287be'>365k</strong><strong style='color:#00CC00'>e</strong><strong style='color:#9575B6'>y</strong>]</a>  </li>"
. "<li><a href=\"javascript:void(blogchina = window.open('http://blogmark.blogchina.com/jsp/key/quickaddkey.jsp?k=' + encodeURI('%1\$s') + '&u='+encodeURI('%2\$s') + '&c='+encodeURI(t), 'blogchina')); keyit.focus();\">[<strong style='color:#74B779'>博采中心</strong>]</a>  </li>"
. "<li><a href=\"javascript:void(poco = window.open('http://my.poco.cn/fav/storeIt.php?t=' + encodeURIComponent('%1\$s') + '&u=' + encodeURIComponent('%2\$s') + '&c=' + encodeURIComponent(t), 'keyit')); poco.focus();\">[<strong style='color:#29B5DE'>Poco</strong>]</a>  </li>"
. "<li><a href=\"javascript:void(sohu = window.open('http://z.sohu.com/storeit.do?t=' + encodeURIComponent('%1\$s') + '&u=' + encodeURIComponent('%2\$s') +'&c=' + encodeURIComponent(t), 'sohu')); sohu.focus();\">[<strong style='color:#505050'>SOHU狐摘</strong>]</A>  </li>"
. "<li><a href=\"javascript:void(yesky = window.open('http://hot.yesky.com/dp.aspx?t=' + encodeURIComponent('%1\$s') + '&u=' + encodeURIComponent('%2\$s') + '&c=' + encodeURIComponent(t) + '&st=2', 'yesky')); yesky.focus();\">[<strong style='color:#99CF17'>天极</strong><strong style='color:#FF7F00'>网摘</strong>]</a>  </li>"
. "<li><a href=\"javascript:void(hexun = window.open('http://bookmark.hexun.com/post.aspx?title=' + encodeURIComponent(t) + '&url=' + encodeURIComponent(u) + '&excerpt=' + encodeURIComponent(e), 'HexunBookmark')); hexun.focus();\">[<strong style='color:#3366CC'>和讯网摘</strong>]</a>  </li>"
. "<li><a href=\"javascript:void(qq = window.open('http://shuqian.qq.com/post?title=' + encodeURIComponent('%1\$s')+ '&uri=' + encodeURIComponent('%2\$s') +'&jumpback=2&noui=1', 'qq')); qq.focus();\">[QQ<strong style='color:#74B779'>书签</strong>]</a>  </li>"
. "<li><a href=\"javascript:void(baidu = window.open('http://cang.baidu.com/do/add?it=' + encodeURIComponent('%1\$s')+ '&iu=' + encodeURIComponent('%2\$s') +'&dc=&fr=ien#nw=1'', 'baidu')); baidu.focus();\">[<strong style='color:red'>百度搜藏</strong>]</a>  </li>"
. "</ul></span>"
    );
?>
七月
26

[Hack]在XOOPS的article模组中显示完整文章标题

Author Dominic    Category XOOPS     Tags , , , ,

D.J.老大开发的article非常好用,其中有一个小缺陷:当我们获取文章列表时一般会对文章标题截取给定长度,但是当我们这样做之后,文章列表中文章标题是被截断了,但是对应A标签的title属性中也使用了截断之后的文字。这样导致的结果是当我们把鼠标移动到文章标题上面的时候,并不能看到完整的标题。

解决办法如下:

1、修改htdocs\modules\article\blocks\block.php和blocks.article.php文件,在162行附近加入如下行代码

     $_art["art_fulltitle"] = $_art["art_title"];//Modifyed By XuYong

修改之后完整代码为:

            $_art["art_fulltitle"] = $_art["art_title"];//Modifyed By XuYong
        if(!empty($options[3])){
            $_art["art_title"] = xoops_substr($_art["art_title"], 0, $options[3]);
        }

2、在对应的模板文件中使用art_fulltitle来显示超链接的title属性。可修改article_block_article.html文件如下:

<ul class="blkList">
  <{foreach item=article from=$block.articles name=art}>
  <li><span class="blkTime"><{$article.time}></span><a href="<{$xoops_url}>/modules/<{$block.dirname}>/view.article.php<{$.const.URL_DELIMITER}><{$article.art_id}>/c<{$article.cat_id}>" target="_blank" title="<{$article.art_fulltitle}>"><{$article.art_title|smartTruncate:19}></a></li>
  <{/foreach}>
</ul>
七月
26

[Hack]让article模组中显示用户真实姓名

Author Dominic    Category XOOPS     Tags , , ,

目前XOOPS中article模组显示的都是文章发布者的登录名,有些时候显示真实姓名可能更恰当,特别是当提交者是单位的时候,这里提一个临时解决方案,最佳方案是放到配置项中由管理员配置显示。

修改htdocs\modules\article\class\article.php文件中的getAuthor函数如下即可:

function &getAuthor($retrieveUname = false)
    {
        $author["uid"] = $this->getVar("uid");
        if($retrieveUname){
            $author["name"] = XoopsUser::getUnameFromId($author["uid"],1) ;
        }
        return $author;
    }

配合XOOPS中修正获取真实用户名的Bug (Fixed) 效果更好。

七月
25

XOOPS开发工作可以告一段落了

Author Dominic    Category XOOPS     Tags ,

前段时间在家的时候帮朋友改版了网站——安徽车市http://www.ahcarmarket.com),用的是XOOPS 2.0.16的UTF-8版。2003年的时候做安徽大中专毕业生就业信息网的时候用了XOOPS,后来在给一个朋友弄他们公司网站的时候也用了XOOPS,个人感觉XOOPS还是非常强大的一个Portal(个人觉得比CMS更贴切)。安徽车市的开发工作将移交给一个小伙来完成,今后很长一段时间内应该不会从事XOOPS的开发了,XOOPS这么好的东西也开始没落了,社区人员越来越少,新版本的发布也越来越少了。

这次开发安徽车市采用了一下模组:
article文章模组作为 资讯中心,修正了UTF-8下pdf输出乱码的问题
auto汽车信息及报价 未开发完成
googlemaps地图,更改为中文地图,准备用于企业标注和电子地图
mediawiki维基,作为汽车百科
newbb论坛
Openads广告管理,自己集成Openads(原PHPAdsNews)
page页面布局模组,自己更改了一些东西,适用于UTF8环境和防止用户误操作和页面静态化。
protector保护模组
securityimage图片验证码
sitemap站点地图,有修改,主动生成sitemap.xml文件,
smartobject
smartprofile
system系统管理
tag标签,
tinycontent用于站点介绍
xcgal相册模组,用于汽车图库
xmmemberstats会员管理
准备用上addresses,后台也做了一些美化。

和优化了相当多的内容,有时间整理一下再发布吧。里面最为满意的模组就是article和tag模组集合使用,加上URL重写,可以产生大量的链接,这个网站做到了2500篇左右的文章(还没有大量使用tag)加上5000左右的汽车信息连接页面(这个没有集成transfer和tag,对于链接数没有什么贡献),在baidu上面拥有13800个链接,在google上面拥有15000多个链接,在yahoo上面有8000多个连接。

Page模组也非常好,完全可以实现主题、布局、区块、皮肤的应用。

其实这个网站还有一些开发工作没有开发完成,这个月上班之后就没有投入精力了,转交给别人之后,应该不会再从事XOOPS的开发工作了

六月
25

XOOPS的Page模组UTF-8字符编码下的使用方法

Author Dominic    Category PHP, XOOPS     Tags , , , , ,

文明猪汉化了非常好用的Page模组,其功能强大得过了头,充分体现了数据展现分离思想,将Xoops中原本主题、布局、区块的概念扩充到主题、布局、区块、皮肤,将原来相对固定的布局方式更改为随意布局的形式(如果可以直接拖动就更完美了),将然来局限于系统提供的区块提升到可以随意创建区块和随意利用区块的高度,但是目前Page模组仅仅只能使用GB2312编码上,如果网站采用UTF-8编码这不能利用这个Page模组。之前就找到了解决的办法,这次乘解决xajax中文显示的问题一并写出来吧。

其实这个bug是由xajax库引起的(参见我另外一篇文章:PHP中xajax库中文问题及提示返回XML文件无效的解决办法 ),解决办法是:

将page目录下所有文件全部采用UTF-8无BOM格式保存(当然语言文件不必要),至少server/page.server.php这个文件需要采用UTF-8无BOM格式保存(UltraEdit 操作方法:F12或另存为界面中格式下拉框选择‘UTF-8-无 BOM’),index.php这个也需要UTF-8无BOM格式保存,另外建立对应的UTF-8编码的语言文件。再将Framework目录下xajax目录下所有的php文件全部使用UTF-8无BOM格式保存。一般即可。

之前的一个项目中使用了UTF-8格式的Page模组,这个模组的UTF-8格式支持包还是让文明猪来发布吧,不过有需要的也可以联系我。

 

四月
25

调整Smarty 模板引擎参数提高cache、templates_c目录读写性能

Author Dominic    Category Web应用, XOOPS     Tags , , ,

在用Xoops建立一个站点(只用引擎也一样)时,开启缓存之后cache和templates_c这两个目录用不了多长时间就充满了上千个文件乃至几十万个文件,操作一个包含数量巨大的文件的目录本来就很慢,这样会导致这两个目录的文件读取、删除、更新都很慢,本打算写一个cache handler来解决这个问题,在跟踪代码的时候发现已经解决了这个问题,那就是use_sub_dirs属性,将该属性设置为true即可。PHP示例代码

[coolcode lang="php"]<?php
 
require ‘../libs/.class.php’;
 
$ = new ;
 
$->use_sub_dirs = true;
 
$->compile_check = true;
$->debugging = true;
$->caching = true;
$->cache_lifetime = 60;
$->assign(“Name”,”Fred Irving Johnathan Bradley Peppergill”);
$->assign(“FirstName”,array(“John”,”Mary”,”James”,”Henry”));
$->assign(“LastName”,array(“Doe”,”Smith”,”Johnson”,”Case”));
$->assign(“Class”,array(array(“A”,”B”,”C”,”D”), array(“E”, “F”, “G”, “H”),
      array(“I”, “J”, “K”, “L”), array(“M”, “N”, “O”, “P”)));
 
$->assign(“contacts”, array(array(“phone” => “1″, “fax” => “2″, “cell” => “3″),
      array(“phone” => “555-4444″, “fax” => “555-3333″, “cell” => “760-1234″)));
 
$->assign(“option_values”, array(“NY”,”NE”,”KS”,”IA”,”OK”,”TX”));
$->assign(“option_output”, array(“New York”,”Nebraska”,”Kansas”,”Iowa”,”Oklahoma”,”Texas”));
$->assign(“option_selected”, “NE”);
 
$->display(‘index.tpl’);
 
?>
[/coolcode]

对应Xoops中编辑Class\template.php文件第58行附近更改var $use_sub_dirs = false;var $use_sub_dirs = true;即可。

四月
18

XOOPS中article模块 文章管理界面 的友好模板

D.J. 开发的article模块确实很好用,但是他的文章管理界面不太符合中国人使用习惯(被ASP CMS 惯坏了),充分发扬XOOPS的全部模板定制精神,做了一个针对文章管理的功能的友好模板。采用了表格显示文章列表的方式。如图:

 

下载附件解压到themes\你的主题名称\modules\article覆盖或者解压到modules\article\templates覆盖并在后台更新article模块.

 下载地址:article_cparticle.html 

四月
12

Xoops中FCKeditor的上传文件时中文文件名解决方案

Author Dominic    Category XOOPS     Tags , , , ,

使用上传图片、Flash等文件时,文件名中的中文会显示为乱码并在在服务器上面保存有些全部为乱码文件,不能正常显示,在网上搜了一下前辈们的解决方法,没找到很好的解决办法。看来还有N多的人和我一样的困惑,但解决办法又如此的简单:

将 editor\filemanager\browser\default\frmupload.html 文件的编码改为UTF-8即可。

如果不能解决则

编辑upload.php文件

// Compose the file path.

//Modifyed By XuYong 修正UTF-8的问题

$sFileName =iconv(“utf-8″,”gbk”,$sFileName);

//End Modifyed

环境XOOPS 2.0.16 UTF-8

专题推荐

标签

404错误 apache article CSS dotNet fckeditor Hack iOS iTouch javascript PayPal PHP rar ubuntu utf8 VMware VMware Tools weblinks Win2008 Windows Server 2008 Wordpress xajax XOOPS 上传 个人 中文 中文习惯 关键词 合肥 域名 安全 工作 文件类型 文章管理 时区 未分类 模块 模板 模组 电子地图 界面友好 禅意花园 网速 腾讯 配置管理

分类目录

新浪微博

存档

最近文章

近期评论

友情链接

分享按钮