今天無意中使用xoops的搜尋功能,結果發現資料多於預設數量時會被隱藏,但點選「顯示全部結果」卻查沒有半筆資料!!先釐清是不是佈景吃掉了showall變數,經確認換回官方的xswatch4佈景也是一樣結果,只能動手來找bug了,當然最先懷疑的一定是search.php,經過徹底查詢一路追到 case 'showall': //略.............. $xoopsTpl->appendByRef('results_arr', $results_arr); var_dump($results_arr);exit; //輸出陣列 確認$results_arr整包是有被輸出的,但樣板端卻沒顯示,這樣問題就很清楚了,是樣板端吃掉了$results_arr,接下來就來查樣板 ../themes/您的佈景id/modules/system/system_search.tpl (如果沒有去xswatch4整包拆回來) 發現$results_arr迴圈根本沒被輸出 <{foreach item=data from=$results_arr|default:null}> 略............ <{/if}> 這下傷腦筋了,PHP有給值,但到樣板卻消失,還好最後在前段找到這個兇手 <{if isset($nomatch) && $nomatch == true}> 因該是case 'showall':沒有給$nomatch = true 所以這一段才會無效,但如果改php檔之後升級xoops又會被覆蓋掉,那只能由樣板端處理 用筆記本開system_search.tpl,搜尋 <{if isset($nomatch) && $nomatch == true}> 替換成 <{if !empty($results_arr) || (isset($nomatch) && $nomatch != true)}> 這樣就能讓「顯示全部結果」恢復正常了(如下圖) 測試連結: https://neodw.com/search.php?query=%E7%B6%B2%E7%AB%99%E8%A8%AD%E8%A8%88&m...