介绍

当我决定将我的工程智慧发布到互联网上,并后来为我的个人发展业务建立网站时,我知道我需要一个内容管理系统(CMS)来妥善完成这项工作。尽管我在过去的生活中是一位经验丰富的嵌入式系统工程师,但我之前从未进行过任何严肃的网络发布,所以我不知道从哪里开始,预计会有相当的学习曲线。我最终使用了 Joomla!,它做得相当不错。这篇文章描述了我沿途学到的东西,包括一些设置自己的网站时节省时间的技巧。

我的需求

像所有优秀的工程师一样,我从定义我的需求开始。而在做这件事的时候,我开始尝试一些不同的 CMS,看看哪些最有可能满足它们。CMS 的需求都是基于我希望网站支持的功能,如下所述

  • 发布现有基础内容,主要是文本,有一些图片。
  • 允许在未来添加新的内容项,当灵感来临时撰写它们。
  • 良好的搜索引擎优化(SEO)以及搜索引擎友好(SEF)的 URL。
  • 能够轻松地在内容项之间创建超链接。
  • 包含新内容的自动时事通讯。
  • 首页上的随机内容选择,使其始终保持“新鲜”。
  • 网站应该是自动化的,当我不在时能够自我维护。
  • CMS 应该是免费的(或者至少便宜),最好是开源的。

选择 CMS

在调研内容管理系统(CMS)的过程中,我首先接触到了Mambo,并试用了一段时间。它看起来能够胜任工作,但在研究过程中我了解到Mambo开发团队出现了分裂,从而导致了基于同一代码库的Joomla!的创建。我得出结论,Mambo是死胡同,转而开始研究Joomla!。我还听说Wordpress很受欢迎,但它更倾向于博客;而我想要创建的是一个信息库,而不是博客。

我花了几周时间探索Joomla!,以确定如何让它实现我所需要的功能。事情看起来相当顺利,但我还在网上听到了关于Drupal的好评,我决定至少也应该看看它。Drupal看起来很酷,但我认为Joomla!更受欢迎。我几乎确信两者都能胜任工作,但那时我已经厌倦了评估,实际上想要开始实施一些东西,所以我从未真正了解过Drupal,以至于无法提供公平的比较。只有当你真正使用CMS构建一个复杂的网站时,你才会了解到那些在比较表格中往往被忽视的细微差别,这些差别可能会对实现你想要的功能的难易程度产生重大影响。

1.0版本还是1.5版本?

目前Joomla!有两个受支持的分支:1.0和1.5。版本1.0因为使用非常广泛,所以仍然受到支持。版本1.5出现的时间不长,但我冒险认为它足够稳定,可以用于生产网站,而这个冒险得到了回报。在版本1.0上建立新网站的缺点是,以后迁移到1.5将会很痛苦,而在1.5上建立网站的缺点是,由于未发现的的安全问题导致的发布更加频繁,因此需要稍微多一些维护。此外,并不是所有扩展都适用于1.5。可以通过遗留插件在1.5中使用1.0的扩展,但似乎街上的说法是尽可能避免这样做。我能够找到适用于1.5的所有所需功能的原生扩展。

1.5.5版本存在安全问题,导致一些网站被黑,并迅速发布了1.5.6。一个月后,发布了1.5.7。又过了几个月,另一个安全问题导致了1.5.8的发布。再过两个月,又有一个安全问题导致了1.5.9的发布。到你阅读这篇文章时,可能还有一个更新的版本。我希望对安全发布的需求只是雷达上的一个小波折。然而,如果你正在建立一个新的网站并希望保持最新,我认为使用1.0.X版本是非常疯狂的。使用最新的1.5.X版本。

Joomla!的优势

对于我的需求来说,Joomla!的优点大于缺点。考虑到相同的需求,我不期望其他任何东西有更短的学习曲线,而且我不知道有任何现成的解决方案需要一些定制来满足我的需求。

就我而言,Joomla!的优势如下

  • 它满足了我的需求。这显然非常重要。
  • 它正在被积极维护。
  • 拥有庞大的用户基础和活跃的支持论坛
  • 得到了主机提供商的良好支持。
  • 我可以稍后担心外观和感觉,只需通过切换模板即可。
  • 它有一个广泛的扩展库,正在被积极维护。

