100分恳求+跪求+哀求高手解决关于wiki网站的默认搜索项设置问题! 用的什么wiki软件都不说明一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我用的是mediawiki做的wiki网站,还有我想了解一下能不能把google的搜索结果在站内的一个特定位置显示出来,谢谢各位前辈帮帮小弟吧! 兄弟别着急,上来这里就是为了解决问题的,大家也只是提出方案供参考,代码到底还是要自己写的。况且你提问的时候不是很详细,你到底要解决几个问题,分别什么症状,具体版本配置等等情况少大家也只能提出大概的方向。===========默认搜索项的问题,我提供思路============1、修改注册时候的默认选项mediawiki\includes\SpecialUserlogin.phpfunction initUser( $u ) 这个功能里$u->setOption( 'rememberpassword', $this->mRemember ? 1 : 0 );后面加上你的权限/*搜索项为:{(页面) +template+image+Category},*/2、屏蔽搜索项的修改功能没仔细看程序,mw1.9.3 管理输出好像在这里mediawiki\includes\SpecialPreferences.php#899 行# Search都屏蔽了吧看了一下wiki的权限,具体的权限代码太多太复杂了,看不明白。==========google内容的部分=============http://www.allwiki.com/wiki/Mediawiki%E5%A2%9E%E5%8A%A0Google_AdSense参考这里吧 先谢谢(fredyj(醉爱酸奶) )的很详细的说明.小弟感激涕零!但小弟对下面的不是很明白..能否写得详细一些{function initUser( $u ) 这个功能里$u->setOption( 'rememberpassword', $this->mRemember ? 1 : 0 );后面加上你的权限<<<<<<h1>这个怎么加啊</h1>>>>>>/*搜索项为:{(页面) +template+image+Category},<<<<这个在哪里设啊.?>>>>>*/ $u->setOption( 'rememberpassword', $this->mRemember ? 1 : 0 );搜索项的修改功能:searchNs1=0searchNs2=0searchNs3=0searchNs4=0searchNs5=0searchNs6=0searchNs7=0searchNs8=0searchNs9=0searchNs10=0searchNs11=0searchNs12=0searchNs13=0searchNs14=0searchNs15=0ie右键看看源码,哪些是你要的,基本上就是这些权限,{(页面) +template+image+Category}就在这些里面,没仔细去找。$u->setOption( 'searchNs1', $this->mRemember ? 1 : 0 );基本上这么写就可以了==============function initUser( $u ) 这个功能好像是注册用户,并设置权限的初始值,所以我才说在这里改。你可以在这里改改,然后随便注册革新用户,2的先不屏蔽,看看是不是你需要的权限。================================quickbar=1underline=2cols=80rows=25searchlimit=20contextlines=5contextchars=50skin=monobookmath=1rcdays=7rclimit=50wllimit=250highlightbroken=1stubthreshold=0previewontop=1editsection=1editsectiononrightclick=0showtoc=1showtoolbar=1date=imagesize=2thumbsize=2rememberpassword=0enotifwatchlistpages=0enotifusertalkpages=0enotifminoredits=0enotifrevealaddr=0shownumberswatching=0fancysig=0externaleditor=0externaldiff=0showjumplinks=1numberheadings=1uselivepreview=0watchlistdays=3variant=language=zh-cnsearchNs0=1nickname=timecorrection=searchNs1=0searchNs2=0searchNs3=0searchNs4=0searchNs5=0searchNs6=0searchNs7=0searchNs8=0searchNs9=0searchNs10=0searchNs11=0searchNs12=0searchNs13=0searchNs14=0searchNs15=0justify=1hideminor=0extendwatchlist=0usenewrc=0editondblclick=0editwidth=0watchcreations=1watchdefault=0watchmoves=0watchdeletion=0minordefault=0previewonfirst=0nocache=0forceeditsummary=1watchlisthideown=0watchlisthidebots=0watchlisthideminor=0ccmeonemails=0nolangconversion=0这些是mw_user.user_options 的所有数据好运 尝试了一下,貌似imagetemplateCategorysearchNs6=1searchNs10=1searchNs14=1^^v 感谢fredyj(醉爱酸奶)您对我的帮助,我用的是mediawiki 1.8.2 完全汉化版+apache2+mysql5+php5环境.我没有找到你说的"searchNs"我选择{(页面) +template+image+Category)搜索"aas"的时候地址栏里是这样的http://127.0.0.1/mediawiki/index.php/Special:Search?ns0=1&ns6=1&ns10=1&ns14=1&search=aas&searchx=%E6%90%9C%E7%B4%A2我只在"fuzz-tester.php"里面找下面这一几个相关的东西到:class searchTest extends pageTest { function __construct() { $this->pagePath = "index.php/Special:Search"; $this->params = array ( "action" => "index.php/Special:Search", "ns0" => wikiFuzz::makeFuzz(2), "ns1" => wikiFuzz::makeFuzz(2), "ns2" => wikiFuzz::makeFuzz(2), "ns3" => wikiFuzz::makeFuzz(2), "ns4" => wikiFuzz::makeFuzz(2), "ns5" => wikiFuzz::makeFuzz(2), "ns6" => wikiFuzz::makeFuzz(2), "ns7" => wikiFuzz::makeFuzz(2), "ns8" => wikiFuzz::makeFuzz(2), "ns9" => wikiFuzz::makeFuzz(2), "ns10" => wikiFuzz::makeFuzz(2), "ns11" => wikiFuzz::makeFuzz(2), "ns12" => wikiFuzz::makeFuzz(2), "ns13" => wikiFuzz::makeFuzz(2), "ns14" => wikiFuzz::makeFuzz(2), "ns15" => wikiFuzz::makeFuzz(2), "redirs" => wikiFuzz::makeFuzz(2), "search" => wikiFuzz::makeFuzz(2), "offset" => wikiFuzz::chooseInput( array("", "0", "-1", "--------'-----0", "+1", "81343242346234234", wikiFuzz::makeFuzz(2)) ), "fulltext" => wikiFuzz::chooseInput( array("", "0", "1", "--------'-----0", "+1", wikiFuzz::makeFuzz(2)) ), "searchx" => wikiFuzz::chooseInput( array("", "0", "1", "--------'-----0", "+1", wikiFuzz::makeFuzz(2)) )========================================================= static public function makeFuzz($maxtypes = 2) { $page = ""; for ($k=0; $k<$maxtypes; $k++) { $page .= wikiFuzz::loop(); }==================================== static private function loop() { switch ( wikiFuzz::randnum(3) ) { case 1: // an opening tag, with parameters. $string = ""; $i = wikiFuzz::randnum(count(wikiFuzz::$types) - 1); $t = wikiFuzz::$types[$i]; $arr = wikiFuzz::$data[$t]; $string .= "<" . $t . " "; $num_params = min(wikiFuzz::$maxparams, count($arr)); for ($z=0; $z<$num_params; $z++) { $badparam = $arr[wikiFuzz::randnum(count($arr) - 1)]; $badstring = wikiFuzz::makestring(); $string .= $badparam . "=" . wikiFuzz::getRandQuote() . $badstring . wikiFuzz::getRandQuote() . " "; }================================================我在你说的function initUser( $u ) 加了$u->setOption( 'searchNs1', $this->mRemember ? 1 : 0 );searchNs1=0searchNs2=0searchNs3=0searchNs4=0....等.程序运行有错误,能不能具体点说明应该如何去修改啊..万分感谢! WIKI没有用过,所以帮不上忙啦~ 没找到你说的版本,只得到了mediawiki 1.8.4 完全汉化版,并且我的机器怎么也装不上,算了。我以1.8.4说明1、【目的】:修改新注册用户默认搜索选项【修改文件】:mediawiki\includes\SpecialUserlogin.php【修改方法】:寻找#300行出现的function &initUser( &$u ) 在#310$u->setOption( 'language', $this->mLanguage ); 之后在#312return $u; 之前添加$u->setOption( 'searchNs6', 1 );$u->setOption( 'searchNs10', 1 );$u->setOption( 'searchNs14', 1 );保存文件。2、第一步完成后,正常流程注册一新用户,然后到特殊页面修改配置,看第一步修改默认搜索选项是否起效,如果【生效】进行第三步,如果【失败】忽略我说的一切,取消第一步操作,恢复默认文件,等待高手。3、【目的】:屏蔽搜索位置【修改文件】:mediawiki\includes\SpecialPreferences.php【修改方法】:#874 行查找# Search到889行用/* */全部屏蔽囧 谢谢大哥,!!!!!非常非常感谢大哥.......终于向前迈进了一步....你说的方法已经实现了注册用户的默认搜索项!可我还有个小小的问题,就是:没有注册的用户不能实现这个默认搜索项啊。没注册的用户搜索的默认项还只是“页面”,恳请大哥您帮我最后这一次,不胜感激。补充一点:$u->setOption( 'language', $this->mLanguage );在我这里是在159行。我是在(147行)function addNewAccount() (159行)$u->setOption( 'language', $this->mLanguage );后加:$u->setOption( 'searchNs6', 1 );$u->setOption( 'searchNs10', 1 );$u->setOption( 'searchNs14', 1 );成功实现对注册用户的默认搜索项修改的! 为什么要说终于.... —_—|||1【目的】:搜索时候,未注册用户的默认搜索选项【修改文件】:mediawiki\includes\SpecialSearch.php【修改方法】:SpecialSearch.php搜索#60函数里面function SpecialSearch( &$request, &$user ) {将 if( $request->getCheck( 'searchx' ) ) { $this->namespaces = $this->powerSearch( $request );//搜索结果页,继续点击搜索时,使复选框选项生效。 } else { $this->namespaces = $this->userNamespaces( $user );//点击首页搜索,用户默认搜索选项生效。 }根据需要分别替换成 if( $request->getCheck( 'searchx' ) ) { $this->namespaces = array(0,6,10,14); } else { $this->namespaces = array(0,6,10,14); }备注:替换了这些,无论权限怎么改都不生效了,搜索其他的选中了,也都做不到了。所以好像只需要改这个就可以满足你的要求了。2 无聊ing...也说一下修改已经注册用户的修改方法吧。【目的】:已经注册的用户的默认搜索选项【修改文件】:mediawiki\includes\SpecialUserlogin.php【修改效果】:用户登陆时,自动进行选项设定。【修改方法】:查找#404function processLogin() {global $wgUser, $wgAuth;在此之后在switch ($this->authenticateUserData())之前添加# Set search namespace optionsfor( $j = 0 ; $j <= 15 ; $j++ ) {$value = in_array($j,array(0,6,10,14)) ? 1 : 0;$wgUser->setOption( "searchNs{$j}", $value );}$wgUser->saveSettings();备注:每个用户都登陆后,本段代码可以删除掉。PS:也可以手动修改数据库,不过存在一定风险。以上方法危险小,但需要时间长,如果用户不登录,则始终不生效。请客!^^v TUF8编码网页头部10像素空白如何解决? PHP中echo JS的问题,好诡异啊,请大家看看 文件名带有多个空格,但是用php读取后只显示一个空格 PHP用ODBC连ORACLE的一个小问题 使用有中文的usb-key做双向ssl认证时遇到500错误 PHP快速入门教程之for循环 PHP中这个符号念啥-- $ ? 关于sublime写PHP的问题 用DW 8.0服务器行为中插入记录时的报错求解!! 请帮忙写一个mysql图形上传的程序 刚注册的域名,大家来拍砖!! 求php写的网站源代码
大家也只是提出方案供参考,
代码到底还是要自己写的。况且你提问的时候不是很详细,你到底要解决几个问题,分别什么症状,具体版本配置等等情况少大家也只能提出大概的方向。===========默认搜索项的问题,我提供思路============1、修改注册时候的默认选项
mediawiki\includes\SpecialUserlogin.phpfunction initUser( $u )
这个功能里
$u->setOption( 'rememberpassword', $this->mRemember ? 1 : 0 );
后面加上你的权限
/*
搜索项为:
{(页面) +template+image+Category},
*/2、屏蔽搜索项的修改功能
没仔细看程序,mw1.9.3 管理输出好像在这里
mediawiki\includes\SpecialPreferences.php
#899 行
# Search
都屏蔽了吧看了一下wiki的权限,具体的权限代码太多太复杂了,看不明白。==========google内容的部分=============
http://www.allwiki.com/wiki/Mediawiki%E5%A2%9E%E5%8A%A0Google_AdSense
参考这里吧
function initUser( $u )
这个功能里
$u->setOption( 'rememberpassword', $this->mRemember ? 1 : 0 );
后面加上你的权限<<<<<<h1>这个怎么加啊</h1>>>>>>
/*
搜索项为:
{(页面) +template+image+Category},<<<<这个在哪里设啊.?>>>>>
*/
搜索项的修改功能:
searchNs1=0
searchNs2=0
searchNs3=0
searchNs4=0
searchNs5=0
searchNs6=0
searchNs7=0
searchNs8=0
searchNs9=0
searchNs10=0
searchNs11=0
searchNs12=0
searchNs13=0
searchNs14=0
searchNs15=0ie右键看看源码,哪些是你要的,基本上就是这些权限,{(页面) +template+image+Category}就在这些里面,没仔细去找。$u->setOption( 'searchNs1', $this->mRemember ? 1 : 0 );基本上这么写就可以了==============
function initUser( $u )
这个功能好像是注册用户,并设置权限的初始值,所以我才说在这里改。
你可以在这里改改,然后随便注册革新用户,2的先不屏蔽,看看是不是你需要的权限。================================
quickbar=1
underline=2
cols=80
rows=25
searchlimit=20
contextlines=5
contextchars=50
skin=monobook
math=1
rcdays=7
rclimit=50
wllimit=250
highlightbroken=1
stubthreshold=0
previewontop=1
editsection=1
editsectiononrightclick=0
showtoc=1
showtoolbar=1
date=
imagesize=2
thumbsize=2
rememberpassword=0
enotifwatchlistpages=0
enotifusertalkpages=0
enotifminoredits=0
enotifrevealaddr=0
shownumberswatching=0
fancysig=0
externaleditor=0
externaldiff=0
showjumplinks=1
numberheadings=1
uselivepreview=0
watchlistdays=3
variant=
language=zh-cn
searchNs0=1
nickname=
timecorrection=
searchNs1=0
searchNs2=0
searchNs3=0
searchNs4=0
searchNs5=0
searchNs6=0
searchNs7=0
searchNs8=0
searchNs9=0
searchNs10=0
searchNs11=0
searchNs12=0
searchNs13=0
searchNs14=0
searchNs15=0
justify=1
hideminor=0
extendwatchlist=0
usenewrc=0
editondblclick=0
editwidth=0
watchcreations=1
watchdefault=0
watchmoves=0
watchdeletion=0
minordefault=0
previewonfirst=0
nocache=0
forceeditsummary=1
watchlisthideown=0
watchlisthidebots=0
watchlisthideminor=0
ccmeonemails=0
nolangconversion=0这些是mw_user.user_options 的所有数据好运
template
CategorysearchNs6=1
searchNs10=1
searchNs14=1^^v
我用的是mediawiki 1.8.2 完全汉化版+apache2+mysql5+php5环境.
我没有找到你说的"searchNs"
我选择{(页面) +template+image+Category)搜索"aas"的时候地址栏里是这样的http://127.0.0.1/mediawiki/index.php/Special:Search?ns0=1&ns6=1&ns10=1&ns14=1&search=aas&searchx=%E6%90%9C%E7%B4%A2
我只在"fuzz-tester.php"里面找下面这一几个相关的东西到:
class searchTest extends pageTest {
function __construct() {
$this->pagePath = "index.php/Special:Search"; $this->params = array (
"action" => "index.php/Special:Search",
"ns0" => wikiFuzz::makeFuzz(2),
"ns1" => wikiFuzz::makeFuzz(2),
"ns2" => wikiFuzz::makeFuzz(2),
"ns3" => wikiFuzz::makeFuzz(2),
"ns4" => wikiFuzz::makeFuzz(2),
"ns5" => wikiFuzz::makeFuzz(2),
"ns6" => wikiFuzz::makeFuzz(2),
"ns7" => wikiFuzz::makeFuzz(2),
"ns8" => wikiFuzz::makeFuzz(2),
"ns9" => wikiFuzz::makeFuzz(2),
"ns10" => wikiFuzz::makeFuzz(2),
"ns11" => wikiFuzz::makeFuzz(2),
"ns12" => wikiFuzz::makeFuzz(2),
"ns13" => wikiFuzz::makeFuzz(2),
"ns14" => wikiFuzz::makeFuzz(2),
"ns15" => wikiFuzz::makeFuzz(2),
"redirs" => wikiFuzz::makeFuzz(2),
"search" => wikiFuzz::makeFuzz(2),
"offset" => wikiFuzz::chooseInput( array("", "0", "-1", "--------'-----0", "+1", "81343242346234234", wikiFuzz::makeFuzz(2)) ),
"fulltext" => wikiFuzz::chooseInput( array("", "0", "1", "--------'-----0", "+1", wikiFuzz::makeFuzz(2)) ),
"searchx" => wikiFuzz::chooseInput( array("", "0", "1", "--------'-----0", "+1", wikiFuzz::makeFuzz(2)) )
=========================================================
static public function makeFuzz($maxtypes = 2) {
$page = "";
for ($k=0; $k<$maxtypes; $k++) {
$page .= wikiFuzz::loop();
}
====================================
static private function loop() {
switch ( wikiFuzz::randnum(3) ) {
case 1: // an opening tag, with parameters.
$string = "";
$i = wikiFuzz::randnum(count(wikiFuzz::$types) - 1);
$t = wikiFuzz::$types[$i];
$arr = wikiFuzz::$data[$t];
$string .= "<" . $t . " ";
$num_params = min(wikiFuzz::$maxparams, count($arr));
for ($z=0; $z<$num_params; $z++) {
$badparam = $arr[wikiFuzz::randnum(count($arr) - 1)];
$badstring = wikiFuzz::makestring();
$string .= $badparam . "=" . wikiFuzz::getRandQuote() . $badstring . wikiFuzz::getRandQuote() . " ";
}
================================================
我在你说的function initUser( $u ) 加了
$u->setOption( 'searchNs1', $this->mRemember ? 1 : 0 );
searchNs1=0
searchNs2=0
searchNs3=0
searchNs4=0
....
等.程序运行有错误,能不能具体点说明应该如何去修改啊..万分感谢!
【修改文件】:mediawiki\includes\SpecialUserlogin.php
【修改方法】:
寻找#300行出现的
function &initUser( &$u ) 在#310
$u->setOption( 'language', $this->mLanguage );
之后在#312
return $u;
之前添加
$u->setOption( 'searchNs6', 1 );
$u->setOption( 'searchNs10', 1 );
$u->setOption( 'searchNs14', 1 );保存文件。2、第一步完成后,正常流程注册一新用户,然后到特殊页面修改配置,看第一步修改默认搜索选项是否起效,
如果【生效】进行第三步,
如果【失败】忽略我说的一切,取消第一步操作,恢复默认文件,等待高手。3、【目的】:屏蔽搜索位置【修改文件】:mediawiki\includes\SpecialPreferences.php
【修改方法】:#874 行查找
# Search到889行用/* */全部屏蔽囧
非常非常感谢大哥.......
终于向前迈进了一步....
你说的方法已经实现了注册用户的默认搜索项!
可我还有个小小的问题,就是:没有注册的用户不能实现这个默认搜索项啊。没注册的用户搜索的默认项还只是“页面”,恳请大哥您帮我最后这一次,不胜感激。
补充一点:$u->setOption( 'language', $this->mLanguage );在我这里是在159行。我是在(147行)function addNewAccount()
(159行)$u->setOption( 'language', $this->mLanguage );后加:
$u->setOption( 'searchNs6', 1 );
$u->setOption( 'searchNs10', 1 );
$u->setOption( 'searchNs14', 1 );
成功实现对注册用户的默认搜索项修改的!
【目的】:搜索时候,未注册用户的默认搜索选项
【修改文件】:mediawiki\includes\SpecialSearch.php
【修改方法】:
SpecialSearch.php
搜索#60函数里面
function SpecialSearch( &$request, &$user ) {将
if( $request->getCheck( 'searchx' ) ) {
$this->namespaces = $this->powerSearch( $request );//搜索结果页,继续点击搜索时,使复选框选项生效。
} else {
$this->namespaces = $this->userNamespaces( $user );//点击首页搜索,用户默认搜索选项生效。
}根据需要分别替换成 if( $request->getCheck( 'searchx' ) ) {
$this->namespaces = array(0,6,10,14);
} else {
$this->namespaces = array(0,6,10,14);
}备注:替换了这些,无论权限怎么改都不生效了,搜索其他的选中了,也都做不到了。所以好像只需要改这个就可以满足你的要求了。2 无聊ing...也说一下修改已经注册用户的修改方法吧。
【目的】:已经注册的用户的默认搜索选项
【修改文件】:mediawiki\includes\SpecialUserlogin.php
【修改效果】:用户登陆时,自动进行选项设定。
【修改方法】:
查找#404
function processLogin() {
global $wgUser, $wgAuth;
在此之后在
switch ($this->authenticateUserData())
之前添加
# Set search namespace options
for( $j = 0 ; $j <= 15 ; $j++ ) {
$value = in_array($j,array(0,6,10,14)) ? 1 : 0;
$wgUser->setOption( "searchNs{$j}", $value );
}
$wgUser->saveSettings();备注:每个用户都登陆后,本段代码可以删除掉。
PS:也可以手动修改数据库,不过存在一定风险。以上方法危险小,但需要时间长,如果用户不登录,则始终不生效。请客!^^v