0%

[技能檢定]題組一 步驟20 完成更多最新消息功能

當設定為顯示的最新消息超過五筆時會在首頁出現 More... 的連結,並導引使用者跳轉到 index.php?do=news 頁面。

列出最新消息筆數的做法和首頁是一樣的,只是這邊有要求一頁五筆,且需有分頁的功能。

原本的版型檔案中也有附一段js的程式是用來顯示更多最新消息的彈出視窗的,原理和首頁的程式碼幾乎一樣,只是加上了垂直位置的變化而已,我們直接套用該程式就可以了,不用另外自己寫程式。

NEWS-前台更多最新消息顯示區

/front/news.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<!--正中央-->
<h3>更多最新消息顯示區</h3>
<hr>
<?php
//建立分頁所需的變數
$total=$DB->count(['sh'=>1]);
$div=5;
$pages=ceil($total/$div);
$now=$_GET['p']??1;
$start=($now-1)*$div;

//取得當前頁所需的資料
$news=$News->all(['sh'=>1]," limit $start,$div");
?>
<!--使用<ol>標籤的特性來設定列表資料的起始值-->
<ol start='<?=$start+1;?>'>
<?php
//利用迴圈來讀出資料內容
foreach($news as $n){
echo "<li class='sswww'>";
echo mb_substr($n['text'],0,20);
echo "<div class='all' style='display:none'>";
echo $n['text'];
echo "</div>";
echo "...</li>";
} ?>
</ol>
<div class="cent">
<?php
if($now>1){
$prev=$now-1;
echo "<a href='?do=$do&p=$prev'> < </a>";
}

for($i=1;$i<=$pages;$i++){
$fontsize=($now==$i)?'24px':'16px';
echo "<a href='?do=$do&p=$i' style='font-size:$fontsize'> $i </a>";
}

if($now<$pages){
$next=$now+1;
echo "<a href='?do=$do&p=$next'> > </a>";
}
?>
</div>

如果發現滑鼠移到最新消息上沒有彈出視窗時,
index.phpbackend.php 找找是否有下列的js程式碼片段,複製到 /front/news.php 的html碼下方即可

彈出視窗程式碼片段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<div id="alt" style="position: absolute; width: 350px; min-height: 100px; 
word-break:break-all; text-align:justify; background-color: rgb(255, 255, 204);
top: 50px; left: 400px; z-index: 99; display: none; padding: 5px;
border: 3px double rgb(255, 153, 0); background-position: initial initial;
background-repeat: initial initial;">
</div>
<script>
$(".sswww").hover(
function() {

$("#alt").html('<pre>' + $(this).children(".all").html() + '</pre>').css({
"top": $(this).offset().top - 50
})
$("#alt").show()
}
)
$(".sswww").mouseout(
function() {
$("#alt").hide()
}
)
</script>