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

Joomla! 1.7 与多语种网站

最近要帮朋友建个中英双语网站(感谢Nathan的引荐), 于是稍微担心了一下, 因为自从Joomla! 1.5之后我还没用它做过多语种的网站. 查阅了一下, Joomla!进步还是可以的, 已经内建多语种支持了, 无需其它组件.

1, 首先, 是添加网站前端和后台的中文支持, 这是最简单的一步. 1.7UI翻译已经由国内团队(joomla.cn)完成, 下载地址在此: http://joomlacode.org/gf/project/jtranslation1_6/frs/?action=FrsReleaseBrowse&frs_package_id=5695

下载完成后, 在Extension Manager里面上传安装即可. 安装之后, 前后台的UI就都支持简体中文了:

2, 下一步是添加简体中文作为一种内容语言, 同样是在Language Manager:

完成之后, 网站内容就支持2种语言了.

3, 下面, 在Plug-in Manager里面, 开启System – Language Filter.

4, 然后是菜单, 稍复杂一点. 首先在Menu Manager里面新建一个menu, 此menu只有一个item, 我只是随意的设置一个文章链接, 需要注意的是此item的language一定要设置为All. 最后, 将此item设置为Home, 也就是缺省 首页. 不必为此menu关联任何模块.

5, 关键时候到了. 现在为中英文分别建立一个主菜单. 名称虽然不影响系统, 但为了方便, 我建议命名为zh-Main, en-Main这样两个. 然后, 每个menu里面的所有item都要设置成对应语种, 例如在zh-Main里面, 所有item Language一项都是Chinese Simplified, 就是我们在第2步里设置的那个. 然后, 在每个menu里设定一个语种的首页. 如果前面几步都正确的话, 你应该看到国旗出现.

6, 在Module Manager里为2个语种的主菜单关联模块, 模块的语种选项也要对应菜单的语种.

7, 最后, 在Module Manager里开启Language Switcher, 并放置到模板上一个妥当的位置, 例如右上角(作为测试, 我只是放在左下角了).

完成 🙂

参考链接: http://www.webeks.net/joomla/multilingual-joomla-17.html