升级到2.5后网站出了一些问题

原来的网站是用1.7做的,用的模板是joomla 1.7自带的Beez20模板。 在做的时候修改了模板目录下的index.php文件,把右上角调整字体的几个按钮和页面最下方的灰色长条去掉了,此外还有一些css的调整。
前不久,空间商来了一封信,说因为安全原因,自动将我的joomla 1.7 升级到了2.5.8。现在打开网站时发现以上的修改已经全部失效了,包括网站的一些CSS样式也有混乱,想必是因为升级过程中index.php文件和一些CSS文件被覆盖而导致的。现在只能根据页面表现再一点点的回去修改,非常麻烦。
想请问一下和各位高手,这种情况有没有什么办法避免?
已邀请:

~~~~~~~~~ - 上帝给我的使命,就是证明你们都不是最糟糕的

赞同来自:

有办法避免:学会使用 override 。
Joomla 核心本身就支持模板布局的 override,参看本站文章 《修改 Joomla 的 HTML 输出而不动核心文件》
。该文是针对 Joomla 1.5 核心撰写的,但对于 joomla 2.5 核心同样有参考价值,个别地方操作可能稍有变化。
至于 CSS ,要实现 override 不太容易:假如模板自身支持,那就简单了,例如我正在使用的 Gantry 模板,只要站长在模板的 css 目录中自己创建一个 gantry-custom.css 文件,那么该文件就会被模板自动加载,并且最后加载,这就使得站长可以在此文件中写入要僭越的 CSS 代码。 假如你的模板不支持 CSS Overriding,那么,最好对你修改过的 CSS 都做好备份,如果再发生这种“因为升级网站核心而丢失自定义代码”,可以根据备份很快重新改过来。
当然了,对于不支持 CSS Overrding 的模板,还有一个办法就是,借助第三方扩展,加载站长指定的自定义 CSS 文件,并且确保加载在 HTML 代码输出时的 标记之前。
总结一下:要避免自定义代码被覆盖,最好是将你的自定义部分与源代码分割存放,不要直接修改源文件,而是尽量使用 override 技术。

追梦人 - 梦想每个人都有,但不是每个人都有勇气去坚信,我有

赞同来自:

谢谢,读了你的文章,很有帮助。
但是我还有一点不明白之处:
如果我理解无误的话,文章中提到的override是可以对使用该模板的页面中的组件和模块生效;而我碰到的问题是,我需要直接修改beez_20模板目录下的index.php文件,请问这种情况该如何避免升级后修改被覆盖呢?

赤木@晴子 - 明月百年心

赞同来自:

对于核心模板的修改结果,也是可以避免升级覆盖(upgrade-safe)的。
方法就是:复制模板。
把核心自带的 beez_20 模板文件夹整个复制,改名为 beez_2013,然后将其 XML 文件及 PHP 文件中凡是涉及到 beez_20 的字串都查找替换为 beez_2013(因为这个文件夹名称将成为路径的一部分,所以必须与实际路径匹配)。接下来,你对 index.php 想怎么改都可以。
在网站后台的“模板管理”中,如果没找到 beez_2013 这个新模板,那就前往“扩展管理”,使用“探测”安装方式,安装一下,然后再回到“模板管理”,应该可以发现增加了一个新模板叫做 beez_2013(实际上你也知道这就是 beez_20 的修改版),直接选择 beez_2013 作为你的默认模板即可。
总结一句话:千万不要直接修改核心源文件,否则以后升级的次数还多着呢,你每次都再去修改一遍吗?

要回复问题请先登录注册