Yet another bootstrap theme.

2014-04-23
FbinstTool 修改U盘GRUB 引导,手动添加Ubuntu 及acronis bootcd iso 启动项

FbinstTool 是一个简单易用的修改U 盘启动项的工具,本人喜欢将老毛桃直接写入到4G 手机内存卡中,用来平时维护自己的电脑。 acronis 的版本是acronis True Image 2014,Ubuntu 则为刚更新的14.04 LTS 发行版。

  1. 硬盘已经使用很久,经常有新的坏道出现,acronis 是为了因硬盘故障导致的分区损坏或丢失时好用来恢复win 8.1 update 镜像。
  2. ubuntu 就更方便了,修复grub、chroot 维护系统,甚至直接使用等。

打开 FbinstTool: FbinstTool 使用截图因为制作出来的U 盘启动 维护系统中,有一个是“启动自定义ISO/IMG文件(LMT目录)” 对应的定义文件是根目录的grldr 这个文件,内容为

title 【10】 启动自定义ISO/IMG文件(LMT目录) RUN (ud)/BOOT/GRUB/RUN.LST

所以我是将新增的启动项添加在RUN.LST 最后: FbinstTool 菜单编辑

  • Ubuntu 启动项:

    title [47] Install Ubuntu
    root (hd0,0)
    kernel /ubuntu/vmlinuz boot=casper iso-scan/filename=/ubuntu/ubuntu-14.04-desktop-amd64.iso ro quiet splash locale=zh_CN.UTF-8
    initrd /ubuntu/initrd.lz

  • acronis BootCD 项:

    title [48] Acronis Backup & Recovery 2014 BOOT CD
    map –mem (hd0,0)/ACI.iso (hd32)
    map –hook
    chainloader (hd32)
    boot

Read More

2014-04-17
修改Discuz forumdisplay_subforum.htm,实现显示子版块主题分类!

$value[name]

插件钩子

之前添加数据查询循环调用。 弊端是,如果启用了主题分类的子版块有N 个,那么将会增加N 次Mysql 的Query,所以footer 下面的Queries 会增加N 条。不知道有没有什么好的解决方法…

Read More

2014-04-11
Nginx 泛解析实现二级(多)域名,自动设置root 绑定到对应子目录

如根目录结构为 /htdocs ├── bbs └── www 要实现绑定域名bbs.domain.com 到bbs 目录,www.domain.com 到www 目录,规则如下:

server {
listen 80;
server_name ~^(?.+)\.domian\.com$;
root htdocs/$subdomain;
error_page 404 /error.html;
location /error.html {
root /htdocs;
}

}

三级域名,更多子域名设置类似。

Read More

2014-04-10
让Discuz 安卓独立客户端帖子内容页展示分类信息字段

参照之前《简单修改,让Discuz 手机触屏版默认帖子内容页模板显示分类信息内容》一文,举一反三,其实要在Discuz 的独立客户端里实现贴内分类信息的展示并不难。终于可以抛掉使用“温馨提示”来引导用户切换模板的尴尬局面了(见:Discuz 手机版”触屏版” 通过版块判断为viewthread模板页添加自定义文本) 根据经验,要实现起来非常简单! Discuz 安卓独立客户端插件启用后,插件目录位于source/plugin 的mobileoem 中。 查看目录结构:

