在本节中我们将详细介绍模板的index.php文件。
如果你做过web开发,那么你会有这样的几个问题:
怎样给一个模板增加css
1、怎样给一个模板增减js
2、怎样在我的模板中使用JQuery库
3、joomla模板是用什么语言开发的
4、joomla模板和普通的html文件有什么不同
看代码(因为代码太长,故将一个index.php文件分成3部分来讲解)
/**
* @package Joomla.Site
* @subpackage Templates.beez_20
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access.
defined('_JEXEC') or die;
jimport('joomla.filesystem.file');
// check modules
$showLeftColumn = ($this->countModules('position-1') or $this->countModules('position-2') or $this->countModules('position-3'));
$showRightColumn = ($this->countModules('position-5') or $this->countModules('position-6') or $this->countModules('position-7'));
$showBottomBox =($this->countModules('position-8') or $this->countModules('position-9') or $this->countModules('position-10'));
JHtml::_('behavior.framework', true);
// get params
$color = $this->params->get('templatecolor');
$logo = $this->params->get('logo');
$navposition = $this->params->get('navposition');
$app = JFactory::getApplication();
$doc = JFactory::getDocument();
$templateparams = $app->getTemplate(true)->params;
$doc->addStyleSheet($this->baseurl.'/templates/system/css/system.css');
$doc->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/css/position.css', $type = 'text/css', $media = 'screen,projection');
$doc->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/css/layout.css', $type = 'text/css', $media = 'screen,projection');
$doc->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/css/print.css', $type = 'text/css', $media = 'print');
$doc->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/position/css/topbar.css', $type = 'text/css');
$doc->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/position/css/head.css', $type = 'text/css');
$doc->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/position/css/footer.css', $type = 'text/css');
$doc->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/position/css/mid.css', $type = 'text/css');
$doc->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/position/css/page.css', $type = 'text/css');
/*$doc->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/position/css/print.css', $type = 'text/css');*/
$doc->addStyleSheet($this->baseurl.'/myjs/lightbox/css/lightbox.css',$type = 'text/css');
代码解释:
第9行代码: defined('_JEXEC') or die 这个是joomla的安全机制。每个文件照写就没有问题。他的意思是说,只允许通过joomla机制来访问这个文件,如果非法访问,就直接终止执行。
第10行代码:jimport('joomla.filesystem.file') 意思很明了,导入文件系统。joomla为了方便操作写很多的类,用来完成各种操作。相关细节,可以查看joomla源代码
第14到16行是在检查一个模板位置上是否发布了模块。我们通过用他来检查模块的发布情况,以此来动态调整页面的css。这个函数的使用非常简单,他只需要一个参数,那就是你要检查的位置,如果这个位置上发布了模块,那么返回true,否则返回false.
第22行代码:JHtml::_('behavior.framework',true) 这段代码本人也不是很清楚他的作用。就放在这里就行了。
第24行到27行,取得模板的设置参数。调用方法很简单$this->params->get('参数的名称')。
第27行到30行得到一些对象。具体怎么用本人还没弄懂,照写就没问题。
第30行到42行加载本模板需要的一些css和js.加载css用addStyleSheet(路径) 加载js用addScript(路径)
在这一节中,知道了如何获取后台参数,如何检测某一个位置是否发布了模块,已经怎样向模板中加载自己的css 和js文件。