xoops_version.php
裡面
//---區塊設定---//
$modversion['blocks'] = [
[
'file' => 'submission_new.php',
'name' => _MI_SUBMISSION_NEW_BLOCK_NAME,
'description' => _MI_SUBMISSION_NEW_BLOCK_DESC,
'show_func' => 'submission_new',
'template' => 'submission_new.tpl',
'edit_func' => 'submission_new_edit',
'options' => '10|1',
],
[
'file' => 'submission_list.php',
'name' => _MI_SUBMISSION_LIST_BLOCK_NAME,
'description' => _MI_SUBMISSION_LIST_BLOCK_DESC,
'show_func' => 'submission_list',
'template' => 'submission_list.tpl',
'edit_func' => 'submission_list_edit',
'options' => '10|1',
],
];
edit_func
及 options
是有區塊設定界面才需要,options
的預設值是用 |
隔開。
blocks/submission_list.php
先看「投稿主題一覽」的編輯函數 submission_list_edit($options)
,預設值用 $options
陣列傳入
//區塊編輯函式 (submission_list_edit)
function submission_list_edit($options)
{
//$options[0] : "顯示數量"預設值
$options[0] = $options[0] ? (int) $options[0] : 10;
//$options[1] : "僅可投稿"預設值
$checked_1_0 = ($options[1] == '1') ? 'checked' : '';
$checked_1_1 = ($options[1] == '0') ? 'checked' : '';
$form = "
<ol class='my-form'>
<!--顯示數量-->
<li class='my-row'>
<lable class='my-label'>顯示數量</lable>
<div class='my-content'>
<input type='text' name='options[0]' value='{$options[0]}' class='my-input'>
</div>
</li>
<!--僅可投稿-->
<li class='my-row'>
<lable class='my-label'>僅可投稿</lable>
<div class='my-content'>
<input type='radio' name='options[1]' value='1' $checked_1_0>
" . _YES . "
<input type='radio' name='options[1]' value='0' $checked_1_1>
" . _NO . "
</div>
</li>
</ol>
";
return $form;
}
submission_list($options)
,設定值一樣用 $options
陣列傳入,然後根據 $options
的值,調整對應的程式碼
//區塊主函式 (submission_list)
function submission_list($options)
{
global $xoopsDB;
//{$options[0]} : 顯示數量
$block['options0'] = isset($options[0]) ? (int) $options[0] : 10;
//{$options[1]} : 僅可投稿
$block['options1'] = isset($options[1]) ? (int) $options[1] : 1;
$where = $block['options1'] ? 'WHERE `start` <= NOW() AND `end` >= NOW()' : '';
$sql = "SELECT * FROM `" . $xoopsDB->prefix("submission") . "` $where ORDER BY `end` DESC LIMIT {$options[0]}";
$result = Utility::query($sql);
$content = [];
while ($all = $xoopsDB->fetchArray($result)) {
$content[] = $all;
}
$block['content'] = $content;
return $block;
}
LIMIT
來限制筆數WHERE `start` <= NOW() AND `end` >= NOW()
templates/blocks/submission_list.tpl
,有需要可以調整之(若有連結需用完整網址,不可用相對位置)。blocks/submission_new.php
先看「最新投稿」的編輯函數 submission_new_edit($options)
,預設值用 $options
陣列傳入
//區塊編輯函式 (submission_new_edit)
function submission_new_edit($options)
{
//$options[0] : "顯示數量"預設值
$options[0] = $options[0] ? (int) $options[0] : 10;
//$options[1] : "僅獲選"預設值
$checked_1_0 = ($options[1] == '1') ? 'checked' : '';
$checked_1_1 = ($options[1] == '0') ? 'checked' : '';
$form = "
<ol class='my-form'>
<!--顯示數量-->
<li class='my-row'>
<lable class='my-label'>顯示數量</lable>
<div class='my-content'>
<input type='text' name='options[0]' value='{$options[0]}' class='my-input'>
</div>
</li>
<!--僅獲選-->
<li class='my-row'>
<lable class='my-label'>僅獲選</lable>
<div class='my-content'>
<input type='radio' name='options[1]' value='1' $checked_1_0>
" . _YES . "
<input type='radio' name='options[1]' value='0' $checked_1_1>
" . _NO . "
</div>
</li>
</ol>
";
return $form;
}
submission_new($options)
,設定值一樣用 $options
陣列傳入,然後根據 $options
的值,調整對應的程式碼
//區塊主函式 (submission_new)
function submission_new($options)
{
global $xoopsDB;
//{$options[0]} : 顯示數量
$block['options0'] = isset($options[0]) ? (int) $options[0] : 10;
//{$options[1]} : 僅獲選
$block['options1'] = isset($options[1]) ? (int) $options[1] : 1;
$and = $block['options1'] ? "AND `award` != '' " : '';
$sql = "SELECT * FROM `" . $xoopsDB->prefix("submission_data") . "` WHERE `review_time` != '0000-00-00 00:00:00' AND `award` != 'x' $and ORDER BY `id` DESC LIMIT {$options[0]}";
$result = Utility::query($sql);
$content = [];
while ($all = $xoopsDB->fetchArray($result)) {
$content[] = $all;
}
$block['content'] = $content;
return $block;
}
LIMIT
來限制筆數AND `award` != ''
,一般也要列出已經審核過,且不是「不通過」的文章 WHERE `review_time` != '0000-00-00 00:00:00' AND `award` != 'x'
templates/blocks/submission_new.tpl
,需要其連結位置為:index.php?op=submission_data_show&id=<{$data.id}>
<div class="card">
<ul class="list-group list-group-flush">
<{foreach from=$block.content item=data}>
<li class="list-group-item">
<a href="<{$xoops_url}>/modules/submission/index.php?op=submission_data_show&id=<{$data.id}>"><{$data.title}></a>
</li>
<{/foreach}>
</ul>
</div>