<span>/*</span><span> ******* 环境:Apache2.2.8 ( 2.2.17 ) + PHP5.2.6 ( 5.3.3 ) + MySQL5.0.51b ( 5.5.8 ) + jQuery-1.8<br /> ******* 其它组件:jQuery-1.8.3.min.js + Smarty 3.1.18 + TinyMCE 4.1.6 ******* Date:2014-10-20 ******* Author:小dee ******* Blog:http://www.cnblogs.com/dee0912/ </span><span>*/</span>
前に書かれている:
1. リストページングであっても、記事ページングであっても、現在のページの前後のオフセットをどのように扱うか、つまり、状況に応じてどのページ番号要素を表示し、どの要素を表示しないかを考慮することが重要です。 ) と計算 (ページ番号の表示)、これらの主要なメソッドは URL ページング中にページング クラス ファイルに書き込まれ、ajax ページング中に js ファイルに書き込まれます。
2. Ajax ページングを使用する場合、live() メソッドを使用して、jQuery によって動的に追加された要素もイベント処理関数 (ajax_arc.js ファイル) にバインドできるようにします
この機能モジュールの主なファイルには、長い記事ページング クラス arc_page.class.php と、Ajax 記事ページング用の ajax_arc.js が含まれています。含まれる関数は次のとおりです。
1. 記事のコンテンツは URL を使用してページネーションできます。ページネーション後の URL パラメータは p です。
2. Ajax を使用して記事のコンテンツをページ分割してページ番号を表示できます。3. リストページングクラスと同様に、「前のページ」と「次のページ」のテキストを変更できます
その他: このモジュールのページング機能を使用すると、エディターはページング用に手動で改ページを挿入できます。
このモジュールは
TinyMCE (4.1.6)エディタ
と一緒に使用されますTinyMCE エディターのダウンロード アドレス: http://www.tinymce.com/download/download.php、tinymce フォルダーを解凍してルート ディレクトリに配置します。 言語パックのダウンロード アドレス: http://www.tinymce.com/i18n/index.php、中国語 (中国) を選択し、langs フォルダー内の zh_CN.js を解凍して tinymce/langs ディレクトリに置きます。 tinymce/tinymce.min.js ファイルをテンプレートに導入します。
その他の利用方法についてはブログをご覧ください:http://www.cnblogs.com/nkxyf/p/3883586.html
レンダリング:
URLのページネーション
写真1.
写真2.
写真 3.
ajax ページネーション
写真1.
写真2.
モジュールファイル構造図:
ROOT:
§─conn
│ └─conn.php│§─libs -- スマートなライブラリ │
§─templates│ │
│ §─add_article.html -- 記事テンプレートを追加
│ §─view_article .html -- フロントエンド記事ページのテンプレート
│ §─list.html -- フロントエンド リスト ページのテンプレート
│ §─success.html -- 操作が成功したときにテンプレートを表示します
│ §─error.html - - 操作失敗時にテンプレートを表示
│ │
│ ├─css
│ │
│ §─images
│ │ └─loading.gif -- ajax ページング時にリクエストデータを受信する前のローディング画像
│ │
│ ━─js
│ │
│ § ─jquery-1.8.3.min.js
│ │
│ §─showTime.js -- 操作成功時または失敗時のカウントダウンジャンプファイル
│ │
│ §─ajax_arc .js -- ページング方式が ajax の場合 記事ページテンプレートで読み込まれる js view_article.html
│ │
│ └─ajax.js -- ページングモードが ajax の場合、リストページテンプレート list.html で読み込まれる js
│
├─templates_c
│
§─tinymce -- エディター
│
§─init.inc.php -- Smarty 設定ファイル
│
├─list_page.class.php -- リスト・ページング・クラス
│
§─ arc_page.class.php -- 記事ページング クラス
│
§─list.php -- リスト ページ
│
§─view_article.php -- 記事ページ
│
├─ajaxarc.php -- 実行中にリクエストを受け入れる PHP ファイル記事ページの ajax ページネーション
│
§─ajaxpage.php - - リストページの ajax ページネーション中に、要求された php ファイルを受け入れます
│
└─ins.php -- 記事 php ファイルを追加します
メインコード:
記事を追加する (templates/add_article.html、add_article.php、ins.php)
templates/add_article.html
1 DOCTYPE html>
2 <html>
3 <頭>
4 <メタcharset="utf-8">
5 <タイトル>PHP文章分页类タイトル>
6 <link href="<{$Template_Dir}>/css/style_control.css" rel="スタイルシート" type="text/css 「>」
7 <スクリプトsrc="<{$Template_Dir}>/js/jquery-1.8.3.min.js">スクリプト> ;
8
9
10 <スクリプトsrc="<{$ROOT_URL}>tinymce/tinymce.min.js">スクリプト>
11 <スクリプト>
12
13 tinymce.init({
14
15 セレクター:'#content'、//编辑エリア
16 テーマ: 「モダン」、//主题
17 言語: "zh_cn"、//语言(中文需要到官网下ダウンロード)
18
19 幅:800, //编辑框宽
20 身長: 300、//编辑框高
21
22 プラグイン: [
23
24 "advlist 自動リンク リスト リンク イメージ チャームマップ 印刷プレビュー hr アンカー改ページ",
25 "searchreplace wordcount Visualblocks Visualchars code fullscreen",
26 "挿入日時メディア非破壊保存テーブルコンテキストメニューの方向性",
27 「顔文字テンプレートペーストテキストカラーカラーピッカーテキストパターン」
28 ]、
29
30 //第一行工具栏
31 ツールバー1: "insertfile undo redo |styleselect |bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
32
33 //第二行工具栏
34 ツールバー2: 「印刷プレビューメディア | 前カラーバックカラー絵文字」、
35
36 image_advtab: 本当、
37
38 //初回提供の默认格式
39 style_formats: [
40 {タイトル: '太字'、インライン: 'b'}、
41 {タイトル: '赤いテキスト'、インライン: 'スパン'、スタイル: {color: ' #ff0000' }}、
42 {タイトル: 'レッドヘッダー'、ブロック: 'h1'、スタイル: {color: ' #ff0000' }}、
43 {タイトル: '例 1'、インライン: 'スパン'、クラス: '例1'}、
44 {タイトル: '例 2'、インライン: 'スパン'、クラス: '例2'}、
45 {title: 'テーブルスタイル'}、
46 {タイトル: 'テーブル行 1'、セレクター: 'tr'、クラス: ' テーブル行1'}
47 ]
48 });
49
50 スクリプト>
51 頭>
52 <ボディ>
53
54 <フォームid="arc_form"アクション="ins.php"メソッド="post">
55
56 标题:<br />
57 <input type="text" id="title" name="title" autocomplete="off"/&gと; <br /><br />
58 内容:<br />
59 <テキストエリアid="コンテンツ"名前="コンテンツ">テキストエリア>><br /> ;
60 <input type="button" id="sub" value="提交" />
61
62 フォーム>
63
64 ボディ>
65 <スクリプト>
66
67 $(関数(){
68
69 $("#sub").click(function(){
70
71 if($("#title").val() !=""){
72
73 $("#arc_form").submit();
74 }else{
75
76 alert("标题は空");
77 }
78 });
79 });
80 スクリプト>
81 html>
コードを表示
add_article.php
1 php
2
3 必須 'conn/conn.php';
4 require 'init.inc.php';
5
6 if(isset($_POST['title']) && !empty($_POST['title'])){
7
8 if(get_magic_quotes_gpc()){
9
10 $title = trim($_POST['title']);
11
12 }他{
13
14 $title = addslashes(trim($_POST['title']));
15 }
16 }
17
18 if(isset($_POST['content']) && !empty($_POST['content'])){
19
20 $content = htmlspecialchars($_POST['content']);
21 }
22
23 関数 check_input($value){
24
25 // 如果不是数字则加引号
26 if (!is_numeric($value)){
27
28 $value = mysql_real_escape_string($value);
29 }
30 返品 $value;
31 }
32
33 $title = check_input($title);
34
35
36 //插入据
37 $sql = "アーカイブに挿入 (タイトル、コンテンツ、公開日) 値('".$title."','".$content."','".time( )."')";
38
39
40 if($conne->uidRst($sql) == 1){
41
42 //当分の間セッションに残っています
43 $_SESSION['t'] = $t;
44
45 $smarty->assign("Template_Dir",Template_Dir);
46 $smarty->assign("ROOT_URL",$ROOT_URL);
47
48 //ジャンプ转パラメータ
49 $smarty->assign("do","追加");
50 $smarty->assign("addr","列表页");
51 $smarty->assign("url","list.php");
52
53 $smarty->display("success.html");
54 }他{
55
56 $smarty->assign("Template_Dir",Template_Dir);
57 $smarty->assign("ROOT_URL",$ROOT_URL);
58
59 //ジャンプ转パラメータ
60 $smarty->assign("do","追加");
61 $smarty->assign("addr","追加页");
62 $smarty->assign("url","add_article.php");
63
64 $smarty->display("error.html");
65 }
コードを表示
TinyMCE コンバータは、ユーザーが入力したコンテンツを自動的に前後に追加します。 文字だけでなく、写真、ビデオなどの富メディアも含まれます。 ,如:
arc_page.class.php
このファイルには、改ページが含まれているかどうかを検出するメソッドが含まれています。改ページが含まれている場合、受信コンテンツは改ページに従って分割され、そうでない場合は文字列が返されます。
templates/js/ajax_arc.js
1 $(関数(){ 2 3 //初期表示「次のページ」「最後のページ」 4 showFloPage(); 5 6 //元のliを削除してgifを挿入します 7 関数 ajaxpre(){ 8 9 //GIFを挿入 10 $loading = $(""); 11 12 $("#content").html($loading); 13 } 14 15 // ページめくり情報を非表示にする 16 関数 infoAct(){ 17 18 //現在のページが最後のページに到達すると、「次のページ」と「最後のページ」 19 if(parseInt($("#pageNow").val()) == parseInt($("#totalPage").val())){ 20 21 $("#flo_page").hide(); 22 $("#last_page").hide(); 23 24 $("#pre_page").show(); 25 $("#first_page").show(); 26 27 }else if(parseInt($("#pageNow").val()) == 1){ //現在のページが到着したときに「ホーム」と「前のページ」を非表示にします 28 29 $("#pre_page").hide(); 30 $("#first_page").hide(); 31 32 $("#flo_page").show(); 33 $("#last_page").show(); 34 35 }他{ 36 37 $("#pre_page").show(); 38 $("#first_page").show(); 39 40 $("#flo_page").show(); 41 $("#last_page").show(); 42 } 43 } 44 45 //「次のページ」と「最後のページ」をクリックすると、「ホーム」と「前のページ」が表示されます 46 関数 showPage(){ 47 48 //ホームページ 49 $firstPage = $("ホームページ"); 50 51 if($("#first_page").length == 0){ 52 $firstPage.insertBefore($(".ajaxpage:first")); 53 } 54 55 //前のページ 56 $pre_page = $(""+$preFonts+""); 57 58 if($("#pre_page").length == 0){ 59 $pre_page.insertBefore($(".ajaxpage:first")); 60 } 61 } 62 63 //「前のページ」と「ホームページ」をクリックすると、「次のページ」と「最後のページ」が表示されます 64 関数 showFloPage(){ 65 66 //次のページ 67 $flo_page = $(""+$preFonts+""); 68 69 if($("#flo_page").length == 0){ 70 $flo_page.insertAfter($(".ajaxpage:last")); 71 } 72 73 //最後のページ 74 $lastPage = $("最後のページ"); 75 76 if($("#last_page").length == 0){ 77 $lastPage.insertAfter($("#flo_page")); 78 } 79 } 80 81 //ajaxリクエストデータ 82 関数 ajaxpost(){ 83 84 $.post("ajaxarc.php",{ 85 86 pageNow : parseInt($("#pageNow").val()), 87 id : parseInt($("#id").val()), 88 ページ区切り : $("#pagebreak").val() 89 },function(data,textStatus){ 90 91 //gifを削除 92 $(".loading").remove(); 93 94 $("#content").html(data); 95 }); 96 } 97 98 99 //初期値=1 100 apagenow = parseInt($("#pageNow").val()); 101 102 //ajax 「ホームページ」 最初は「ホームページ」と「前のページ」が表示されないため、「ホームページ」は「次のページ」と「最後のページ」のクリック関数でしか呼び出せません」と「前ページ」機能 103 関数 firstPageAct(){ 104 105 if($("#first_page").is(":visible")){ 106 107 $("#first_page").live('click',function(){ 108 109 //更新する前にを削除してください 110 ajaxpre(); 111 112 //ページが 1 に設定されました 113 $("#pageNow").val(1); 114 apagenow = parseInt($("#pageNow").val()); 115 116 //ページ番号情報を変更します 117 $("#pagenow_info").html(" 現在のページ 1"); 118 119 //ポストオフセットページング 120 flopage($("#pageNow").val()); 121 122 //ajaxリクエストデータ 123 ajaxpost(); 124 125 //「ホーム」に到達した後、「ホーム」と「前のページ」を非表示にします 126 infoAct(); 127 128 //ページ番号にスタイルを追加します 129 セルページ(); 130 }); 131 } 132 } 133 134 関数 lastPageAct(){ 135 136 if($("#last_page").is(":visible")){ 137 138 $("#last_page").live('click',function(){ 139 140 //更新する前にを削除してください 141 ajaxpre(); 142 143 //ページが 1 に設定されました 144 $("#pageNow").val($("#totalPage").val()); 145 apagenow = parseInt($("#pageNow").val()); 146 147 //ページ番号情報を変更します 148 $("#pagenow_info").html(" 現在のページ "+apagenow+""); 149 150 //ポストオフセットページング 151 flopage($("#pageNow").val()); 152 153 if($("#first_page").is(":hidden") || $("#first_page").length == 0){ 154 155 //「ホーム」と「次のページ」が表示されます 156 showPage(); 157 showFloPage(); 158 firstPageAct(); 159 lastPageAct(); 160 prePageAct(); 161 }162 163 //ajaxリクエストデータ 164 ajaxpost(); 165 166 //「ホーム」に到達したら「ホーム」と「前のページ」を非表示にする 167 infoAct(); 168 169 //ページ番号にスタイルを追加します 170 セルページ(); 171 }); 172 } 173 } 174 175 //ajax "前のページ" 176 関数 prePageAct(){ 177 178 if($("#pre_page").is(":visible")){ 179 180 $("#pre_page").click(function(){ 181 182 //更新する前にを削除してください 183 ajaxpre(); 184 185 //「前のページ」をクリックするたびに、隠しドメインの値が -1 になります 186 if(parseInt(apagenow) != 1){ 187 188 apagenow = parseInt(apagenow) - parseInt(1); 189 } 190 191 $("#pageNow").val(apagenow); 192 193 //前後オフセットページング 194 flopage($("#pageNow").val()); 195 196 //隠しドメインのページ番号の値が1より大きい場合 197 if(parseInt($("#pageNow").val()) > parseInt(1)){ 198 199 //ページ番号情報を変更します 200 $("#pagenow_info").html(" 現在のページ"+$("#pageNow").val()+"ページ"); 201 } 202 203 //ajaxリクエストデータ 204 ajaxpost(); 205 206 if($("#first_page").is(":hidden") || $("#first_page").length == 0){ 207 208 //「ホーム」と「次のページ」が表示されます 209 showPage(); 210 showFloPage(); 211 firstPageAct(); 212 lastPageAct(); 213 prePageAct(); 214 } 215 216 //最初のページの「ホーム」と「前ページ」を非表示にする 217 infoAct(); 218 219 //ページ番号にスタイルを追加します 220 セルページ(); 221 }); 222 223 } 224 }225 226 //ajax「次のページ」 227 if($("#flo_page").length>0){ 228 229 // aのhref属性を削除します 230 $("#flo_page").removeAttr("href"); 231 232 $("#flo_page").live('click',function(){ 233 234 ajaxpre(); 235 236 //「次へ」をクリックするたびに、隠しドメインの値が+1されます 237 apagenow = parseInt(apagenow) + parseInt(1); 238 239 $("#pageNow").val(apagenow); 240 241 //ポストオフセットページング 242 flopage($("#pageNow").val()); 243 244 //隠しドメインのページ番号の値が総ページ番号未満の場合 245 if(parseInt($("#pageNow").val()) <= parseInt($("#totalPage").val())){ 246 247 //ページ番号情報を変更します 248 $("#pagenow_info").html(" 現在のページ"+$("#pageNow").val()+"ページ"); 249 250 //ajaxリクエストデータ 251 ajaxpost(); 252 } 253 254 //「次のページ」をクリックすると「ホーム」が表示されます 255 if($("#first_page").is(":hidden") || $("#first_page").length == 0){ 256 257 //「ホーム」と「次のページ」が表示されます 258 showPage(); 259 showFloPage(); 260 firstPageAct(); 261 lastPageAct(); 262 prePageAct(); 263 } 264 265 //「次のページ」と「最後のページ」を非表示にする 266 infoAct(); 267 268 //ページ番号にスタイルを追加します 269 セルページ(); 270 271 戻る false //クリックしてページをめくってください 272 }); 273 } 274 275 //ajax「最後のページ」 276 if($("#last_page").length>0){ 277 278 // aのhref属性を削除します 279 $("#last_page").removeAttr("href"); 280 281 $("#last_page").live('click',function(){ 282 283 ajaxpre(); 284 285 //隠しドメインの現在のページ情報を変更します 286 apagenow = parseInt($("#totalPage").val()); 287 $("#pageNow").val(apagenow); 288 289 //ページ番号情報を変更します 290 $("#pagenow_info").html(" 現在のページ "+$("#totalPage").val()+"ページ"); 291 292 //ポストオフセットページング 293 flopage($("#pageNow").val()); 294 295 //ajaxリクエストデータ 296 ajaxpost(); 297 298 //「最後のページ」をクリックすると「ホーム」が表示されます 299 300 if($("#first_page").length == 0){ 301 302 showPage(); 303 showFloPage(); 304 firstPageAct(); 305 lastPageAct(); 306 prePageAct(); 307 }308 309 infoAct(); 310 311 //ページ番号にスタイルを追加します 312 セルページ(); 313 314 戻る false; 315 }); 316 } 317 318 //タグジャンプをキャンセル 319 $("#first_page").live('click',function(){ 320 321 戻る false; 322 }); 323 324 $("#pre_page").live('click',function(){ 325 326 戻る false; 327 }); 328 329 //特定のページ番号のhrefを削除します 330 $(".ajaxpage").removeAttr("href"); 331 332 333 //live() を使用すると、jQuery によって動的に追加された要素をイベント ハンドラーにバインドできます 334 $(".ajaxpage").live('click', function(){ 335 336 ajaxpre(); 337 338 //「次へ」をクリックするたびに、隠しフィールドの値が現在のaタグで表示されているページ番号に変わります 339 apagenow = $(this).text(); 340 341 $("#pageNow").val(apagenow); 342 343 //ポストオフセットページング 344 flopage($("#pageNow").val()); 345 346 //ページ番号情報を変更します 347 $("#pagenow_info").html(" 現在のページ"+$("#pageNow").val()+"ページ"); 348 349 $(".ajaxpage").removeClass("selected"); 350 351 $(this).each(function(){ 352 353 if($(this).text() == $("#pageNow").val()){ 354 355 $(this).addClass("選択済み"); 356 } 357 }) 358 359 if($("#first_page").is(":hidden") || $("#first_page").length == 0){ 360 361 //「ホーム」と「次のページ」が表示されます 362 showPage(); 363 showFloPage(); 364 firstPageAct(); 365 lastPageAct(); 366 prePageAct(); 367 } 368 369 infoAct(); 370 371 //ページ番号にスタイルを追加します 372 セルページ(); 373 374 ajaxpost(); 375 }); 376 377 //「前のページ」「次のページ」ページ番号にスタイルを追加します 378 関数 selpage(){ 379 380 //ページ番号にスタイルを追加します 381 $(".ajaxpage").removeClass("selected"); 382 $(".ajaxpage").each(function(){ 383 384 if($(this).text() == $("#pageNow").val()){ 385 386 $(this).addClass("選択済み"); 387 } 388 }) 389