然而,Joomla!的核心功能实际上并不足以构建一个实用的现代网站。例如,如果你希望你的网站排名靠前,它的搜索引擎友好性并不足够;在我看来,如果你不这么做,拥有一个网站就没有意义。幸运的是,扩展库包括了大量额外的功能。传统的智慧是,你应该在深入研究扩展库之利用核心功能,但有些我认为对于任何网站都是基本功能的扩展,我认为它们应该成为核心的一部分。

扩展功能往往随着时间的推移超越核心功能。我怀疑Joomla!在这方面可能正是自己成功的受害者;广泛的接受意味着开发者必须非常小心处理诸如向后兼容性等问题。将即使是最受欢迎的扩展中的显著功能集成到核心中,可能在升级时破坏某些人的网站。有些扩展编写得比其他的好;有些能够很好地适应Joomla!架构,而有些则是简单的修补。对于扩展作者来说,发布更新是很容易的,而核心版本的发布则需要团队的共同努力,需要进行大量的回归测试、翻译以及一定量的行政管理工作。所以,扩展中的功能领先于核心功能是可以理解的。

有些核心功能的工作方式并不符合我的预期;但这可能只是我个人的感觉。例如,默认的首页布局是博客风格,文章从左到右排列;而按部分或分类显示博客文章的风格则是从上到下排列。其他人在论坛上抱怨这个问题,有可用的变通方法,并且这个问题已被记录为错误,但核心仍然处理得不一致。为这种不一致性设置变通方法浪费的时间,本可以用来开发网站内容。

部分/分类/内容模型

Joomla! 强制执行严格的两级内容层次结构。你可以以任何方式构建菜单,但内容数据库被划分为部分,每个部分包含分类,分类中包含你的内容,如下所示

部分

分类

文章

我发现我的内容很好地适应了两级层次结构,只有偶尔的例外。但正是这些例外难以处理。如果我的网站复杂得多,以至于需要三级层次结构,我真的不知道如何用Joomla!来实现这一点。

我认为这是Joomla!和Drupal之间最大的区别。它们在许多小方面的工作方式不同,但这种限制深深植入了Joomla!的架构中,而在Drupal中,一切都是树中的节点,具有你喜欢的任何结构。这个限制并不足以让我在已经花了两个月时间学习如何让Joomla!满足我的需求后,再去学习Drupal的细微之处。

Joomla!中文章分类模型的另一个缺点是,每篇文章只能出现在一个部分+分类对中。例如,我无法轻松地在我的系统工程/需求和软件工程/需求分类中同时发布一篇关于需求跟踪的文章,而不需要复制内容或使一篇文章仅指向另一篇文章。这两种解决方案都不是特别对搜索引擎友好。

模板

Joomla!网站的外观和感觉是由模板的使用决定的。Joomla!流行的一个好处是互联网上有大量的模板可用,有的是免费的,有的是基于每次下载付费的。切换模板以改变网站外观是相对简单的,尽管并非所有模板的质量都相同,也不是所有的模板都支持完全相同的模块位置。所以有时你需要调整你的模块,或者网站上的某些元素可能会消失。

模板主要有两类:固定宽度或可变宽度。可变宽度模板允许用户调整浏览器窗口大小,并且网站上的元素会弹性地调整自己以优化屏幕空间的使用。您内容中的文本会自动重新流动以适应。另一方面,固定宽度模板是为特定窗口大小设计的,并且只在特定的屏幕分辨率下工作得最好。并非每个人都具有相同的屏幕分辨率和浏览器大小,因此固定宽度模板会强迫一些用户滚动屏幕以获取他们本可以在充满窗口的内容中看到的信息。您更喜欢固定宽度还是可变宽度模板,最终是个人偏好问题。设计师喜欢固定宽度,因为它给他们更多的控制权。但像我这样的访客更喜欢可变宽度,因为他们可以设置窗口大小以适应屏幕上的其他内容。

尽管Joomla!有大量的模板可用,但我还是很难找到一个我喜欢的。部分问题是大多数模板都是固定宽度的,而我想要一个可变宽度的。许多模板将太多的屏幕空间用于模板本身的 funky 图形,而用于实际内容的却太少。我的网站旨在内容丰富,所以我希望模板能将访客的注意力集中在内容上,而不是模板的漂亮图形上。我尝试从头开始开发一个只有文本的模板,但这证明是一项极其困难的任务,因为我必须同时学习PHP、CSS和Joomla!模板设计规则。我花在这个上的时间是我没有用来开发网站内容的时间,而这正是我想要聚焦的。我最终放弃,并找到一个我足够喜欢的可变宽度模板,开始将其修改成我真正想要的样子。但对于我这样的CSS新手来说,这是非常困难的,而且我总是对其中许多我不太满意的事情感到困扰。

我逐渐意识到为什么设计师喜欢固定宽度模板。我的网站变得越来越复杂,我越来越想切换到固定宽度模板,只是为了避免在调整浏览器窗口大小时遇到的所有意外问题。固定宽度模板 implementation 和测试起来要简单得多,因为您只需要担心一个窗口大小。面对具有不同内容的多个模块元素,让所有东西弹性调整是困难的。我的网站最终每个页面都有几个模块元素,让它们在窗口大小变化时协同工作比我预期的要困难得多。通常我会进行更改,然后看起来很好,然后我调整大小,发现模块互相重叠,或者内容跳转到页面下方,或者嵌入式图表不再在正确的位置。CSS提供了灵活性,允许对象浮动,文本围绕它们流动的理论听起来很棒。但在实践中,当不同页面元素 的XHTML来自不同的模块,而这些模块彼此不知道对方或模板的结构时,让它们在不同的浏览器大小下工作是一项艰苦的工作。

除非您熟悉模板设计规则并且知道要寻找什么,否则没有简单的方法来确定模板的质量。重要的是它能够与您想要使用的所有模块和扩展正确工作。您希望在网站上实现的布局越不寻常,就越有可能需要调整模板。

搜索引擎优化

我希望我的网站在搜索引擎上排名靠前,而无需我支付广告费用。我最想要的是我的网站上的URL包含关键字,比如文章的章节、分类和标题。关键词堆砌已经使得关键词元数据的作用大大降低,但是一些搜索引擎仍然会在URL本身中查找关键词。不幸的是,这使我的URL变得相当长。我怀疑没有哪个严肃的搜索引擎会真的对包含数据库查询的URL感到反感,但我希望我的URL对人类可读,这样它们更适合其他网站引用和收藏。遗憾的是,Joomla!的搜索引擎优化默认情况下并不出色,这就是为什么我推荐下面提到的sh404SEF扩展。

另一个重要的事情是为每篇文章设置描述元数据,因为这是搜索引擎如Google在其搜索结果中显示的您文章摘要的内容。 Google网站管理员帮助中的一篇文章详细说明了这如何使用户在搜索结果中看到您的网站时觉得更值得访问。我的每篇文章在阅读更多标记之前都有一到三行的摘要,最终我发现最简单的方法是将这个摘要从文章中复制到描述元数据。理想情况下,我希望能让Joomla!(或某个扩展)自动为任何没有明确元数据描述的文章执行此操作。

Joomla!在处理描述元数据方面的不足是,虽然文章可以有描述,但章节和分类表却不能。sh404SEF扩展允许使用任意元数据,这绕过了这个问题,但随后的问题是在添加新的章节和分类时保持sh404SEF元数据的更新。我希望能看到Joomla!核心解决这个问题。Google有一个工具可以在他们的网站管理员工具中警告缺失或不充分的描述,这绝对值得一试,下面提到的缺失元数据扩展也是如此。

构建网站

作为对网站内容管理系统的新手,我惊讶地发现,默认情况下,构建Joomla!网站涉及到在网站本身上实时工作。您安装软件,创建数据库,然后通过Joomla!后端开始向数据库添加内容。一旦结构设置完毕,您也可以通过前端在网站上添加文章。

