轻量级论坛程序Vanilla的一些修改

TC16年前 (2011-01-11)网站与博客865
Vanilla确实是个挺Web2.0的论坛程序……
也确实很需要捣鼓一番,用惯了Discuz这类论坛的一定会觉得不好上手。
 需要对文件进行大改的时候,我不得不下载安装TC了(Total Commander),可以很方便地搜索关键词。
像中文支持之类的,Vanilla官方论坛上有讨论,这里不重复了。
 简单记录一下对Vanilla非核心功能的修改。
支持视频网站网址
Vanilla默认支持youtube和Vimeo,发帖时直接贴上视频网址即可。
 但是至少在我用的论坛会有冗余代码出现,显示效果也不对劲,我没有修正这个问题,直接给改成支持土豆和优酷了。
 用TC搜一下就能找到需要修改的文件是\library\core\class.format.php,522行起,修改为:
protected static function LinksCallback($Matches) {
       $Pr = $Matches[1];
       $Url = $Matches[2];
       if (preg_match(‘/v.youku.com\/v_show\/id_([^&]+).html/’, $Url, $Matches) && C(‘Garden.Format.YouTube’)) {
          $ID = $Matches[1];
          $Width = 480;
          $Height = 400;
         $Result = <<<EOT
 <div class="Video"><embed src="http://player.youku.com/player.php/sid/$ID/v.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="$Width" height="$Height"></embed></div>
EOT;
       } elseif (preg_match(‘/www.tudou.com\/programs\/view\/([^&]+)/’, $Url, $Matches) && C(‘Garden.Format.Vimeo’)) {
          $ID = $Matches[1];
          $Width = 480;
          $Height = 400;
         $Result = <<<EOT
 <div class="Video"><embed src="http://www.tudou.com/v/$ID/v.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="$Width" height="$Height"></embed></div>
EOT;
       } else {
          $Result = <<<EOT
 <a href="$Pr$Url" rel="nofollow">$Pr$Url</a>
EOT;
       }
       return $Result;
    }
修改重点粗体标出。
 修改后,在发帖时直接粘贴土豆或优酷的视频网址,就能嵌入视频了。
AboutMe插件
Vanilla默认的个人信息页可能是太简单了,AboutMe插件可以自由增加扩展项目,但这个插件问题比较多。
 主要问题是两个:插件无法启动,以及启动后找不到查看入口。
