posts - 4,comments - 30,trackbacks - 0

          按: 本教程非原創(chuàng),版權(quán)歸Keliix06所有.

          快速創(chuàng)建一個(gè)簡單的MAMBO組件
          作者:Keliix06
          譯者:Applebee
          本教程將安裝一個(gè)“Hello World”組件,你可以去編輯或者加入你自己想要的消息。本教程不涉及如何設(shè)置分類,搜索功能和頁面導(dǎo)航。并假定你對PHP有一個(gè)基本的了解。
          創(chuàng)建本組件將用到以下文件:
          hello_world.xml- 組件安裝配置文件
          hello_world.php- 顯示界面信息
          admin.hello_world.php- 數(shù)據(jù)庫查詢和設(shè)置HTML輸出
          admin.hello_world.html.php- 控制所有的輸出
          class.hello_world.php- 數(shù)據(jù)庫類文件
          install.hello_world.php- 安裝文件
          uninstall.hello_world.php- 卸載文件
          toolbar.hello_world.php- 設(shè)置工具欄
          toolbar.hello_world.html.php- 控制工具欄的輸出

          現(xiàn)在我們已經(jīng)清楚了要制作什么樣的文件,下面我們一個(gè)文件一個(gè)文件的介紹它們?nèi)绾螌?shí)現(xiàn)各自的功能。


          Hello_world.xml- 組件安裝配置文件

          <?xml version="1.0" ?>
          <mosinstall type="component">
          <name>hello_world</name>
          <creationDate>04/15/2004</creationDate>
          <author>Doyle Lewis</author>
          <copyright>This component in released under the GNU/GPL License</copyright>
          <authorEmail> support@mambo-hosting.com

          </authorEmail>
          <authorUrl>www.mambo-hosting.com</authorUrl>
          <version>1.0</version>
          <files>
          <filename>hello_world.php</filename>
          </files>
          <install>
          <queries>
          <query>DROP TABLE IF EXISTS `mos_hello_world`;</query>
          <query>CREATE TABLE `mos_hello_world` (
          `id` INT NOT NULL AUTO_INCREMENT,
          `text` TEXT NOT NULL,
          `published` TINYINT(1) NOT NULL,
          PRIMARY KEY (`id`)
          )
          </query>
          </queries>
          </install>
          <uninstall>
          <queries>
          <query>DROP TABLE IF EXISTS `mos_hello_world`;</query>
          </queries>
          </uninstall>
          <installfile>
          <filename>install.hello_world.php</filename>
          </installfile>
          <uninstallfile>
          <filename>uninstall.hello_world.php</filename>
          </uninstallfile>
          <administration>
          <menu>Hello World</menu>
          <submenu>
          <menu act="all">Show Text</menu>
          </submenu>
          <files>
          <filename>admin.hello_world.php</filename>
          <filename>admin.hello_world.html.php</filename>
          <filename>class.hello_world.php</filename>
          <filename>toolbar.hello_world.php</filename>
          <filename>toolbar.hello_world.html.php</filename>
          </files>
          </administration>
          </mosinstall>

          我們來看它是如何工作的:

          <?xml version="1.0" ?>
          XML的開頭語,為所有XML文件所必需。

          <mosinstall type="component">
          告訴MAMBO將開始安裝一個(gè)組件

          <name>hello_world</name>
          <creationDate>04/15/2004</creationDate>
          <author>Doyle Lewis</author>
          <copyright>This component in released under the GNU/GPL License</copyright>
          <authorEmail> support@mambo-hosting.com

          </authorEmail>
          <authorUrl>www.mambo-hosting.com</authorUrl>
          <version>1.0</version>
          組件的詳細(xì)信息,所有有關(guān)組件的信息只能在這加入。

          <files>
          <filename>hello_world.php</filename>
          </files>
          所有需要安裝在組件界面需要的文件,將被安裝到components/com_hello_world/目錄下。

          <install>
          <queries>
          <query>DROP TABLE IF EXISTS `mos_hello_world`;</query>
          <query>CREATE TABLE `mos_hello_world` (
          `id` INT NOT NULL AUTO_INCREMENT,
          `text` TEXT NOT NULL,
          `published` TINYINT(1) NOT NULL,
          PRIMARY KEY (`id`)
          )
          </query>
          </queries>
          </install>
          安裝組件所需的數(shù)據(jù)庫查詢語句,本組件中將創(chuàng)建一個(gè)有三個(gè)字段的表。你可以運(yùn)行phpMyadmin來得到一所需的查詢語句的,這是一個(gè)很簡單易行的辦法。

          <uninstall>
          <queries>
          <query>DROP TABLE IF EXISTS `mos_hello_world`;</query>
          </queries>
          </uninstall>
          卸載組件所需的查詢語句,這里只是簡單的刪除了數(shù)據(jù)庫表格。

          <installfile>
          <filename>install.hello_world.php</filename>
          </installfile>
          <uninstallfile>
          <filename>uninstall.hello_world.php</filename>
          </uninstallfile>
          這幾行代碼是用來說明安裝和卸載組件所用到的文件名。

          <administration>
          從這行起所有的東東將安裝到管理員目錄下。

          <menu>Hello World</menu>
          這行將被顯示到管理面板中的“組件”的下拉菜單中。

          <submenu>
          <menu act="all">Show Text</menu>
          </submenu>
          這幾行代碼將產(chǎn)生一個(gè)二級菜單(相對于剛才產(chǎn)生的Hello World菜單選項(xiàng)),這也將告訴MAMBO你的組件將有些什么功能。
          <files>
          <filename>admin.hello_world.php</filename>
          <filename>admin.hello_world.html.php</filename>
          <filename>class.hello_world.php</filename>
          <filename>toolbar.hello_world.php</filename>
          <filename>toolbar.hello_world.html.php</filename>
          </files>
          所有將被安裝到administrator/components/com_hello_world/目錄下的文件。

          </administration>
          </mosinstall>
          結(jié)束MAMBO組件安裝

          hello_world.php-界面顯示文件

          <?php
          //hello_world Component//
          /**
          * Content code
          * @package hello_world
          * @Copyright (C) 2004 Doyle Lewis
          * @ All rights reserved
          * @ hello_world is Free Software
          * @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
          * @version 1.0
          **/
          defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
          global $database;
          $query = "SELECT * FROM mos_hello_world LIMIT 1";
          $database->setQuery( $query );
          $rows = $database->loadObjectList();
          $row = $rows[0];
          echo $row->text;
          ?>

          讓我們來看一下這個(gè)文件。

          defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
          這個(gè)將驗(yàn)證是否由MAMBO來調(diào)用此文件,防止非法直接運(yùn)行本文件,對于安全性非常重要。

          global $database;
          將$database設(shè)置為全局變量,你可以在你的函數(shù)中使用$database。
          $query = "SELECT * FROM mos_hello_world LIMIT 1";
          輸出mos_hello_world表中的第一個(gè)記錄。

          $database->setQuery( $query );
          用database類中的數(shù)據(jù)庫查詢函數(shù)調(diào)用上述的查詢。

          $rows = $database->loadObjectList();
          用變量$rows 以數(shù)列方式存儲查詢結(jié)果。

          $row = $rows[0];
          用變量 $row 存儲$row中的第一個(gè)元素。

          echo $row->text;
          打印輸出text.

          admin.hello_world.php -數(shù)據(jù)庫查詢和設(shè)置HTML輸出
          <?php
          //hello_world Component//
          /**
          * Content code
          * @package hello_world
          * @Copyright (C) 2004 Doyle Lewis
          * @ All rights reserved
          * @ hello_world is Free Software
          * @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
          * @version 1.0
          **/
          defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
          require_once($mosConfig_absolute_path."/administrator/components/com_hello_world/class.hello_world.php");
          require_once( $mainframe->getPath( 'admin_html' ) );
          switch ($act) {
          default:
          $task = "showText";
          break;
          }
          switch ($task) {
          case "save":
          save( $option );
          break;
          case "delete":
          delete( $option, $id );
          break;
          case "new":
          $id = '';
          edit( $option, $id );
          break;
          case "edit":
          save( $option, $id[0] );
          break;
          case "showText":
          showText( $option );
          break;
          }
          function save( $option ) {
          global $database;
          $row = new mosHello_world( $database );
          if (!$row->bind( $_POST )) {
          echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>n";
          exit();
          }
          if (!$row->store()) {
          echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>n";
          exit();
          }
          mosRedirect( "index2.php?option=$option", "Saved" );
          }
          function edit( $option, $uid ) {
          global $database;
          $row = new mosHello_world( $database );
          $row->load( $uid );
          HTML_hello_world::edit( $option, $row );
          }
          function delete( $option, $cid ) {
          global $database;
          if (!is_array( $cid ) || count( $cid ) < 1) {
          echo "<script> alert('Select an item to delete'); window.history.go(-1);</script>n";
          exit;
          }
          if (count( $cid )) {
          $cids = implode( ',', $cid );
          $database->setQuery( "DELETE FROM mos_hello_world WHERE id IN ($cids)" );
          if (!$database->query()) {
          echo "<script> alert('".$database->getErrorMsg()."'); window.history.go(-1); </script>n";
          }
          }
          mosRedirect( "index2.php?option=$option" );
          }
          function showText($option) {
          global $database;
          # Do the main database query
          $database->setQuery( "SELECT * FROM mos_hello_world ORDER BY id" );
          $rows = $database->loadObjectList();
          if ($database->getErrorNum()) {
          echo $database->stderr();
          return false;
          }
          HTML_hello_world::showText( $option, $rows );
          }
          讓我們來看看這個(gè)文件
          :
          defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
          這個(gè)將驗(yàn)證是否由MAMBO來調(diào)用此文件,防止非法直接運(yùn)行本文件,對于安全性非常重要。

          require_once($mosConfig_absolute_path."/administrator/components/com_hello_world/class.hello_world.php");
          require_once( $mainframe->getPath( 'admin_html' ) );
          調(diào)用以下兩文件 class.hello_world.php and admin.hello_world.html.php

          switch ($act) {
          default:
          $task = "showText";
          break;
          }
          建立一個(gè)選擇開關(guān)語句這樣假如有一個(gè)變量$act 我們將重定義一個(gè)新變量$task. 這樣$act 將用來實(shí)現(xiàn)顯示文字的函數(shù)中,而$task將被用在保存,刪除等。.

          switch ($task) {
          case "save":
          save( $option );
          break;
          case "delete":
          delete( $option, $id );
          break;
          case "new":
          $id = '';
          edit( $option, $id );
          break;
          case "edit":
          save( $option, $id[0] );
          break;
          case "showText":
          showText( $option );
          break;
          }
          這個(gè)開關(guān)語句將根據(jù)$task來運(yùn)行所需的函數(shù)。

          function save( $option ) {
          我們的第一個(gè)函數(shù),將保存我們創(chuàng)建或正在編輯的內(nèi)容。

          global $database;
          聲明$database為全局變量。

          $row = new mosHello_world( $database );
          這將定義$row新變量來存儲插入到數(shù)據(jù)庫中的信息,$row是class class.hello_world.php文件定義的mosHello_world類的一個(gè)實(shí)例。

          if (!$row->bind( $_POST )) {
          echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>n";
          exit();
          }
          假如 $row 返回空值,顯示錯(cuò)誤信息并返回上一個(gè)窗口。

          if (!$row->store()) {
          echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>n";
          exit();
          }
          假如不能完成對數(shù)據(jù)庫的寫操作,將顯示錯(cuò)誤信息并返回上一個(gè)窗口,這僅僅會在數(shù)據(jù)庫出現(xiàn)異常時(shí)會出現(xiàn)。

          mosRedirect( "index2.php?option=$option", "Saved" );
          假如一切正常將重定向你的瀏覽器到主選項(xiàng)窗口,并顯示"Saved".

          function edit( $option, $uid ) {
          很多代碼可參照前面的解釋,這里不再贅述。

          $row->load( $uid );
          定義了$row后并聲明它為mosHello_world類,裝載$uid相關(guān)的數(shù)據(jù). $uid是
          我們想編輯的內(nèi)容的$id的值。

          HTML_hello_world::edit( $option, $row );
          將$row 傳遞到admin.hello_world.html.php 顯示。
          .
          function delete( $option, $cid ) {
          同前,這里不再贅述。

          if (!is_array( $cid ) || count( $cid ) < 1) {
          echo "<script> alert('Select an item to delete'); window.history.go(-1);</script>n";
          exit;
          }
          這將檢驗(yàn)是否有刪除對象,如為空將顯示提示信息并返回上一個(gè)窗口。

          if (count( $cid )) {
          $cids = implode( ',', $cid );
          $database->setQuery( "DELETE FROM mos_hello_world WHERE id IN ($cids)" );
          if (!$database->query()) {
          echo "<script> alert('".$database->getErrorMsg()."'); window.history.go(-1); </script>n";
          }
          這將檢驗(yàn)$cid (存儲所有欲刪除的對象的$id值的數(shù)列)是否為空,如果不為空它將創(chuàng)建一個(gè)以逗號為分隔符的所有id的列表并存儲在字符串$cids然后根據(jù)相應(yīng)的id進(jìn)行刪除操作,如果操作出錯(cuò)將返回上一個(gè)窗口。

          function showText($option) {
          這是我們的主輸出函數(shù),將創(chuàng)建我們要輸出的文字的列表,解釋參照前面所述。

          admin.hello_world.html.php –控制所有的輸出.
          <?php
          //hello_world Component//
          /**
          * Content code
          * @package hello_world
          * @Copyright (C) 2004 Doyle Lewis
          * @ All rights reserved
          * @ hello_world is Free Software
          * @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
          * @version 1.0
          **/
          // ensure this file is being included by a parent file
          defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
          require_once($mosConfig_absolute_path."/administrator/components/com_hello_world/class.hello_world.php");
          class HTML_hello_world {
          function edit( $option, &$row ) {
          ?>
          <script language="javascript" type="text/javascript">
          function submitbutton(pressbutton) {
          var form = document.adminForm;
          if (pressbutton == "cancel") {
          submitform( pressbutton );
          return;
          }
          submitform( pressbutton );
          }
          </script>
          <form action="index2.php" method="post" name="adminForm" id="adminForm" class="adminForm">
          <table border="0" cellpadding="3" cellspacing="0">
          <tr>
          <td>Text Output: </td>
          <td><input type="text" size="50" maxsize="100" name="text" value="<?php echo $row->text; ?>" /></td>
          </tr>
          </table>
          <input type="hidden" name="id" value="<?php echo $row->id; ?>" />
          <input type="hidden" name="option" value="<?php echo $option; ?>" />
          <input type="hidden" name="task" value="" />
          </form>
          <?php } ?>
          function showText( $option, &$rows ) {
          ?>
          <script language="javascript" type="text/javascript">
          function submitbutton(pressbutton) {
          var form = document.adminForm;
          if (pressbutton == "cancel") {
          submitform( pressbutton );
          return;
          }
          submitform( pressbutton );
          }
          </script>
          <form action="index2.php" method="post" name="adminForm">
          <table cellpadding="4" cellspacing="0" border="0" width="100%" class="adminlist">
          <tr>
          <th width="20"><input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count($rows); ?>);"
          /></th>
          <th class="title" width="25%">Text Output</th>
          <th width="25%">Published</th>
          </tr>
          <?php
          $k = 0;
          for($i=0; $i < count( $rows ); $i++) {
          $row = $rows[$i];
          ?>
          <tr class="<?php echo "row$k"; ?>">
          <td><input type="checkbox" id="cb<?php echo $i;?>" name="id[]" value="<?php echo $row->id; ?>"
          onclick="isChecked(this.checked);" /></td>
          <td><a onclick="return listItemTask('cb<?php echo $i;?>','edit')"><?php echo $row->text; ?></a></td>
          <td align="center">
          <?php
          if ($row->published == "1") {
          echo "<img src="images/tick.png" border="0" />";
          } else {
          echo "<img src="images/publish_x.png" border="0" />";
          }
          ?>
          </td>
          <?php $k = 1 - $k; ?>
          </tr>
          <?php } ?>
          <input type="hidden" name="option" value="<?php echo $option; ?>" />
          <input type="hidden" name="task" value="" />
          <input type="hidden" name="boxchecked" value="0" />
          </form>
          <?php }
          } ?>

          我們來看一下這個(gè)文件
          class HTML_hello_world {
          聲明一個(gè)新類:HTML_hello_world

          function edit( $option, &$row ) {
          聲明edit函數(shù), 將顯示用來創(chuàng)建新內(nèi)容并編輯已有的內(nèi)容的表單。

          <script language="javascript" type="text/javascript">
          function submitbutton(pressbutton) {
          var form = document.adminForm;
          if (pressbutton == "cancel") {
          submitform( pressbutton );
          return;
          }
          submitform( pressbutton );
          }
          </script>
          這將檢驗(yàn)?zāi)闶欠癜聪铝巳魏喂ぞ邫诘陌粹o,你可以加入任何表單驗(yàn)證代碼在這里。

          <form action="index2.php" method="post" name="adminForm" id="adminForm" class="adminForm">
          你可以將這段代碼拷貝到任何組件中,它必須包括這些標(biāo)簽。

          <input type="hidden" name="id" value="<?php echo $row->id; ?>" />
          <input type="hidden" name="option" value="<?php echo $option; ?>" />
          <input type="hidden" name="task" value="" />
          保存或取消操作所必須的option和task字段。

          function showText( $option, &$rows ) {
          將顯示所有的文字部分。.

          <th width="20"><input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count($rows); ?>);"
          /></th>
          這將快速全選所有的選擇框。

          <?php
          $k = 0;
          for($i=0; $i < count( $rows ); $i++) {
          $row = $rows[$i];
          $k用來產(chǎn)生行的替換圖效果,for 語句將保證遍列所有的結(jié)果。

          <td><input type="checkbox" id="cb<?php echo $i;?>" name="id[]" value="<?php echo $row->id; ?>"
          onclick="isChecked(this.checked);" /></td>
          這將選上本行的選擇框。

          <td><a onclick="return listItemTask('cb<?php echo $i;?>','edit)"><?php echo $row->text; ?></a></td>
          將產(chǎn)生編輯此項(xiàng)的鏈接。

          <?php
          if ($row->published == "1") {
          echo "<img src="images/tick.png" border="0" />";
          } else {
          echo "<img src="images/publish_x.png" border="0" />";
          }
          ?>
          假如此行被設(shè)置為發(fā)行,你將看到一個(gè)綠的叉,否則將看到一個(gè)小紅叉。

          <?php $k = 1 - $k; ?>
          將 $k設(shè)為 1和它自身的差值,假如$k是 0,它就等于1,假如它等于1它就被設(shè)為0.

          <input type="hidden" name="boxchecked" value="0" />
          這行代碼很重要不然所有的選擇框?qū)⒉荒苷9ぷ鳌?


          class.hello_world.php -數(shù)據(jù)庫類文件.
          <?php
          //hello_world Component//
          /**
          * Content code
          * @package hello_world
          * @Copyright (C) 2004 Doyle Lewis
          * @ All rights reserved
          * @ hello_world is Free Software
          * @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
          * @version 1.0
          **/
          defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
          class mosHello_world extends mosDBTable {
          // INT(11) AUTO_INCREMENT
          var $id=null;
          // TEXT
          var $text=null;
          // TINYINT(1)
          var $published=null;
          function mosHello_world( &$db ) {
          $this->mosDBTable( 'mos_hello_world', 'id', $db );
          }
          }

          我們來看一下這個(gè)文件

          class mosHello_world extends mosDBTable {
          聲明類mosHello_world為mosDBTable的派生類,你可以將mosHello_world改成你自己的類名稱。

          // INT(11) AUTO_INCREMENT
          var $id=null;
          注釋行只是給出了變量的一些信息,變量名必須和你數(shù)據(jù)庫的相應(yīng)字段相符合并將它們設(shè)為空值。

          function mosHello_world( &$db ) {
          $this->mosDBTable( 'mos_hello_world', 'id', $db );
          }
          調(diào)用父類的構(gòu)造函數(shù),你可以調(diào)用$row=new mosHello_world($database)來得到想要的結(jié)果。
          install.hello_world.php – 安裝文件.
          <?php
          function com_install() {
          echo "Thank you for using this component. Please contact me at support@mambo-hosting.com

          with any questions";
          }
          ?>
          在文件中調(diào)用函數(shù)com_install(),不然會導(dǎo)致異常。

          uninstall.hello_world.php – 卸載文件.
          <?
          function com_uninstall() {
          echo "Thank you for using this component. Please contact me at support@mambo-hosting.com

          with any questions";
          }
          ?>
          在文件中調(diào)用函數(shù)com_uninstall(),不然會導(dǎo)致異常。

          toolbar.hello_world.php -設(shè)置工具欄
          <?php
          //hello_world Component//
          /**
          * Content code
          * @package hello_world
          * @Copyright (C) 2004 Doyle Lewis
          * @ All rights reserved
          * @ hello_world is Free Software
          * @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
          * @version 1.0
          **/
          defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
          require_once( $mainframe->getPath( 'toolbar_html' ) );
          if($task) {
          switch($task) {
          case 'new':
          case 'edit':
          $act = "edit";
          break;
          }
          }
          if ($act) {
          switch ( $act ) {
          case 'edit':
          menuHello_world::EDIT_MENU();
          break;
          case 'text':
          menuHello_world::TEXT_MENU();
          break;
          }
          }
          ?>
          我們來看一下這個(gè)文件

          require_once( $mainframe->getPath( 'toolbar_html' ) );
          和在admin.hello_world.php中包括admin.hello_world.html.php一樣

          if($task) {
          switch($task) {
          case 'new':
          case 'edit':
          $act = "edit";
          break;
          }
          }
          "new" 和"edit" 將應(yīng)用相同的工具欄。

          case 'edit':
          menuHello_world::EDIT_MENU();
          break;
          告訴toolbar.hello_world.html.php 該調(diào)用哪個(gè)函數(shù)。


          toolbar.hello_world.html.php -控制工具欄的輸出
          <?php
          //hello_world Component//
          /**
          * Content code
          * @package hello_world
          * @Copyright (C) 2004 Doyle Lewis
          * @ All rights reserved
          * @ hello_world is Free Software
          * @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
          * @version 1.0
          **/
          defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
          class menuHello_world {
          function TEXT_MENU() {
          mosMenuBar::startTable();
          mosMenuBar::publish('publish');
          mosMenuBar::unpublish('unpublish');
          mosMenuBar::divider();
          mosMenuBar::addNew('new');
          mosMenuBar::editList('edit', 'Edit');
          mosMenuBar::deleteList( ' ', 'delete', 'Remove' );
          mosMenuBar::endTable();
          }
          function EDIT_MENU() {
          mosMenuBar::startTable();
          mosMenuBar::back();
          mosMenuBar::save('save');
          mosMenuBar::spacer();
          mosMenuBar::endTable();
          }
          }
          ?>
          class menuHello_world {
          Sets the toolbar class
          function TEXT_MENU() {
          mosMenuBar::startTable();
          mosMenuBar::publish('publish');
          mosMenuBar::unpublish('unpublish');
          mosMenuBar::divider();
          mosMenuBar::addNew('new');
          mosMenuBar::editList('edit', 'Edit');
          mosMenuBar::deleteList( ' ', 'delete', 'Remove' );
          mosMenuBar::endTable();
          }
          告訴mosMenuBar 在工具欄中輸出什么內(nèi)容,括號中小寫的內(nèi)容將告訴admin.hello_world.php
          執(zhí)行哪個(gè)任務(wù)。

          希望諸位看官眼睛還沒有花:-) 這只是對組件的一個(gè)很簡單的介紹,但是如果你打印本教程的話還是有16頁之長:-)* 希望本教程能幫助你設(shè)計(jì)出更強(qiáng)大的MAMBO組件(沒準(zhǔn)會收入MAMBO5.0版中哦)


          *這里其實(shí)有17頁,因?yàn)槲抑匦屡帕艘幌掳妗?


          原文代碼在我的機(jī)器中安裝有許多問題, 大家可下載我修改后的代碼對比源碼, 僅供新手學(xué)習(xí)使用(共同學(xué)習(xí).... )

          posted on 2006-03-07 10:55 蠻哥♂楓 閱讀(627) 評論(2)  編輯  收藏 所屬分類: mambo

          FeedBack:
          # re: 輕松開發(fā)自己的組件
          2009-05-05 20:08 | wholesale
          very good <a href="http://www.13sz.com">Wholesale Electronics</a>  回復(fù)  更多評論
            
          # re: 輕松開發(fā)自己的組件
          2012-02-29 13:39 | 智能卡
          太長的代碼  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 乐平市| 定州市| 南澳县| 陆川县| 沂南县| 扶沟县| 谷城县| 黄石市| 达州市| 沅陵县| 平南县| 任丘市| 密云县| 海口市| 松阳县| 凌源市| 准格尔旗| 瓦房店市| 年辖:市辖区| 绥阳县| 吉林省| 黎川县| 读书| 崇明县| 申扎县| 和田县| 梅河口市| 泽州县| 五台县| 泗水县| 金溪县| 鹤山市| 惠东县| 沅江市| 兰溪市| 永新县| 甘南县| 台湾省| 永川市| 阜南县| 旬邑县|