Joomla! 1.5.x 首页链接问题

Joomla! 1.5.x 内容管理系统(CMS)的一个”特点”就是你不需要像Wordpress那样强制指定网站的入口网址, 系统会自动识别网站被分配的域名.

此方法一般来说是没什么问题的, 但是在存在多个域名指向同一个网站的情况下, 首页上的首页链接偶尔会变成另一个域名, 而不是期望的缺省域名.

寻找修理办法中…

改进Joomla!1.5中的Google Analytics应用

参考链接:浅析豆瓣的 Google Analytics 应用 其中我感兴趣的是这一段:

使用 _ga._addOrganic 识别非主流搜索引擎

再来看豆瓣比默认 Google Analytics 代码增加的部分,那就是多了数个 _ga._addOrganic ,这是 Google Analytics 添加自定义搜索引擎的代码。尽管 Google Analytics 对于主流的搜索引擎都能自动识别,但毕竟能识别的是国外的主流搜索引擎,在国内,像搜狐的 Sogou,QQ 的 soso,网易的有道等搜索引擎,都不能被 Google Analytics 正确识别,而被当作推荐来源。这时候我们就可以利用_addOrganic 参数来识别这些非主流搜索引擎,如豆瓣的做法。

在Joomla! CMS当中我比较喜欢JoomlaGATor!这个Google Analytics模块,因为它有很多参数可以定制,其中就包括上面的_addOrganic,但遗憾的是只有一组。好在Joomla!的模块参数全部基于XML,因此改一下XML就可以有多组addOrganic参数了。

增加addOrganic参数需要两个步骤,一是改XML,二是改PHP。先看XML样本,这里定义了organic_key1和organic_value1这样一组参数:

<param name=”organic_key1″ type=”text” default=”” label=”ANALYTICS_FIRST_SEARCH_VAR” description=”ANALYTICS_FIRST_SEARCH_VAR_DESC” />
<param name=”organic_value1″ type=”text” default=”” label=”ANALYTICS_SEC_SEARCH_VAR” description=”ANALYTICS_SEC_SEARCH_VAR_DESC” />

然后在模块的PHP文件里修改对参数的调用:

$organic_key1       = $params->get(‘organic_key1’);
$organic_value1       = $params->get(‘organic_value1’);

并给出对应的输出:

if($organic_key1 && $organic_value1) {
$output .= “pageTracker._addOrganic(\””.$organic_key1.”\”, \””.$organic_value1.”\”);\n”;
}

通过标准的方式安装更改后的模块之后,我就可以在模块的管理页面设置addOrganic参数了,结果如下:

Administration - Mozilla Firefox-1

保存之后,页面上的js应该有对应的变化了:

<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-178467-2");
pageTracker._addOrganic("soso", "w");
pageTracker._addOrganic("yodao", "q");
pageTracker._addOrganic("sogou", "query");
pageTracker._addOrganic("vnet", "kw");
pageTracker._initData();
pageTracker._trackPageview();
} catch(err) {}
</script>

虽然不如直接写js那么方便,但是毕竟可以通过统一的Joomla!后台来管理Google Analytics了。感兴趣的话可以下载我修改过的mod_analytics_230_raynix模块。

自定义Joomla!的模块/组件参数

Joomla!的灵活结构再次让我省心省事了。虽然Joomla!的菜单导航组件很不错,但是一些不算很通用的功能就需要自己定制,例如为每个栏目设定背景图或者标题图。

我是这样做的:

/administrator/components/com_menus/models/metadata/component.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<metadata>
<state>
<name>Component</name>
<description>Component Parameters</description>
<params>
<param name=”page_title” type=”text” size=”30″ default=”” label=”Page Title” description=”PARAMPAGETITLE” />
<param name=”show_page_title” type=”radio” default=”1″ label=”Show Page Title” description=”SHOW/HIDE THE PAGES TITLE”>
<option value=”0″>No</option>
<option value=”1″>Yes</option>
</param>
<param name=”pageclass_sfx” type=”text” size=”20″ default=”” label=”Page Class Suffix” description=”PARAMPAGECLASSSFX” />
<param name=”@spacer” type=”spacer” default=”” label=”” description=”” />
<param name=”menu_image” type=”imagelist” directory=”/images/stories” hide_default=”1″ default=”” label=”Menu Image” description=”PARAMMENUIMAGE” />
<param name=”bg_image” type=”imagelist” directory=”/images/stories/bg” hide_default=”1″ default=”” label=”Background Image” description=”My background” />
<param name=”@spacer” type=”spacer” default=”” label=”” description=”” />
<param name=”secure” type=”radio” default=”0″ label=”SSL Enabled” description=”PARAMSECURE”>
<option value=”-1″>Off</option>
<option value=”0″>Ignore</option>
<option value=”1″>On</option>
</param>
</params>
<advanced />
</state>
</metadata>

只需照葫芦画瓢即可了,按自己需要添加text/radio/image类型的参数。那么上面自定义的bg_image参数如何读出呢?在templates里面的html override里,例如:

/templates/mytemp/html/com_content/article/default.php

可以如此读出bg_image:

<?php $img_src = $this->params->get(‘bg_img’); ?>

<?php if($img_src != “”) :?>
<img src=”/images/stories/bg/<?php echo $img_src; ?>”/>
<?php endif; ?>

完。

新版网站成长历程

最近我在做森海塞尔中国网站的改版,改版的目标是采用森海塞尔全球网站的新风格,并整理网站结构和内容。全球站采用的CMS大概是来自IBM Lotus的,加上Windows Server、MS SQL Server,身价应该在一万欧以上。作为一个挑战,我打算用免费的开源解决方案来办这件事。

我打算用LAMP环境下的Joomla! 开源CMS系统来做这个项目。

这个是目标效果:)

这次森海塞尔全球站做的要比上一版规范的多,虽然还不是XHTML,但是CSS+DIV已经取代了<table>,这样就很好办了。我直接把CSS拿过来,稍加调整,就已经有了点样子。补充一下,Joomla!自带的menu模块的可定制度非常高,顶部和左边的导航就是用menu模块和CSS完成的。

渐入佳境了。产品分类是利用Joomla!的Extend Menu模块做的。

已经马马虎虎可以糊弄人了:)

更新:升级完成,新旧对比: