比如:文章模型下的時間和日期模型字段-datatime,與當前datetime模型字段相關的文件都在phpcms/content/fields/datetime/文件夾下.
1.phpcms/content/fields/datetime/field_add_form.inc.php:在后臺添加時間和日期模型字段時,相關參數部分表單信息.
- <table cellpadding="2" cellspacing="1" bgcolor="#ffffff">
- <tr>
- <td><strong>時間格式:</strong></td>
- <td>
- <input type="radio" name="setting[fieldtype]" value="date" checked>日期(<?php echo date('Y-m-d');?>)<br />
- <input type="radio" name="setting[fieldtype]" value="datetime_a">日期+12小時制時間(<?php echo date('Y-m-d h:i:s');?>)<br />
- <input type="radio" name="setting[fieldtype]" value="datetime">日期+24小時制時間(<?php echo date('Y-m-d H:i:s');?>)<br />
- <input type="radio" name="setting[fieldtype]" value="int">整數 顯示格式:
- <select name="setting[format]">
- <option value="Y-m-d Ah:i:s">12小時制:<?php echo date('Y-m-d h:i:s');?></option>
- <option value="Y-m-d H:i:s">24小時制:<?php echo date('Y-m-d H:i:s');?></option>
- <option value="Y-m-d H:i"><?php echo date('Y-m-d H:i');?></option>
- <option value="Y-m-d"><?php echo date('Y-m-d');?></option>
- <option value="m-d"><?php echo date('m-d');?></option>
- </select>
- </td>
- </tr>
- <tr>
- <td><strong>默認值:</strong></td>
- <td>
- <input type="radio" name="setting[defaulttype]" value="0" checked/>無<br />
- </td>
- </tr>
- </table>
2.phpcms/content/fields/datetime/field_edit_form.inc.php:在后臺修改時間和日期模型字段時,相關參數部分表單信息:
- <?php defined('IN_PHPCMS') or exit('No permission resources.');?>
- <table cellpadding="2" cellspacing="1" bgcolor="#ffffff">
- <tr>
- <td><strong>時間格式:</strong></td>
- <td>
- <input type="radio" name="setting[fieldtype]" value="date" <?php if($setting['fieldtype']=='date') echo 'checked';?>>日期(<?=date('Y-m-d')?>)<br />
- <input type="radio" name="setting[fieldtype]" value="datetime_a" <?php if($setting['fieldtype']=='datetime_a') echo 'checked';?>>日期+12小時制時間(<?=date('Y-m-d h:i:s')?>)<br />
- <input type="radio" name="setting[fieldtype]" value="datetime" <?php if($setting['fieldtype']=='datetime') echo 'checked';?>>日期+24小時制時間(<?=date('Y-m-d H:i:s')?>)<br />
- <input type="radio" name="setting[fieldtype]" value="int" <?php if($setting['fieldtype']=='int') echo 'checked';?>>整數 顯示格式:
- <select name="setting[format]">
- <option value="Y-m-d Ah:i:s" <?php if($setting['format']=='Y-m-d Ah:i:s') echo 'selected';?>>12小時制:<?php echo date('Y-m-d h:i:s')?></option>
- <option value="Y-m-d H:i:s" <?php if($setting['format']=='Y-m-d H:i:s') echo 'selected';?>>24小時制:<?php echo date('Y-m-d H:i:s')?></option>
- <option value="Y-m-d H:i" <?php if($setting['format']=='Y-m-d H:i') echo 'selected';?>><?php echo date('Y-m-d H:i')?></option>
- <option value="Y-m-d" <?php if($setting['format']=='Y-m-d') echo 'selected';?>><?php echo date('Y-m-d')?></option>
- <option value="m-d" <?php if($setting['format']=='m-d') echo 'selected';?>><?php echo date('m-d')?></option>
- </select> //Vevb.com
- </td>
- </tr>
- <tr>
- <td><strong>默認值:</strong></td>
- <td>
- <input type="radio" name="setting[defaulttype]" value="0" checked/>無<br />
- </td>
- </tr>
- </table>
3.phpcms/content/fields/datetime/form.inc.php:后臺添加文章內容時生成的時間和日期表單需通過此文件中的函數來生成,此文件中的函數會動態緩存到caches/caches_model/caches_data/content_form.class.php文件中,代碼如下:
- function datetime($field, $value, $fieldinfo) {
- extract(string2array($fieldinfo['setting']));
- $isdatetime = 0;
- $timesystem = 0;
- if($fieldtype=='int') {
- if(!$value) $value = SYS_TIME;
- $format_txt = $format == 'm-d' ? 'm-d' : $format;
- if($format == 'Y-m-d Ah:i:s') $format_txt = 'Y-m-d h:i:s';
- $value = date($format_txt,$value);
- $isdatetime = strlen($format) > 6 ? 1 : 0;
- if($format == 'Y-m-d Ah:i:s') {
- $timesystem = 0;
- } else {
- $timesystem = 1;
- }
- } elseif($fieldtype=='datetime') {
- $isdatetime = 1;
- $timesystem = 1;
- } elseif($fieldtype=='datetime_a') {
- $isdatetime = 1;
- $timesystem = 0;
- }
- return form::date("info[$field]",$value,$isdatetime,1,'true',$timesystem);
- }
4.phpcms/content/fields/datetime/input.inc.php,后臺添加文章內容時,對提交的表單數據進行驗證入庫,需要此文件中的函數完成驗證和過濾,此文件中的函數會動態緩存到caches/caches_model/caches_data/content_input.class.php文件中,代碼如下:
- function datetime($field, $value) {
- $setting = string2array($this->fields[$field]['setting']);
- if($setting['fieldtype']=='int') {
- $value = strtotime($value);
- }
- return $value;
- }
5.phpcms/content/fields/datetime/output.inc.php,在前臺顯示文章內容時,對要顯示的內容進行過濾輸出以供前臺顯示,需要此文件中過濾函數,此文件中的函數會動態的緩存到caches/caches_model/caches_data/content_output.class.php文件中,代碼如下:
- function datetime($field, $value) {
- $setting = string2array($this->fields[$field]['setting']);
- extract($setting);
- if($fieldtype=='date' || $fieldtype=='datetime') {
- return $value;
- } else {
- $format_txt = $format;
- } //Vevb.com
- if(strlen($format_txt)<6) {
- $isdatetime = 0;
- } else {
- $isdatetime = 1;
- }
- if(!$value) $value = SYS_TIME;
- $value = date($format_txt,$value);
- return $value;
- }
注意:模型字段表v9_field_data 中setting字段的值一般為字段模型相關參數的設置信息.
6、以copyfrom模型字段為例:
①、添加模型字段時,模型字段的相關屬性表單,主要用來制作復雜的模型字段,如,萬能模型字段、下拉菜單模型字段等等.
field_add_form.inc.php
field_edit_form.inc.php
②、模型字段生成的表單代碼
form.inc.php
③、模型字段的輸入輸出處理函數
input.inc.php 主要用于在模型字段數據入庫時對模型字段的值進行驗證,比如,轉義等等;會輸出到緩存文件caches/caches_model/caches_data/content_input.class.php.
output.inc.php 主要用于處理前臺要顯示的模型字段數據,比如,轉義等等,會輸出到緩存文件caches/caches_model/caches_data/content_output.class.php.
7.在設計模型前,我們首先要想好前臺的內容顯示是什么,當我們確認了前臺要顯示什么內容的時候,模型基本也就出來了.
模型復制,你可以對系統內置的任意模型,專題除外,進行復制產生一個新的模型,在新模型你可以自由增加字段,以達到在原來模型的基礎上的擴展;
分表存儲,允許你在定義或模型復制時指定不同的主表和附加表,從而實現徹底的分表存儲;
內容模型指的是網站根據不同欄目有不同需求,例如說我們發布一些普通文章。它只是需要到文章模型就夠了。但是例如我們的欄目是圖片類型,而且一篇圖片文章是一組圖片組成的,那這個時候圖片類型就更加適合了。而說到軟件類型,顧名思義,它針對的是給廣大用戶下載用,它發布的文章不僅僅只是介紹內容而已,往往還帶有下載地址,還有軟件信息等。商品類的是涉及到產品價格購買流程,分類信息涉及到的往往是一些地區分類,或者行業性分類。
所以說不同的模型針對的對象是不一樣的,這個得根據網站具體的欄目去定。而且dedecms的內容模型主要是針對開發者去用的,對于用戶來說,可以不去了解其作用,因為只要知道怎么發布和普通維護就可以了。
pc系統是很靈活的,在織夢系統中有內容模型這個概念,不同內容模型可以用來構建不同內容形式的站點,在系統中自帶了以下幾種模型:普通文章、圖集、軟件、商品、分類信息、專題。通過系統自帶的模型,我們可以用來構建不同類型的站點,例如:使用圖集可以做一個圖片站,用軟件模型構建一個軟件下載站點。
當然以上隨系統附帶的模型被稱為系統模型,用戶可以自己定義一些模型,比如圖書、音樂專輯等,自定義了這些模型才可以構建更多內容形式的站點,本篇將講述如何使用系統的自定義模型管理功能來實現內容模型的構建。
模型的建立在于你的網站要顯示什么樣子的內容.
新聞熱點
疑難解答