Google

星期三, 四月 02, 2008

Joomla!扩展开发

Joomla!扩展开发
http://hi.baidu.com/andycai/blog/item/f0dbae1ed8f92f1b4134171b.html

第一章 Joomla!扩展开发:概况

你以前开发过动态网站但你的朋友告诉你有关Joomla!的事,所以你决定试一试。从食物网上那些出名的厨师中得到灵感后,你想建立一个简单的关于餐厅的网站。这个网站的安装比你期望要建立的内容管理系统要快速和平稳。

当你找到一个精美的模板并添加了一些菜单和一些内容后,你开始考虑增加一些新的特性可以给你带来更多的访问量,甚至一些钱。之后,你安装了购物车来买书,一个论坛来收集意见和一些边栏广告。

为什么扩展Joomla

Joomla!不但能够处理内容文章,而且允许你干净地综合各种复杂的应用。开发者为Joomla!开发各种扩展,如购物车、论坛、职位发布等。所有这些扩展能够运行在单个数据库、模板和核心。我们开发出来的扩展,界面是完全统一的。

当你正确地开发扩展时,你就不用登录数据库和做其他基本的配置。另外,你也可以分发你自己开发的扩展给别人和别人分享,不需要另外的编程和数据库操作。

自定义 VS 扩展

Joomla!的代码是设计成可扩展的而不是直接修改它的核心代码。当有升级版本或者有补丁的时候,Joomla!会升级它本身的核心代码,而你的扩展你不会被覆盖的。

如何扩展Joomla

Joomla!支持三类扩展,每一类都有特殊的用途。

组件

组件是最基本的,组件就是你所看到的页面的主要部分。Joomla!的设计是来为每个页面加载和运行一个组件。因此,Joomla!核心的内容管理功能本身也是一个组件。

组件经常会有强大的后端管理。后端通常用来创建和更新数据库记录。你也可以用它来允许网站管理员来上传图片或者视频。

模块

相对组件,一个页面可以有很多的模块。模块一般由边栏的元素或者是内容菜单组成,模块显示组件的内容,它们不是页面的主要内容。Joomla! 也支持不需要编程的内容模块。模块后端的控制是有限制的,一般由基本的格式组成。

插件

当网站需要插入一些代码来实现某些逻辑,它可以由插件实现(以前叫做Mambot)。插件一般用来格式化页面的组件或者模块的输出。例如有这样的组件,关键字高亮显示、文章评论表单、基于JavaScript的HTML编辑器等。后端的控制与模块相似。

主题概况

创建工具栏和列表

Joomla!的后端提供了一套标准的工具栏按钮。它们使得界面可以保持一致的风格,所以使用者可以很快地熟悉相应的功能。如果有必要的话,这些按钮可 以修改和添加。和标准的工具栏一样,数据库记录的列表也有统一的显示风格。这些列表通常会包括编辑单条记录的链接,改变发布状态的链接和提供自动分页功 能。

使用HTML函数来维护一致的外观和减少重复的代码

在你的扩展里,有各种标准的CSS类名可以用来格式化内容和HTML元素。另外,Joomla!包含很多函数可以自动生成复选框、下拉框和其他通用的元素。

访问数据库和管理记录

Joomla!提供了一个公用的数据库对象,可以让每个页面的请求只适用一个连接。这个对象提供了一组函数用来查询数据和返回结果。这些函数是独立数据 库的,他们被设计成支持一个数据库多Joomla!。除了一个公用的数据库对象,Joomla!还提供了标准的数据库表类。使用它核心的函数可以创建、读 取、更新和删除记录。也可以添加这样的逻辑,当父记录被删除,其他表的子记录也会被删除。

安全和获取请求变量的首选方法

既然Joomla!是一个公开的web 应用,有必要保护他免受攻击。Joomla!提供了只有在框架里被调用的保险的脚本方法,也不会随便地执行。除非是未明的脚本行为,黑客能故意地提交数据来访问你的数据库,Joomla!提供了阻止这类攻击的功能。

菜单项控制