插件启动:
如果出现启用插件时报错,就将插件文件夹修改为AboutMe,然后打开文件夹下的class.aboutme.plugin.php,对文件开头的这一行进行修改:
 $PluginInfo[‘About Me’] = array(
 改为
 $PluginInfo[‘AboutMe‘] = array(
此时在后台应可启动该插件了。
增加标签页:
激活AboutMe之后,在个人资料页的侧边栏可以看到编辑个人资料的按钮,但编辑之后却找不到查看的入口。
 在火狐浏览器下可以发现空标签,查看源代码会发现的确是新增了标签,而且链接是正常的,也可以点开,但<a></a>之间没有任何文字。
那就手动在<a>标签之间添加提示文字。
 仍然是打开class.aboutme.plugin.php,来到 Add to profile @ tabs – link to view page 这块区域进行修改。
$Sender->AddProfileTab(Translate("AboutMe_ProfileTab"),  "/profile/aboutme/view/".$Sender->User->UserID."/".GDN_Format::Url($Sender->User->Name));
在Translate("AboutMe_ProfileTab"),  加上T(‘AboutMe),如果是加了中文,则将文件保存为UTF8格式
 我自己该文件的习惯不太好,经常不是在语言包中添加条目,而是直接在文件中修改的……
 所以这一行我是改成了:
 $Sender->AddProfileTab(Translate("AboutMe_ProfileTab", T(‘关于我’)), "/profile/aboutme/view/".$Sender->User->UserID."/".GDN_Format::Url($Sender->User->Name));
此时查看用户个人资料,应可看到在“动态”“通知”“讨论”等标签后多了一个“关于我”。
项目修改:
AboutMe当中提供的项目可能并不是你想要的,最简单的修改方法是“汉化”的时候把提示文字改掉。
 比如,把“职业信息”之类的改成主页、微博等等,把“兴趣爱好”中的电影、音乐什么的改成QQ、MSN之类的。
 这类修改涉及到的是views文件夹下的两个文件,打开就该知道怎么改了。
但这样一来,可能会造成论坛会员填写的内容超过字数限制,需要把字数限制放宽了。
 修改的仍然是class.aboutme.plugin.php,在文件最后的那一堆Column()。
 格式差不多就是:Column(‘RealName’, ‘varchar(64)’, FALSE)
 其中RealName表示的是这一列所填写的项目,varchar(64)表示的是字符数限制,FALSE表示这是必填项,改为TRUE则不是必填。
 但是Column(‘BD’, ‘date’, FALSE)这一行改成TRUE也是没用的,生日必须是必填。
 至于修改字数限制,改的就是varchar(64),把64换成想要的数字就行了。
这样,AboutMe这个插件算是差不多了……
 就是每次修改都要重新输入生日,这个比较麻烦。
Spoiler插件
有剧透或不打算让人一眼就看到的内容时,可以用这个插件隐藏一些文字,此时会出现一个Spoiler提示,点击旁边的“Show”按钮才会显示被隐藏的内容。
 但这个东西的目的是防剧透以及有时候开开玩笑的,和Discuz这些论坛的“回复可见”、“注册可见”、“积分可见”之类限制查看强迫注册的Hide功能完全不是一回事。
插件汉化:
这个插件可能需要修改的地方主要就在于“汉化”了。
 一般来说,汉化是在语言文件夹的captured.php文件中,添加需要汉化的文件即可:
 $Definition[‘英文’] = ‘对应的中文’;
但Spoiler应该不可以这么改(我没尝试),到Spoilers文件夹下,打开class.spoilers.plugin,来到62行,改为:
 $Attribution = T(‘隐藏内容:%s’);
 保存时另存为UTF8。
接着是把Show也“汉化”了。
 打开Spoilers\js\spoilers.js,第22行,改为:
SpoilerButton.value = ‘点击展开’;
 保存时另存为UTF8。
标签修改:
这个插件默认是用[spoiler][/spoiler]标签来标出需要隐藏的内容,但我觉得spoiler不太“中式”,打起字来也麻烦些。
 把spoiler标签修改为hide,对国人来说应该好用些。
打开class.spoilers.plugin.php,第57行和58行,改为:
 $Data->Body = preg_replace_callback("/(\[hide(?:=\"?([\d\w_’,.? ]+)\"?)?\])/", array($this, ‘SpoilerCallback’), $Data->Body);
 $Data->Body = str_replace(‘[/hide]’,'</div></div>’,$Data->Body);
 其实就是把“spoiler”给改成“hide”而已……
其他
Vanilla默认的编辑器太简单了,得手动写HTML代码,倒是可以装所见即所得编辑器,但我一向讨厌所见即所得。
 还好有个VanillaMIU可以周转一下……
 但最后还是用了随见即所得==|||
签名档插件我觉得没必要,多了签名档反而影响帖子查看。
其他好像不记得啥了……
 剩下的就是那几个大老爷们的事情了,我再不抓紧准备另一件事就有人不得不旷工了orz
标签: 百度空间

相关文章

数据库乱码的解决

数据库乱码的解决

smf在前台一切正常,但数据库中的却是乱码。很个性的乱码。同在一个数据库的wordpress却显示正常。我所认为的原因在于,wp是utf8编码,也就是数据库、表、程序所用的字符编码是一致的。而smf却不同。下图前两行就是wp的表,后面的则是smf表格。早期smf对utf8编码支持不佳,记得当年换主...

从迁徙的鸟到海中鸟

从迁徙的鸟到海中鸟

两年前在MSN开博的时候,对于博客的名字,很自然地选择了“迁徙的鸟”。2005 年暑假,正在等待法国高校的回音,我不知道要去哪里,又会学什么专业。我当时前途不定,又在法国游来荡去(我定下的目标,就是除了博士阶段在巴黎,其他时间一年换一个城市),故有迁徙一说。而“乌鸦”是从高中时起就一直追随着我的外号...

用CSS控制不同类型链接的显示

用CSS控制不同类型链接的显示

用CSS区分内外链接是我花了点力气才实现的,放到这里留个底,供自己和其他有此需要的站长和博客主参考。最初的目的是用css区分内外链接,给外链增加一个相应的图标后来发展为论坛、百科等也分出来了==不过图标制作不能,跟fz捣鼓不出什么结果,还是请jk出山了==/* links */a{backgrou...

空间变更

空间变更

百度空间首页一堆乱七八糟的空间名,看了标题就觉得反胃。然后发现我这个TC也是无厘头的名字……好吧,换回来。另外,“最近访客”和“最近读者”,我总觉得侵犯人家隐私。不过,好像可以增加访客的空间访问量。所以不知道该不该拿掉……“最近访客”拿掉,“最近读者”留着,先这么着吧。陈年旧评分割线(评论顺序 ↑)...

数据库内容批量替换

数据库内容批量替换

其实以前也记过,不过当时出于谨慎采用了先备份再替换。现在越来越懒了,直接替换了。Wordpress要把图片的“aligncenter”批量替换成“alignnone”在表中输入SQL命令UPDATE wp_posts SET post_content = replace(post_content,&...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法和观点。