我习惯了使用像PerforceSubversion这样的版本控制系统进行软件开发,这些系统允许开发者在单个原子提交中提交一组文件的更改;但它们似乎在这个模型中没有位置。如果您想同时修改两个相互引用的Joomla!文章,您必须一次修改一个,从而留下不一致的窗口,或者将网站离线,或者使用复制工具。在网站实时时对网站结构或多个文章进行重大原子更改是不可能的。回滚更改是困难或不可能的。也许这只是所有内容管理系统共享的数据库模型的产物。如果数据库损坏,我有种感觉我麻烦大了。我不能简单地回到我知道运作合理的上一个更改列表。所以我求助于使用JoomlaPack进行备份,并交叉手指希望。

我惊讶地发现,在提交我的网站之前,Google就已经找到了我的网站并开始索引它。除非网站处于上线状态,否则我无法测试一些事情,比如未登录时的网站导航。最终,在完成我想要使用的SEF URL格式之前,我的网站就已经出现在Google的索引中,这意味着我必须手动删除这些条目,否则从Google访问的访客会遇到404错误。由于我付出了很大努力才让网站被Google索引,我不愿意删除任何东西;但我希望链接到我的网站可以正常工作。

XAMPP

版本:1.6.8

在实时网站上构建的问题在于,它看起来像一个建筑工地,这对偶然发现的访客来说显得不专业。这个问题的解决方案是使用像XAMPP这样的本地主机包,在您的本地机器上构建并安装一个可用的Joomla!实例,然后使用像JoomlaPack这样的工具一步将其实例迁移到实时网站。

当我为我的新个人发展/人生教练业务构建第二个网站时,我在Windows XP机器上使用了XAMPP,它工作得很好,只有几个小问题:配置Mercury邮件传输代理以支持PHP邮件功能很困难,因此我无法测试站点功能,如联系面板和Vemod新闻邮件程序。我在实时网站上很难让这些功能正常工作,所以能够在本地首先测试它们将会很方便。我还没有找到容易的解决方案。我还发现JCE中的拼写检查器在本地无法工作。登录管理员后端时,XAMPP允许我使用大写的ADMINISTRATOR登录,一开始看起来可以工作,但导致主管理菜单停止工作。我花了很多时间才弄清楚问题所在,所以请确保在URL中使用小写的aDMINISTRATOR

.htaccess

顶级Joomla!目录中的htaccess文件为网页服务器提供配置信息,在大多数主机服务提供商那里通常是某种版本的Apache。随Joomla!提供的文件未经修改即可工作,但在通过浏览器运行安装程序后,需要将其重命名为.htaccess。对其进行小的修改以重写对您的网站的引用,使得搜索引擎在索引时始终一致,无论是有无www.前缀。您选择哪一个其实并不重要,您的网站两种方式都可以访问,但如果您不在.htaccess文件中通过重写不太喜欢的选项来强制一个偏好,搜索引擎可能会以两种方式索引它,并在过程中分散您的页面排名。查找以下行

# RewriteBase /

如果您希望您的网站被称为domain.com,请添加以下两行

# Rule for duplicate content removal : www.domain.com vs domain.com
RewriteCond %{HTTP_HOST} ^www.\domain\.com [NC]
RewriteRule (.*) http://domain.com/$1 [R=301,L,NC]

或者,如果您希望您的网站被称为www.domain.com,请添加以下行

# Rule for duplicate content removal : domain.com vs www.domain.com
RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule (.*) http://domain.com/$1 [R=301,L,NC]

保持当前

对Joomla!进行小版本升级(从1.5.X到1.5.Y)很容易,因为开发者发布了补丁包,您只需将其解压到网站安装目录。如果您的服务器提供商给了您cPanel访问权限,请使用它来解压.tar.gz升级包。不要在cPanel 11中使用.zip升级包,因为它在解压.zip时无法覆盖现有文件。