[root@localhost mobileoem]# tree
.
├── api
│ ├── pushlist.php
│ ├── pushtomobile.php
│ ├── refreshpush.php
│ ├── register.php
│ ├── removepush.php
│ ├── sendtopc.php
│ └── threaddetail.php
├── discuzcode.func.php
├── discuz_plugin_mobileoem.xml
├── index.htm
├── install.php
├── json.class.php
├── mobileoem.class.php
├── mobile.php
├── qrcode.class.php
├── setting.inc.php
├── static
│ ├── image
│ │ ├── cloud.png
│ │ ├── icon_reply.png
│ │ ├── load_pic.png
│ │ └── push.png
│ └── js
│ ├── index.htm
│ ├── iscroll.js
│ └── viewthread.js
├── switch.php
├── table
│ ├── table_mobileoem_member.php
│ └── table_mobileoem_pushthreads.php
└── template
├── downloadguide.htm
├── mobileoem
│ ├── common
│ │ ├── header.htm
│ │ └── showmessage.htm
│ └── forum
│ ├── discuzcode.htm
│ ├── viewthread.htm
│ ├── viewthread_node_body.htm
│ └── viewthread_node.htm
└── module.htm

9 directories, 34 files

客户端帖子主题也模板文件是viewthread_node_body.htm,只要修改一下就可以用了。 找到$post[message],在上面添加以下内容:

$option[title]:

$option[value] $option[unit]-

就完成了。仅仅是循环输出各个字段的内容,不启用分类信息模板,毕竟仅是手机网页,简洁才能有好体验。另外,为了看起来舒服点,可以定义一点css style!


顺便说一下,Discuz 的客户端除了首页有个登陆入口外,真找不到其它的了,如有好位置,可以添加一个“A”标签来调用客户端的登陆页:

[登陆](javascript:AppInterface.toLogin())
Read More

2014-04-10
Discuz Nginx 301 重定向规则,解决二级域名多入口问题

Discuz 在启用了版块或者频道的二级域名时,可通过改二级域名访问论坛的url并且不会自动纠正,似乎不太友好。之前用apache 也写了rewrite 规则实现重定向,但现在切换至nginx,需要重新配置一下,但也很简单: 原来的apache rewrite 规则:

RewriteCond %{HTTP_HOST} ^a.domain.com$
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ http://www.domain.com/thread-$1-$2-$3.html [L,R=301]
RewriteRule ^forum.php(.)$ http://www.domain.com/forum.php$1 [L,R=301]
RewriteRule ^archiver(.
)$ http://www.domain.com/archiver$1 [R=301,L]

nginx 规则:

if ($host != ‘www.domian.com')
{
rewrite ^/forum.php(.)$ http://www.domain.com/forum.php$1 permanent;
rewrite ^/forum-(.
)$ http://www.domain.com/forum-$1 permanent;
rewrite ^/thread-(.)$ http://www.domain.com/thread-$1 permanent;
rewrite ^/archiver(.
)$ http://www.domain.com/archiver$1 permanent;
}

因为是多个二级域名的关系,所以将所有$host 不是“www.domain.com” 都rewrite 到“www.domain.com” 下面。将这段规则放到Discuz 生成的规则上面就好了。 看一下效果:

ying@ying-desktop:~/Desktop$ wget http://a.domian.com/thread-18513-1-1.html--2014-04-10 13:28:56– http://a.domain.com/thread-18513-1-1.html
正在解析主机 a.domain.com (a.domain.com)… 114.215.101.226
正在连接 a.domain.com (a.domain.com)|114.215.101.226|:80… 已连接。
已发出 HTTP 请求,正在等待回应… 301 Moved Permanently
位置:http://www.domain.com/thread-18513-1-1.html [跟随至新的 URL]
–2014-04-10 13:28:57– http://www.domain.com/thread-18513-1-1.html
正在解析主机 www.domian.com (www.domain.com)... 114.215.101.226
再次使用存在的到 a.domain.com:80 的连接。
已发出 HTTP 请求,正在等待回应… 200 OK
长度: 未指定 [text/html]
正在保存至: “thread-18513-1-1.html”

\[     <=\>                               \] 106,477      100KB/s   用时 1.0s
Read More

2014-04-09
Discuz 添加自定义语言包(source/language/lang_*.php) 并在模板中调用

没有系统学习过Discuz,想来些diy 确实吃力。现在我要加载一个语言包在source/language/lang_identifier.php 这个 lang_identifier.php是我自定义的。 内容:

‘名字’,
);