Joomla!的一个显著的特性是导航与内容分离。然而,如果一个组件创建时没有考虑到这一点,网站管理员可能会不能选择他们的模板和模块。为了利用这 给系统,有必要在产生连接时使用既定的菜单项ID数字。组件的链接可以有多个选项,允许在前端显示不同的选择而不用手工去构建长长的URL。

控制组件的逻辑流

当某一个组件被加载时同一个文件被调用,但是执行不同的函数。Joomla!使用标准的变量来决定每个请求要执行的函数。对于比较小的组件,可以用来从 数据库和其它处理函数直接处理输出,比较大的组件会使用controller来处理逻辑流,用model来处理数据访问,用views来控制输出。这样的 约定使得维护代码更加容易和帮助组件以更可靠的方式执行。

通过XML进行参数配置

Joomla!不是通过创建单独的表来处理扩展的配置信息,而是预留了一个字段来处理。变量通过扩展中的XML文件定义。XML文件也提供了默认值和约束这些参数。而且会自动地保存和返回这些值,而不需要手写查询语句。

打包和分发

一旦所有的代码都编写完成,它是很容易打包给其他人使用的。所有文件的一个列表会被加入到XML文件中。任何需要建立数据表的查询语句也会包含在里面。所有文件被压缩成一个文件,然后这个扩展就可以被任何基于Joomla!的网站安装和使用。

http://www.joomlagate.com/component/option,com_smf/Itemid,31/topic,2235.msg9109/

标签:

星期一, 三月 31, 2008

Joomla站点的迁移

以下以joomla站点迁移到IP为218.16.121.121的虚拟主机,域名为www.joomla.com
数据库帐号是:wcf,数据库密码是:88623132,数据库名是wcf,
请通过localhost连接。

1、 到你注册的域名的站点的域名管理中将www.joomla.com和joomla.com以“主机名/A记录”的形式解析到218.16.121.121。
2、 将数据库导出成sql脚本文件
2、将导出的sql脚本文件导入到迁移环境的数据库中。
3、修改configuration.php文件如下的配置
1) 修改$mosConfig_absolute_path 为你迁移后的站点的绝对路径
$mosConfig_absolute_path =’/www/winetcn/joomla;
2) 修伽$mosConfig_cachepath为你迁移后的站点的cache的路径
$mosConfig_cachepath = '/www/winetcn/joomla/cache';
3) 修改$mosConfig_db 为你迁移后的数据库名
$mosConfig_db = wcf;
4) 修改$mosConfig_live_site = 为你站点访问的URL。
$mosConfig_live_site = 'http://www.joomla.com';
5) 修改$mosConfig_password为你迁移后的数据的连接密码
$mosConfig_password = ‘88623132’;
6) 修改$mosConfig_user 为你迁移后的数据的访问用户名
$mosConfig_user = wcf;
4、如果整合了smf,需要修改smf的安装目录下的Settings.php文件中如下的配置:
1) 修改$boardurl为你迁移后的站点smf访问URL,如:$boardurl =’ http://www.wcfonline.com/forum’;
2) 修伽$db_name=’ wcf;
3) 修改$db_user = ‘wcf;
4) 修改$db_passwd = ‘88623132’;
5) 修改$boarddir= ' http://www.jooomla.com/forum;
6) 修改$sourcedir = '/www/winetcn/joomla/forum/Sources';
7) 登录joomla控制台,修改SMF桥接器的SMF中的绝对路径.
将其绝对路径修改为:/www/winetcn/joomla/forum
8) 以smf管理员的身份进入smf的管理控制台,修改smf风格的路径,管理——>目前所使用的风格
修改风格网址和图片地址分别为:
http://www.joomla.com/ forum/Themes/Neutron
http://www.joomla.com/ forum/ Themes/Neutron/images
所在文件夹修改为/www/winetcn/joomla/forum/ Themes/ Neutron

http://www.wcfonline.cn/content/view/12/27/

标签:

星期日, 三月 30, 2008

Joomla学习,模块如何创建-3

