跳到主要內容

發表文章

目前顯示的是有「xoops區塊開發」標籤的文章

Xoops模組區塊開發-修改block.php讓區塊編輯函數(block_edit)也能讀寫content欄位

Xoops模組的區塊欄位資料表newblocks裡面除了有儲存設定的options欄位,還有content的text類型欄位,但除了Xoops自訂區塊能夠寫入content以外,模組區塊就只能以陣列方式儲存options欄位,即使能存進去content也讀不出來,原因是modules/system/class/block.php裡面的$edit_form = $edit_func($options);只允許$options傳入,要能讀出content就要修改block.php這才行,方法如下: 1、找到以下檔案用編輯器打開 根目錄/modules/system/class/block.php 找到第221行 $edit_form = $edit_func($options); 修改為,加上紅字的 $this $edit_form = $edit_func($options, $this ); 2、修改模組區塊函式block_edit,增加$thisvar傳入 //區塊編輯函式 function 模組ID_block_edit($options, $thisvar ){ 略............... } 3、讀寫content方法如下: ->要寫入資料庫,欄位name請用name='content_block' ->要讀出content請用$thisvar->getVar('content', 'e') 後記 $this->getVar('content', 'e') 為輸出htmlspecialchars()結果,顯示原始碼 $this->getVar('content', 'n') 為輸出資料表原始格式 以上既完成區塊編輯函數(block_edit)也能讀寫content欄位功能開發,實際來測試看看 先在模組區塊中輸入【測試測試測試測試測1352466】 然後儲存,再確認newblocks資料表的content欄位也是有被寫入!! 然後於Xoops的區塊管理->編輯區塊,查看文字框能否讀出寫入的資料,如果能讀出,表示這一整套流程都沒問題,可安心使用。 後記,還需要補一段修改,防止更新模組時Xoops機制寫入con...

Xoops模組開發->區塊開發->區塊執行函式增加傳遞第二參數功能-教學撰寫:徐嘉裕Neil hsu

在開發Xoops區塊的時候,我們會吧區塊編輯函式(block_edit)的設定值放在options陣列裡面,送出後以字串形式儲存在newblocks資料表的options欄位中, 然後在區塊執行函式(block_show)使用$options陣列來取得設定值,但由於Xoops限制區塊執行函式只能取用options欄位的設定值,其他的像是bid,name,title欄位都是無法取得數值,若是我們需要取用bid來做前台js資料區隔就沒辦法,解決方案只有修改kernel/block.php->$show_func涵式,增加第二傳遞參數功能,吧整個$this都送入$show_func涵式,這樣在模組區塊中就能調用到newblocks資料表全部數值了,方法如下。 1、開啟kernel/block.php檔案,用文字編輯器找到481行       $block   = $show_func($options); 2、修改為 $block   = $show_func($options ,$this ); 3、模組區塊執行函式增加第二參數 function 模組ID_block_show($options ,$thisvar ){ 略.......... } 注意:模組區塊執行函式第二參數請勿用$this命名變數 4、如果要取用bid值輸出樣板,$block['bid']=$thisvar->getVar('bid'); 5、在模組樣板上使用<{$block.bid}>即可 6、>getVar(' 可輸入任何newblocks資料表的欄位名稱 ') 這樣就可以了,複製區塊一樣能抓到數值,有需要的朋友參考看看!! 工作心得分享: 徐嘉裕 Neil hsu

JQuery使用each迴圈取得核取方塊陣列數值的方法(選取及取消)-教學撰寫:徐嘉裕Neil hsu

核取方塊陣列就是由很多個核取方塊所組件起來的,形成一個陣列型態,所以如果要取值就不能用個別取值的方法,必須要使用each迴圈來判斷哪些方塊目前是checked狀態,哪些是未checked狀態,可以用以下的方法。 例如像下面這樣的核取方塊陣列要取值! html結構 <label class=' checkbox-inline checkboxeach'><input id='checkbox' checked='checked' type='checkbox' name='options[3][]' value='1'>學生活動</label> <label class=' checkbox-inline checkboxeach'><input id='checkbox' checked='checked' type='checkbox' name='options[3][]' value='3'>教師活動</label> <label class=' checkbox-inline checkboxeach'><input id='checkbox' checked='checked' type='checkbox' name='options[3][]' value='47'>教師文康活動</label> <label class=' checkbox-inline checkboxeach'><input id='checkbox' checked='checked' type='checkbox' name='options[3][]' value='48'>進修與研討</label...

xoops模組區塊開發->判斷資料表中分類欄位user可讀取權限顯示資料內容的方法-教學撰寫:徐嘉裕Neil hsu

最近在幫客戶設計開發網站需要做一個tadnews模組區塊的二次開發,遇到一個問題,就是客戶有針對tadnews的分類設定可讀取的權限,例如->校內公告,只有管理員跟註冊會員才能觀看,訪客是看不到的,所以在區塊開發的時候就要判斷哪些分類是瀏覽者所在權限可以觀看的,哪些是不能看的,例如下面的資料表內容: 校內公告的enable_group欄位有一個(1,2)的字串,其他為空值,按照tadnews模組的設計空值為全部都能觀看不設瀏覽條件,有設條件的必須與Xoops的user所屬群組相符才能觀看,所以校內公告只有管理員跟註冊會員才能觀看,接下來就是要寫段code來判斷user具有瀏覽哪些分類的權限。 模組區塊後台建立分類變數假設為$options[1],共選擇要顯示8個分類 所以區塊主函式接收到的 $options[1]變數值會是 1,2,3,4,5,6,7,8 (資料表的ncsn值) 接下來就是要來判斷user所在的群組跟比對enable_group欄位數值的code(判斷瀏覽權限) global $xoopsDB, $xoTheme,$xoopsUser,$xoopsConfig;  //需要global的全域變數 $mydirname = $options[1] ; /*=======區塊分類瀏覽權限設置============*/ //吧後端傳送過來分類字串接割成陣列,在寫成sql語法的where格式 $optionsval=preg_split('/,/',$mydirname); $optionscount=count($optionsval)-1; foreach($optionsval as $key=> $val){ if($optionscount==$key){ $y=''; }else{ $y='||'; } $Searchfield.="`ncsn`=$val {$y}"; } //查詢tad_news_cate資料表中enable_group數值 $sql = "select ncsn,enable_group from " . $xoopsDB-...