你现在的位置:首页 > PHP网站建设知识库 > Joomla > 正文

Joomla! 1.5框架结构简述

一个软件的框架结构是为软件系统的可重用性而设计的。这是对于某一特定类型软件中抽象类及其实例间合作集的一种表述。软件框架可以是一个面向对象的设计,虽然设计不一定必须是面向对象而实现的,但通常是面向对象的。一个软件框架可能以包含支持程序、代码库、脚本语言以及一些其他的软件的方式来帮助开发,或者将不同的软件项目组件融合在一起。各式各样的框架结构都可能通过API的方式被导出,以供使用。(From Wikipedia)
Joomla! 1.5框架结构简述

\

Joomla! 1.5 是一个三层系统:

顶层 - 为扩展层,包含对Joomla Framework和应用程序的扩展 
Modules (模块),是对页面展示的一种轻量而灵活的扩展。有时候它可能被连接到Components ,例如"Lastest news"模块,这个模块连接到了内容组件"com_content",以显示连接到最新内容列表。模块在大多时候是作为用户可见的"box"被组织在某个组件之上(包装组件),例如,登陆模块。模块可以被分配给菜单项,例如你可以决定在某个组件(菜单项)被使用时,登陆模块的显示或隐藏。无论如何,模块是可以不被关联到任何组件的,而只是作为一个静态HTML或者文本。 模块可以被置于Module Position,Positions被定义在Joomla模版中。另外,你可以通过在前端URL的末尾添加 ?tp=1 或 &tp=1来查看你使用的模版有哪些可用的Positions。 
Components (组件) 
Templates (模版),有两种模版类型:前端模版和后端模版。从 template contest 下载模版 
中间层 - 应用程序层,包含扩展Joomla Framework JApplication class的applications,目前在Joomla的发行版中存在4个applications。
JInstallation 负责Joomla 在Web服务器上的安装,安装完成后被删除以完成安装过程。 
JAdministrator 负责Joomla的后端管理。 
JSite 负责Web站点的前端 
XML-RPC 支持Joomla站点的远程管理 
底层 - 框架层,包含 
Joomla Framework自身, whose classes are listed below. 
Libraries ,是Framework 所必须的,或者被安装用于第三方开发人员 
Plugins,用于扩展在 Framework 中的可用功能。Joomla! Plugin服务于多种目的,作为模块用以增强Web最终输出页面的效果,而Joomla! Plugin则可以增强数据,以及而外的可安装功能。虽然一些可能类型的插件几乎是无限的,但有一些被Joomla!使用的核心插件类型,这些类型的核心插件被组织在/plugins/目录下,他们是:
authentication —— allow you to authenticate (to allow you to login) against different sources.  By default you will authenticate against the Joomla! user database when you try to login.  However, there are other methods available such as by OpenID, by a Google account, LDAP, and many others.  Wherever a source has a public API, you can write an authentication plugin to verify the login credentials against this source.  For example, you could write a plugin to authenticate against Twitter accounts because they have a public API. 
content —— modify and add features to displayed content.  For example, content plugins can cloak email address or can convert URL's into SEF format.  Content plugins can also look for markers in content and replace them with other text or HTML.  For example, the Load Module plugin will take {*loadmodule banner1*} (you would remove the *'s in practice.  They are included to actually prevent the plugin from working in this article), load all the modules in the banner1 position and replace the marker with that output.
editors —— allow you to add new content editors (usually WYSIYWG). 
editors-xtd —— allow you to add additional buttons to the editors.  For example, the Image, Pagebreak and Read more buttons below the default editor are actually plugins.
search —— allow you to search different content from different components.  For example, search plugins for Articles, Contacts and Weblinks are already provided in Joomla!.
system —— allow you to perform actions at various points in the execution of the PHP code that runs a Joomla! Web site.
user —— allow you to perform actions at different times with respect to users.  Such times include logging in and out and also saving a user.  User plugins are typically user to "bridge" between web applications (such as creating a Joomla! to phpBB bridge).
xmlrpc —— allow you to provide additional XML-RPC web services for your site.  When your Web site exposes web services, it gives you the ability to interact remotely, possibly from a desktop application.  Web services are a fairly advanced topic and will not be covered in much detail here. 
Packages and Classes