好了。xml文件创建完毕,我们该进行下一步了,创建.php文件。
我们来看一下mod_latestnews.php。
/**
* @version $Id: mod_latestnews.php 9764 2007-12-30 07:48:11Z ircmaxell $
* @package Joomla
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// no direct access
defined('_JEXEC') or die('Restricted access'); // 不允许直接调用

// Include the syndicate functions only once
require_once (dirname(__FILE__).DS.'helper.php'); // 此处引用模型文件

$list = modLatestNewsHelper::getList($params); // 调用模型文件内的类,获得参数列表
require(JModuleHelper::getLayoutPath('mod_latestnews')); // 调用显示模块

标签: ,

Joomla学习,模块如何创建-2

按照我前面所做的分析,我在joomla的modules目录中创建了一个子目录,mod_demos,然后创建了一个基本没有什么内容的mod_demo.xml文件。



Demo module
Ou Lanhui
Mar. 30, 2008
All rights reserved.
Free for personal use but need denote if commercial use
ouland@gmail.com
http://www.ouland.com/
1.5.0
Demo module for joomla

mod_demo.php






在Joomla的界面里如果选择Extension->Module manager创建一个新的模块,就可以看到这个模块了,并且能够创建。至于它能否显示,因为mod_demo.php文件不存在,所以就不要想了。

标签: ,

Joomla学习,模块如何创建

模块的创建应该分成2个部分。感觉上,Joomla在实现的方面模块主要是用来处理View方面的工作。因为没有什么时间详细研究,好用即可就是标准。至于component的功能是什么现在没有什么感觉,Component能够生成页面,那应该是比module更为全面的吧,module明显具有只是页面某一部分的特点,因为在使用的时候你可以指定该模块显示在页面的某一位置,由index.php指定的位置。

今天青歌手有道题问的是赵州桥,看到图片问中国最古老的石拱桥是什么我也能答上来,但是是李春造的,在河北,并且是隋朝造的还是让人感触万千。希望我们的作品也能如此吧。我们从什么时候开始不注意质量的?我的思路有点问题,一讲下去就跑远了。不过对于作品,特别是软件,还是要了解好我们需要做什么,确保每一步不出现问题。虽然BUG可能还是会有,但是别出大问题吧。;)

说远了,回到模块上,大的上面模块应该有2个部分,即用于界面显示的,放置在modules里的,还有放在administrator/modules里,用来配置模块的管理部分。哦,现在问题有点清楚了,components,应该是用来具体实现功能的吧。(乱讲)比如想做的一个具体信息分类管理,后台采用模块进行分类的管理,前台呢,按我们计划的有分类的列表视图,分类下的信息展示视图,都可以做为页面的内容。再看后台的管理介面,模块中有mod_mainmenu模块用于显示主栏目菜单,而主栏目菜单上的项目由component对应的视图指定,又倒过来了吧,modules->components。反正是分析着玩,等分析完再对照能找得到的文档看看,这活干得也有意思一点。

好,说完这两种模块,即普通模块和管理模块。我们看看做一个普通模块要做什么事情。首先要在/modules下建立一个目录,这个目录就是你想创建的模块了,通常情况下,它具有这样的名字mod_<模块名>。比如我们要做一个用户想要实现的界面功能的收集系统(这个就是我们以后的参照系统吧),目标是这样:每个用户都可以注册一个或者多个项目,每个项目从属于某一个或多个分类,感谢google,我从你们的邮件系统里学到了label方式,就是每个用户可以指定多个标记来说明项目所属的分类。每个项目用户都需要输出项目相关的内容,我们来想一下,项目的描述,项目的规模,当然,用户可以选择这个项目能不能被别人看到,而能被别人看到的内容,网站的运营者应该审核之后才能被看到,这样防止用户把自己的联系方式都直接写上,这样网站就没有办法赢利了。;)然后用户可以将他所策划的功能做以描述,就是填写另外一张表,来说明系统有什么功能,每个功能是怎么回事。难道我要做的是一个需求管理工具?;)好,其实就是这么一回事了。想太多这个模块没法子写了。

创建好目录之后,首先我们需要几个文件,用于描述模块的文件mod_<模块名>.xml,模块的主文件mod_<模块名>.php也应该是模块的控制文件吧,模块的模型文件helper.php,然后是模块的视图目录tmpl,该目录下有default.php作为缺省的视图。Joomla对MVC的设计非常好,可以的是我知道MVC,但是知其然而不知其所以然,因为我一直是实用主义者,可用是首先,就象我虽然了解设计模式,但是并不强求设计模式的严格使用。我向ACE,Boost的作者致敬,但不表示我不崇尚更为敏捷的开发过程。

描述模块的文件我们看看:

-- 安装信息,指明模块的版本
Latest News -- 模块的名称
Joomla! Project -- 作者
July 2004 -- 创建日期
Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
-- 版权信息
http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
-- 采用的协议类型,GPL的后续还可能是什么?
admin@joomla.org
-- 开发者的email地址
www.joomla.org-- 作者的网站地址
1.5.0 -- 这个版本是什么版本?适用于Joomla的版本?
DESCLATESTNEWS
-- 模块的描述信息,相当于商业软件的鼓吹信息
-- 文件列表
mod_latestnews.php
-- 文件的名称

-- 模块的参数

-- 单个参数的内容指定
-- name-参数名 type-参数类型 default-缺省值 label-标签显示内容 description - 参数的相关描述


























标签: ,

星期四, 三月 13, 2008

Joomla插件 Phoca Gallery

http://www.phoca.cz/

东西不错,安装复杂。而且缺省安装在IE7中会出现执行错误。测试版本1.6.3

标签:

星期三, 三月 12, 2008

安装Community Builder

不知道为什么我在Joomla里允许了注册,但都不能真正注册,下个
Community Builder看看吧
http://www.joomlapolis.com/component/option,com_docman/Itemid,36/

标签:

Joomla! 完整建站指南

写在前面的话

一个好的网站一定是经过深思熟虑后推出的结晶。

无论是什么网站,都需要向读者表达自己的想法和情绪,而读者能够清晰明确的找到自己需要的。这就需要明确搭建网站的目的,这是网站建设中的核心问题。网站的功能和内容,以及各种网站推广策略都是为了实现网站的预期目的。在网站定位明确的情况下,要考虑清楚如何建立索引,以其读者能够有效的访问。一本百科全书需要好的目录索引,网站也是如此。


一个好的网站一定是与适合技术结合的产物。

不同网站的定位决定了网站应该具备不同的功能,比如新闻性网站与购物网站是完全不同的用户体验。根据不同的功能选用不同的技术,不同的产品是必然要做出的决定。单已目前的 PHP CMS发布系统而言,如果不需要更多的互动和论坛采用Joomla!是最好的选择,而如果要整合博客和wiki等功能,我想drupal才是不二之选。


一个好的网站是坚持不懈努力的结果。

做网站也和做人是一样的,什么事情到最后玩的都是信心和耐力。坚持不懈的原创更新,遵守开放的游戏规则,不放弃,最后都会绽放最绚烂的笑容。反之,如果图一时之快,出来混,总是要还的!

http://www.maycode.com/index.php/hotspot/28-joomla/550-joomla-install-manul.html

今日测试模块:Fireboard

标签:

Joomla建站

感觉Joomla建站还真是非常方便的。不过离我想的有点远。
不能....
不能....
不能....
不能....
不能....

但是现在没有时间,还是研究一下它出色的地方吧。目前基本的架站方案已经没有问题了,在研究“二本”的方案。即增加插件,三本就要自己写插件了。它的模型不错。

我的测试站点入口:http://www.fairybean.com/j5/

成功之后将会应用到以下几个站点:
http://www.redstonelake.cn 红石湖,我的家乡。主要内容为风景人文图片展示
http://www.cvc.com.cn 我哥们的中国风险投资网,停了一段时间后居然在搜索引擎中掉出第一页,且看什么时候会回来。

标签:

星期二, 三月 11, 2008

Joomla的有用网址

中文主站:
http://www.joomla.cn/

标签:

7步完成Joomla! 1.5 安装

http://www.joomlagate.com/content/view/110/29/

标签:

辽ICP备05003652号
流风洄雪听天籁,轻云蔽日看落花

Powered by Blogger