注意,如果您的托管服务提供商通过Fantastico安装Joomla!,您可能需要安装一个补丁包以将其升级到最新版本。Fantastico可以为您执行此操作,但需要等待很长时间,而额外的时间延迟意味着您将始终处于过时状态,并且您的网站容易受到黑客攻击。信不信由您,一旦像Joomla!这样的软件包中宣布存在安全漏洞,一群黑客就会开发出利用这些漏洞的程序,他们的脚本小子朋友们开始攻击那些还没有升级的网站。他们如果能把力量用在好的方面而不是邪恶的方面就好了。安全的价格是永恒的警惕,这意味着要保持更新;这就是为什么Drupal社区明确警告不要使用Fantastico


必备扩展

我认为以下扩展对任何Joomla!网站都是基本的功能,无论您的网站功能如何。我将稍后描述的其他扩展取决于您需要的功能。它们都非常优秀,我非常感谢它们的作者免费提供这些扩展!在许多情况下,我评估了多个扩展以获取我需要的功能,我最终确定的是我所找到的最好的。

下面我将引用与我评论相关的扩展版本,但到您阅读这篇文章时,它们很可能已经更新了。在您安装时,始终使用扩展库中可用的最新版本。标题中的链接将直接带您进入扩展库中每个扩展的最新版本。

sh404SEF

版本:15_1.0.16_Beta_build_222

我想要这个扩展的主要功能是比核心更友好的搜索引擎URL。我强烈推荐它。如果您不使用某种形式的SEO扩展,您的网站在搜索引擎中的排名将不会很好。当这个扩展如此优秀时,其他商业Joomla! SEO解决方案似乎都是多余的。它主要的缺点是它本身就是必需的;这个功能应该内置在Joomla!核心中。作者不得不玩一些把戏来使这个扩展工作,比如在页面生成时实时重写meta标签和其他信息。

sh404SEF与Joomla!的集成存在一些不足之处,因为它需要一些尚未存在核心功能。一个例子是在我之前提到的部分和分类表中设置description meta标签。Sh404SEF提供了在任何任意URL上设置meta标签的方法,但如果meta信息可以像内容项目旁边一样输入到部分或分类描述中,那就更好了。

我通过遵循sh404SEF文档中的说明,发现很容易通过.htaccess 进行URL重写。使用随Joomla!核心提供的未经修改的htaccess.txt 文件工作效果很好,但我花了一些时间才弄清楚如何在sh404SEF配置中设置适当的重写模式。它位于高级选项卡上,只有当您在sh404SEF仪表板上激活了扩展显示之后,选择sh404SEF配置时才会出现。sh404SEF中有数以千计的设置,一开始可能会让人眼花缭乱。作者试图让初学者用户更容易使用,他们可能无法让.htaccess工作,但隐藏这个选项卡确实让我感到困惑。

另一个提示是在sh404SEF配置中的Meta/SEO下激活重写内容项目标题为H1元素的选项。理想情况下,这个选项应该是默认启用的,但并不是因为大多数模板都需要调整CSS以应用适当的H1样式信息;否则标题在搜索引擎看来像是标题,但对人类来说则不是。

sh404SEF能够在您更改设置时实时生成搜索引擎友好的URL,并且会建议您清除缓存。这将导致来自搜索引擎或书签的访客在您的网站上访问任何页面时都会出现404“未找到”错误,直到您强制sh404SEF为您的所有页面重新生成SEF URL。做到这一点最简单的方法是查看您自己的站点地图;如果您忘记了,一旦Google查看了您的站点地图,他们每天都会为您查看。请参考下面的Xmap了解如何操作。

sh404SEF的作者在他的论坛上非常活跃,这是获取支持的最佳地点,也可以在Joomla! SEO论坛找到他。他经常在他的网站上发布新的测试版本,然后才会通过扩展目录提供。

在我理想的世界中,Joomla!核心团队会将sh404SEF的功能优雅地集成到核心中,选择我所需要的默认设置,这样就不会有太多复杂或令人困惑的选项。当我考虑到Joomla! SEF扩展的作者必须做的工作,比如为其他扩展开发插件接口来重写他们的URL,以及需要考虑的排列组合数量,我不禁会想:“为什么这不是核心功能?”

JCE

版本:管理组件1.5.0,编辑器插件1.5.1

我需要Joomla内容编辑器(JCE)扩展,以便在实际中在内容项之间插入超链接。它非常好,我希望它是Joomla!的默认编辑器。它就是能工作。我唯一的愿望是它可以在打开内容项时自动执行拼写检查。