?>

目前只知道需要在模板中用php 使用Discuz 的lang 函数输出,不知道有没有更直观的方法?

lang() 函数位于source/function/function_core.php 中:

function lang($file, $langvar = null, $vars = array(), $default = null) {
}

$file 如果写成不包含路径的文件,则代表 source/language 目录下的文件。如果包含目录,如 ‘forum/misc’,则代表 source/language/forum/lang_misc.php 文件。如果写成 plugin/插件id,则会读取插件的语言包文件,即 data/plugindata/lang_plugin.php,此文件是根据安装并启用的插件缓存后生成的。

Read More

2014-04-08
给Discuz 的发帖按钮加个判断,自动补上当前主题分类(分类信息) 的typeid (sortid)

默认Discuz X3.1 发帖按钮的作用就是简单地在当前版块发表新主题!自己搭建的Discuz 站点,划分了一定量的主题分类及分类信息,而在使用论坛的使用过程中,会遇到这样的场景: 进入A 版块,选中A 版块的A-a 主题分类来浏览该主题分类下的所有帖子。然后点击发帖按钮发布新主题。结果在发帖的时候,默认不会选择主题分类,必须再一次执行选择主题分类的操作! 这个给我的感觉就是累,像我这样“低智商”的用户,更喜欢”傻瓜式“的类似”所见即所得“的操作方式,而不是”再一次“执行旧动作。 好了,既然如此,那就弄个判断,给Discuz 的发帖按钮添加上当前主题分类或分类信息的id,让发帖按钮触发的发帖链接带上主题分类或分类信息! 涉及的模板文件:

  1. template/default/forum/forumdisplay.htm (版块主题列表页)
  2. template/default/forum/forumdisplay_list.htm (版块主题列表页)
  3. template/default/forum/viewthread.htm (帖子内容页)

forumdisplay.htm 及forumdisplay_list.htm 这两个文件的修改方法是一样的。 找到发帖按钮所在的位置:

{lang send_posts}

在 forum.php?mod=post&action=newthread&fid=$_G[fid] 后面添加上主题分类及分类信息的判断及输出:

{if ($_G[‘forum’][‘threadtypes’] && $_G[‘forum’][‘threadtypes’][‘listable’]) || count($_G[‘forum’][‘threadsorts’][‘types’]) > 0}{if $_GET[‘typeid’] != 0}&filter=typeid&typeid={$_GET[‘typeid’]}{/if}{if $_GET[‘sortid’] != 0}&sortid=$_GET[‘sortid’]{/if}{/if}

最后变成:

{lang send_posts}

forumdisplay.htm 里还有个通过发帖按钮触发的onmouseover 事件,触发的事件就是发帖按钮下面的ul 列表,其中第一个li 默认是:

这里也总要加上吧:

{if $_GET[‘typeid’] != 0}&filter=typeid&typeid=$_GET[‘typeid’]{/if}{if $_GET[‘sortid’] != 0}&sortid=$_GET[‘sortid’]{/if}

最后是这样子的:

至此,Discuz 主题列表页的修改已经完成。然后,还需调整的地方就剩下帖子内容页viewthread.htm 里面的发帖链接了。


与主题列表页基本一致的发帖按钮(链接):

{lang send_posts}

但对应的变量不同了,所以按照主题列表页的方法会出错,需要加入的判断为:

{if $_G[‘forum_thread’][‘typeid’] && $_G[‘forum’][‘threadtypes’][‘types’][$_G[‘forum_thread’][‘typeid’]] && $_G[forum_thread][typeid] != 0}&filter=typeid&typeid=$_G[forum_thread][typeid]{/if}{if $_G[‘forum’][‘threadsorts’] && $_G[‘forum_thread’][‘sortid’] != 0}&sortid=$_G[forum_thread][sortid]{/if}

最后这段发帖链接变为:

