Joomla! 1.7: 在各种位置显示指定module

在 Joomla! 实践中, module 是可以输出独立或相关内容的一个”方块”. 目前我用到的 module 定位方法有三种:

1, 在总模板(yourtemplate/index.php)中定位, 这个是最基本的了.

2, 在改写模板(override)中定位. 可以给没 module 指定一个模板中并没有定义的位置编码, 然后在 override 模板(一般是 default.php )中引用:

<div class=”features”>

<?php

/* get all Modules assigned to custom Position */

$myinset_modules = &JModuleHelper::getModules( ‘specialposition‘ );

/* loop through the array and render their output */

foreach ($myinset_modules as $mymodule) {

if ($mymodule->showtitle) : ?>

<h2><?php echo $mymodule->title; ?></h2>

<?php endif;

echo JModuleHelper::renderModule( $mymodule );

}

?>

</div>

3, 在文章正文中定位. 这个稍复杂.

3.1, 在后台进入 Extensions -> Plugs -> Content – Load Modules, 开启(enable)

3.2, 类似于第2步, 为对应的 module 指定一个特殊的位置名, 例如: specialposition

3.3, 在文章正文中输入:

{loadposition specialposition}

即可. 😀

Cherokee 完美配置 Joomla! 1.7.x

下面是从头开始配置 Joomla! 1.7.x 的步骤. 环境是 Ubuntu 11.10 64bit + Cherokee 1.2 + PHP 5.3 + MySQL 5.1:

  1. 登录到 cherokee-admin
  2. vServers > + > Manual. 以下假设建立的 vServer 是 mysite
  3. vServers > mysite > Basics :
    1. 在 Document Root 填写 Joomla! 的安装路径, 例如 /var/www …
    2. Dirctory Indexes: index.php, index.html
  4. vServers > mysite > Behavior:
    1. 添加 PHP 支持: + > Languages > PHP. 如果添加失败, 可能是没有安装 php5-cgi
    2. 将 Default > Handler 改为 Redirection, 并添加如下重定向规则:
      1. (External) ^/administrator/?$ /administrator/index.php
      2. (Internal) ^/(.*)$ /index.php?/$1
    3. 添加漏洞保护:
      1. + > Manual > Regular Expression, 并添加一下表达式, 它们之间是 OR 的关系即可
        1.  mosConfig_[a-zA-Z_]{1,21}(=|\=)
        2. (\<|<).*script.*(\>|>)
        3. base64_encode.*\(.*\)
        4. GLOBALS(=|\[|\%[0-9A-Z]{0,2})
        5. _REQUEST(=|\[|\%[0-9A-Z]{0,2})
      2. Handler : HTTP Error, HTTP Error: 403
    4. 不是必须的, 可以添加静态内容的压缩和过期时间
      1. + > Manual > Extensions : .html, .htm, .css, .js
      2. + > Manual > Extensions : .jpg, .png, .gif, .jpeg
  5. 在 Joomla! 管理后台里, 开启 URL 重写

参考链接: http://www.cherokee-project.com/doc/cookbook_joomla.html (Cherokee 娘家的文档, 竟然没有 URL 重写那部分, 奇怪. )

Joomla! 1.7.x 缺省模板的 Page Class

真是不理解, Joomla! 1.7的缺省模板Beez2里居然没有把 Page Class 写在 <body> 里面. 在菜单条目里可以给每一个页面设置 Page Class, 但如果 Page Class 不是出现在模板的 <body> 里, 那通过 Page Class 来做特定页面的 CSS 布景就不能实现.

还好, 找到了实现方法: 编辑/templates/beez_20/index.php.

在33行找到:

$doc->addScript($this->baseurl.’/templates/beez_20/javascript/md_stylechanger.js’, ‘text/javascript’, true);

在之后添加成:

$doc->addScript($this->baseurl.’/templates/beez_20/javascript/md_stylechanger.js’, ‘text/javascript’, true);
$pageclass =  & $app->getParams(‘com_content’);

然后, 找到 <body> 并改为:

<body class=”<?php echo $pageclass ->get(‘pageclass_sfx’); ?>”>

任务完成. 😀

参考链接: http://forum.joomla.org/viewtopic.php?f=619&t=623802&p=2653319#p2653319