请记住安装JCE的组件和插件文件以使其工作。我有时在卸载时遇到问题,收到错误消息“无法删除选定的文件:'en-GB.com_jce.ini'”,还有其他几个错误。移除组件也会在扩展管理器中移除插件条目,留下一些在重新安装时会给您错误信息的东西。如果您想移除JCE,请先移除插件,然后移除组件。

Xmap

版本:1.2

您的网站需要站点地图,有三个原因。首先,它可以让访客了解全貌。其次,搜索引擎如Google喜欢能够一次找到您网站上的所有内容。第三,它强制sh404SEF为您的网站上的每个页面重新生成SEF URL。

Google在他们的网站管理员工具中有一个非常友好的站点地图提交工具,您还应该在您的robots.txt文件中引用它,这样每个支持站点地图的搜索引擎都能找到它。在robots.txt中的行应该看起来像

Sitemap: http://GrahamStoney.com/index.php?option=com_xmap&sitemap=1&view=xml&no_html=1

链接应该是Xmap在组件Xmap,站点地图,选项,首选项中显示的XML站点地图。请注意,Google建议您仍然手动提交站点地图,以便他们可以为您提供反馈。

我对Xmap提供的CSS不满意,所以我建议用这个替换它

.sitemap ul {
	display		: block;
	margin		: 0;
	padding		: 0;
}
.sitemap ul li {
	margin		: 0;
	padding		: 0;
	white-space	: nowrap;
	background	: transparent;
}
.sitemap a img {
	border		: none;
}
.sitemap ul.level_0 li {
	margin		: 0 0 1em 2em;
}
.sitemap ul.level_1 li {
	margin		: 0 0 0.5em 4em;
}
.sitemap ul.level_2 li {
	margin		: 0 0 0 4em;
}
.sitemap .active {
	font-style	: italic;
}

请检查Xmap的选项,首选项中的CSS类名是否设置为与Xmap的CSS窗口中的类名相匹配,例如如果您想使用上面的样式,则为sitemap

我无法让Xmap内置的模板编辑器保存我对.css文件的更改。它说我已经保存了更改,但当我再次打开它时,旧的文件仍然在那里。我不得不使用cPanel编辑器来编辑该文件。

默认情况下,Xmap 会生成一行包含链接回作者网站的 由...驱动 字样,这可能不是您想要的效果。但是您可以通过组件,Xmap,网站地图,选项,首选项中取消勾选 在显示选项中包含作者链接 来禁用此功能。

JoomlaPack

版本:2.0.1

一旦您使用 XAMPP 在本地机器上构建好网站,您需要一个方法将其传输到您的托管服务提供商。一旦网站开始运行,您还需要一种方法来备份数据,以防托管服务提供商出现故障或您的网站被黑客攻击。JoomlaPack 就是这两个方面问题的解决方案。我的托管服务提供商对我的数据恢复收费,而且一些脚本小子喜欢寻找最新的漏洞并让网站宕机,因此我需要确保我的数据是安全的。这个扩展构建了一个包含您网站上所有内容的 .ZIP 文件,包括 Joomla! 安装程序,您的内容数据库以及一个安装程序来设置所有内容。它就像金子一样宝贵。

JoomlaPack 的一个特点是,根据您的托管服务提供商的配置,它生成的 .ZIP 文件可能不总是有正确的 CRC 值,因此如果您使用常规的 .ZIP 解压缩工具打开它们时可能会收到警告。不过数据是安全存储的,这一点在详细的 PDF 文档和开发者网站上都有充分说明。

由于一个托管服务提供商的 PHP 安全设置,我在恢复 JoomlaPack 存档时遇到了问题,出现了警告信息:“警告:由于安全原因,ini_set() 已经被禁用...”,最终导致致命错误。解决方法是

  • 在 public_html 目录下创建一个 "php.ini" 文件,内容为
disabled_functions = 
  • 打开 .htaccess 文件并包含这行代码,将 “username” 替换为您的用户名
suPHP_ConfigPath /home/username/public_html