{lang send_posts}

对应的onmouseover 事件:

变更为:


有两个比较需要留意的地方

  • 一个是发帖按钮对后台是否启用了分类信息的“发帖必须归类”选项有个值判断:

    !$_G[‘forum’][‘threadsorts’][‘required’]

    这里,我是直接去掉了这个判断,因为我启用了这个选项,版块对应的特殊主题也是关闭的,加入的内容随便放在if 或者else 之后估计不会有太大影响。当然如果有问题,还请指出:)

  • 另外一个,不是很重要,只是加上了typeid 及 sortid 是否等于0 的判断,因为如果不加上,那么在主题列表页没有选择主题分类或分类信息及相关帖子没有启用主题分类或分类信息时,发帖按钮(链接)激活的typeid 及sortid 值均为0,虽然没什么影响,但看起来十分不雅,so…
Read More

2014-04-04
简单修改,让Discuz 手机触屏版默认帖子内容页模板显示分类信息内容

之前特发一文《Discuz 手机版”触屏版” 通过版块判断为viewthread模板页添加自定义文本》以记录在Discuz 上获得的“重大突破”,最近才发现成“笑话”了。与其给Discuz 中的分类信息来个“温馨提示”,还不如直接让它显示出来,用户体验提升又提升一个层次。继续写文备忘… 继续浏览Discuz X3.1 触屏版帖子展示页模板:template/default/touch/forum/viewthread.htm,发现在主题输出段与普通标准版的内容是一致的,为什么不会和标准版模板一样输出分类信息内容呢?

{lang has_expired}

$_G[forum][threadsorts][types][$_G[forum_thread][sortid]]

$option\[title\]: $option\[value\] $option\[unit\]--  

后来往上翻,发现执行一句PHP 语句:

原来变量$threadsort 值已经赋值了,值为null,那么以下有关$threadsort 的if 判断当然被否认了,也就是“!”。直接去掉这段赋值语句,Discuz X3.1 的触屏版就能循环输出分类信息字段内容了。但输出模板真的很难看…如果要调用后台分类信息的“diy 调用模板”,有朋友说可以通过以下方式实现:

  • 原loop 循环段:
$option\[title\]: $option\[value\] $option\[unit\]--  
  • 替换为:

    $threadsortshow\[typetemplate\]
    

    提示:必须在分类信息模板的 DIY调用模板 编写好HTML样式

Read More

2014-04-03
一段鼠标滑过替换lj 标签CSS 样式(背景)的JavaScript

var allLi=document.getElementById(“slideUl_a”);
var classCss=” ;background:#FEFAF1;border:1px solid #FED79E;”;
var classCss2=” ;background:#fff;border:1px solid #fff;”;
var allLiQuery=allLi.getElementsByTagName(“li”);
var lilen=allLiQuery.length;
for(var i =0;i

Read More

2014-04-02
Discuz 插件设计:添加版块多选(forums)变量

不是说最近准备学习Discuz 插件的编写了,整个过程都是为了实现在某版块显示子版块主题分类这一小功能而折腾的。因为相关知识异常的缺乏,所以耗时巨长,还迫于记忆力不好,所以赶紧写文备忘。其实Discuz 的开发文档已经非常完善了,只不过对于我等菜鸟来说还是有点难吃消。 开始编写一个新插件,请首先打开 config/config_global.php 文件,在文件结尾添加以下代码开启插件设计者模式。

$_config[‘plugindeveloper’] = 1;

按照Dicusz 的要求,“设置”、“模块”就不说了,在“变量”选项卡添加一个版块多选(forums)变量,如配置变量名为“forumsAllowed”。然后相关“模块”文件中加入判断即可。

global $_G;
@extract($_G[‘cache’][‘plugin’][‘identifier’]);
if(!in_array($_G[‘fid’],(array)unserialize($forumsAllowed))) return ‘’;
else {

}
Read More