--------------------------------------------------------------------------------
在Joomla! Framework 中的classes 被松耦合地组合在了几个不同的packages中。
See online Joomla! 1.5 API Reference
JFactory  --  定义在 /libraries/joomla/factory.php 中
提供一中简单的方法,以组织管理被Joomla Framework请求访问的单例对象。需要说明的是该类是全局可用的,即不需要明确import到你的代码中。
Method name Description 
getACL 返回一个全局JAuthorisation对象引用,仅在其不存在时被创建。 
getApplication 返回一个全局JApplication对象引用,仅在其不存在时被创建。 
getCache 返回一个全局JCache对象引用,仅在其不存在时被创建。 
getConfig 返回一个全局JRegistry对象引用,仅在其不存在时被创建。JRegistry中的data包含一些配置信息,通过stdClass实现。 
getDate 返回一个全局JDate对象引用,仅在其不存在时被创建。 
getDBO 返回一个全局JDatebase对象引用,仅在其不存在时被创建。 
getDocument 返回一个全局JDocument对象引用,仅在其不存在时被创建。 
getEditor 返回一个全局JEditor对象引用,仅在其不存在时被创建。 
getLanguage 返回一个全局JLanguage对象引用,仅在其不存在时被创建。 
getMailer 返回一个全局JMailer对象引用,仅在其不存在时被创建。 
getSession 返回一个全局JSession对象引用,仅在其不存在时被创建。 
getTemplate 在Joomla 1.5.x中弃用;从Joomla 1.6 以后给移除。
返回一个全局JTemplate对象引用,仅在其不存在时被创建。patTemplate模版系统已不再使用。
 
getURI 返回一个全局JURI对象引用,仅在其不存在时被创建。 
getUser 返回一个全局JUser对象引用,仅在其不存在时被创建。 
getXMLParser 返回一个全局XML Parser对象引用,仅在其不存在时被创建。不同的解析器是可用的。
JText  -- 定义在 /libraries/joomla/methods.php 中
JText是一个文本处理类,它允许开发人员在源代码中指定文本片断,而在运行时被翻译成当前网站所使用的语言。
Method name Description 
_ 翻译字符转到当前语言 
printf 翻译字符转到当前语言,并传递给 printf 函数. 
sprintf 翻译字符转到当前语言,并传递给  sprintf 函数.
JApplication --  定义在 /joomla/application/application.php 中
JApplication是Joomla应用的基类,对特定应用程序起着工厂类的作用,并提供了许多支持API方法。继承自它的子类都应实现route(),dispatch() 和render() 三个方法。
Method name Description 
__construct 构造器 
addCustomHeadTag 废弃方法, 使用 JDocument->addCustomTag 替代(仅当文档类型为HTML时). 
addMetaTag 废弃方法, 使用 JDocument->setMetaData 替代. 
appendMetaTag 废弃方法, 使用 JDocument->setMetaData 替代. 
appendPathWay 废弃方法, 使用  JPathWay->addItem() 替代. 
close 退出应用程序. 
dispatch 分配应用程序请求到相应组件. 
enqueueMessage 入队系消息队列. 
getBasePath 废弃方法, 使用 JURI::base() 替代. 
getBlogCategoryCount 废弃方法. 
getBlogSectionCount 废弃方法. 
getCfg 获得configuration.php中的配置值. 
getClientId 获得当前运行application的client id. 
getContentItemLinkCount 废弃方法. 
getCustomPathWay 弃方法, 使用 JPathway->getPathWayNames() 替代. 
getGlobalBlogSectionCount 废弃方法. 
getHead 废弃方法, 使用 JDocument->get( 'head' ) 替代. 
getInstance 返回一个全局JApplication对象引用,仅在其不存在时被创建。 
getItemid 废弃方法, 使用 ContentHelper::getItemid 替代. 
getMenu 返回应用的JMenu对象的引用. 
getMessageQueue 获得系统消息队列. 
getName 获得应用名称 
getPageTitle 废弃方法, 使用 JDocument::getTitle 替代. 
getPath 废弃方法, 使用 JApplicationHelper::getPath 替代. 
getPathway 返回应用的 JPathway 对象引用. 
getRouter 返回应用的 JRouter 对象引用. 
getStaticContentCount 废弃方法. 
getTemplate 获得当前模版名称. 
getUser 废弃方法, 使用 JFactory::getUser 替代. 
getUserState 获得User状态. 
getUserStateFromRequest Gets the value of a user state variable. 
initialise 初始化Application. 
isAdmin Is admin interface? 
isSite Is site interface? 
login Login authentication function. 
logout Logout authentication function. 
prependMetaTag 废弃方法, 使用 JDocument->setMetaData 替代 
redirect 重定向到其他的 URL. 
registerEvent 注册一个handler 到特定 event group. 
render 渲染应用程序。该过程为,首先将 document 缓存传递给 template 置换处理器(placeholders),而后从 document 缓存中获取数据,再将数据放JResponse 的缓存中(buffer)。
route 确定应用线路。该过程为,首先检测请求环境,以确定哪个组件(component)应该接收当前请求。接着,当应用即将被分派时,该组件的可选参数将被设置在当前请求对象中。
setPageTitle 废弃方法, 使用 JDocument::setTitle 替代. 
setUserState Sets the value of a user state variable. 
triggerEvent 调用特定event group中关联的所有 handlers.