我遇到的另一个问题是我的托管服务提供商只运行 MySQL 4,而 XAMPP附带的是 MySQL 5。为了将我的网站迁移上线,我需要设置 JoomlaPack 配置中的高级,数据库导出样式为“强制 MySQL 4 兼容”。否则,我在实时网站的数据库恢复过程中会遇到致命错误。JoomlaPack 团队运营着一个优秀的支持论坛。

缺失元数据

版本:1.0

如果您到现在还没有弄明白,元数据对于获得良好的搜索引擎排名非常重要。这个扩展在您的后台仪表板上提供了一个列表,列出了所有当前没有元数据的内容项目。它是不可或缺的。安装后,您必须在扩展,模块管理器,管理员模块面板下手动激活该扩展,并将位置设置为 CPanel 以显示信息。


其他扩展

除了上述必需的扩展之外,我发现自己网站上以下扩展也很有用。您是否也需要它们将取决于您的需求是否与我的相似。

Google Adsense

版本:3.0 Clicksafe

我想要在我的网站上投放一些广告,以帮助支付账单。如果我是免费分享我的智慧,我想要得到 某种 回报,而不仅仅是感觉像一个好人帮助其他人更高效地完成工作。最常用的方法是 Google 的 Adsense。它的工作方式是 Google 会查看您网站的内容,将您的内容与广告商竞价的关鍵词匹配,并在您的网站上动态生成广告。当访问者点击这些广告之一时,您将获得广告商为其广告支付的金额,减去 Google 的分成。

有许多扩展可以将 Google Ads 添加到您的网站。我最终使用了 JoomlaSpan,因为它看起来最容易配置。它还有一个很酷的 clicksafe 功能,允许您注册 IP 地址,以避免向自己展示实时广告,从而意外点击它们,并帮助处理点击轰炸;这些都有可能让您被 Adsense 程序封禁。但是,如果您使用的是动态 IP 地址的 ISP,这可能会有些问题。

为了帮助 Google 更准确地定位您网站上每个页面的广告,您应该将 google_ad_section_start/end 标记 添加到您的模板中,以标明页面的实际内容开始和结束的位置。为此,您需要修改模板的 index.php 文件,并在 <jdoc:include type="component" /> 语句周围放置标记,使其看起来像这样

<!-- google_ad_section_start -->
<jdoc:include type="component" />
<!-- google_ad_section_end >

理想情况下,我想要一个 Adsense 模块,可以根据文章作者的不同切换 Google 发布者 ID,这样广告收入就会自动转给产生文章的作者。这将有助于鼓励新贡献者加入我的网站并贡献优质内容,但迄今为止,我还没有找到能够这样做的扩展。

Vemod 新闻邮件程序

版本:1.2.12

Vemod 与其他免费新闻简报扩展的区别在于,它可以自动编译您网站上的新内容项生成新闻。您所要做的就是设置它,然后继续发布内容项。它会完成其他工作。我感觉我必须稍微与之斗争才能使其工作,但我仍然推荐它。作者对问题的响应非常及时,我还为他买了一杯 Latte Macchiato,以便合法地从我的网站上删除他的版权信息。我认为你也应该这么做。Vemod 的一个非常好的特点是,它还可以包括来自任何模块的内容,包括其他非核心扩展。

Vemod 可以通过 cron 脚本触发,或者通过修改您的网站模板来添加一个钩子,通过该钩子发送新闻简报。前者设置起来更复杂,而后者如果没有人访问您的网站,即使您自上一个新闻简报以来发布了新内容,也不会发送新闻简报。

我遇到了 Vemod、sh404SEF 和 mod_login 组合的问题。在 Vemod 页面上使用 sh404SEF 发布登录面板导致登录出现问题。在 sh404SEF 中禁用 Vemod 模块的 SEF URL 解决了这个问题。

我很难按需生成测试新闻简报,作者论坛上有关于这个问题的讨论。要做到这一点,您必须以 admin 身份登录到 Joomla! 前端,并转到新闻简报页面,那里将出现一个预览按钮。或者,将编译间隔设置得很短,并向网站提交内容项,以测试新闻邮件是否正在正确生成并发送。这并不是我真正想在实时网站上做的事情。

在升级 Vemod 扩展之前,请确保使用 Vemod 的数据库 备份 功能,否则您将丢失所有的新闻简报设置。

终极社交书签插件

版本:1.0.3

在没有高层朋友在页面排名良好的网站上,我需要一种方法来为我的网站生成优质链接。一种方法是提供在您的内容页面上轻松进行社交书签的功能。这允许用户轻松地使用像DiggDel.icio.us这样的网站来收藏您的文章,为您网站提供回链。您的文章越受欢迎,这些回链的排名就越好。我是在GreatEngineering.net上线后才了解到社交书签的,而内容管理系统的一个优势就是,我所要做的就是安装和配置这个插件,以生成每个内容页面所需的链接和图标,而无需编辑任何内容本身。

这个插件是允许用户对您的网站进行社交书签的完美解决方案。在您的文章中自动放置Digg提交徽章真的很酷。我唯一的功能愿望是,社交书签按钮默认不要出现在页面的打印版本中,尽管这可以通过编辑网站模板来实现。

yvComment

版本:1.19.3

这个扩展允许用户对您的文章进行评论。这是当今网站非常普遍的功能,我惊讶于核心中没有这个功能。作者在整合方面做得非常出色;这看起来是集成得更好的扩展之一。如果您想避免收到垃圾邮件,您还需要安装Bigo Captcha扩展,并且需要在yvComment插件设置和Bigo Captcha插件设置中显式启用。

我建议您为评论创建一个特定的版块和分类,并选择使用内容表,这样yvComment就会像处理普通文章一样处理评论。这允许您对评论进行评论,并可以在Joomla!内容管理器中管理评论。请注意,您的版块和分类必须专门供yvComment使用;不要与其他非评论内容项共享版块。

该扩展会生成一个指向作者主页的链接,您可能希望将其移除。首先向项目捐赠,然后编辑components/com_yvcomment/views/comment/tmpl/default.php,搜索PoweredBy并删除该行。

Sourcerer

版本 1.0.0

拥有像JCE这样的WYSIWYG编辑器的复杂CMS系统实际上可能会使一些简单的事情比您想象的要困难。比如,如何将来自亚马逊联盟计划的原始HTML粘贴到您的内容中?答案是安装Sourcerer插件,并用Joomla!插件标签{source}{/source}包装原始HTML。您还需要在内容、文章管理器、参数、过滤规则中禁用Joomla!的默认内容过滤规则,否则您的自定义HTML将消失。

Mini Front Page

版本:1.2.4

这是我找到的唯一一个能够从任何版块生成随机内容项的扩展;不仅仅是内容的引用,而是内容本身。它实际上能做很多事情,但我只在首页和新闻简报上使用它,以保持内容的更新。


结论

搭建我的前两个严肃的网站涉及一个很大的学习曲线,我花了很长时间才克服,并且我有很多小问题要解决。Joomla!的核心功能缺少一些构建严肃网站所需的重要特性,这使得它感觉有点像玩具,并且我不得不进行大量的调试以使一切运行得尽可能优化。但是通过添加扩展,我最终做到了,而且在我已经知道该怎么做的情况下,第二个站点速度快得多。也许这是网络复杂性和快速进展的必然结果。我真的不能说其他任何CMS是否更好,因为我实际上从未用其他任何东西构建过真正的网站。不过,现在我的网站已经在运行,我可以说Joomla!是有效的,我对它非常满意。

鸣谢

我要感谢以下人员为本文的各个部分提供反馈和帮助:Thomas Allin, Ryan Demmer, Yannick Gaultier, David from JoomlaSpan, Nikhil Parachure, Andy Sikumbang, P.J. Swesey, Yuri Volkov

传记

Graham Stoney是一位前计算机/嵌入式系统/生物医学工程师,他决定生活中还有更多东西,放弃了所有这些来进入个人发展行业。他现在是人生教练,教导人们如何通过改变心态和挑战自我限制信念来拥有美好的生活。他仍然搭建自己的网站,可以通过GrahamStoney.com与他联系。