【转】CMS8

eZ publish 3 安装指南

这个文档包括如何安装eZ publish 3到windows,Linux和freeBSD的快速安装指南。

有关这个安装文件的反馈和有关eZ publish 3的反馈发送到[email protected]

要得到更多的eZ publish 3文档:
http://ez.no/sdk
http://ez.no/manual

离线的文档请参看:
http://yourhost/index.php/sdk
http://yourhost/index.php/manual

http://yourhost/sdk
http://yourhost/manual


内容
----
1. eZ publish 3 需求
2. eZ publish 在Linux和FreeBSD上安装
2.1 数据库设置
2.1.1 MySQL
2.1.2 PostgeSQL
2.2 演示数据
2.3 配置eZ publish
2.4 虚拟主机设置
3. eZ publish 在Windows上安装
3.1 数据库设置
3.1.1 MySQL
3.2 演示数据
3.3 配置eZ publish
3.4 虚拟主机安装



1. eZ publish 3 需求
--------------------
- PHP >= 4.2.3 版本
http://www.php.net
- Apache 1.3 (apache 2.0 可/不可运行)
http://www.apache.org
- MySQL或PostgreSQL数据库
http://www.mysql.org
http://www.postgresql.org
- ImageMagick 和/或 GD编译的PHP版本用于图像转换(不需要)
http://www.imagemagick.org

这些程序的安装在他们各自的主页上都有详细的文档,因此我这里将不介绍。



2. 在Linux和FreeBSD安装eZ publish
---------------------------------
1. 解压缩文件ezpublish-xxx.tar.gz到目录
$ tar xvfz ezpublish-xxx -C
2. $ cd /ezpublish-xxx/
3. $ bin/modfix.sh


2.1 数据库设置
--------------
2.1.1 MySQL
我们需要登录,建立一个新数据库,赋予用户权限并加入一个数据库。

1. $ mysql -u root -p
2. 你现在应该在mysql> 提示符下
mysql> create database ;
3. mysql> grant all on .* to @localhost identified by '';
(这个命令将同样建立制定的用户并附加相关的权限。)
4. 如果你不想演示数据:
$ mysql -u -p < /ezpublish-xxx/kernel/sql/mysql/kernel_schema.sql
$ mysql -u -p < /ezpublish-xxx/kernel/sql/mysql/cleandata.sql

如果你想要演示数据:
$ mysql -u -p < /ezpublish-xxx/kernel/sql/mysql/kernel_schema.sql
$ mysql -u -p < /ezpublish-xxx/kernel/sql/mysql/demodata.sql

2.1.2 PosgreSQL
我们需要登录,建立一个新数据库,赋予用户权限并加入一个数据库。

1. $ su
2. $ createuser
3. $ createdb
4. 如果你不想演示数据:
4. $ psql -U < /ezpublish-xxx/kernel/sql/postgresql/kernel_schema.sql
$ psql -U < /ezpublish-xxx/kernel/sql/postgresql/cleandata.sql

如果你想要演示数据:
现在PostgreSQL没有演示数据。


2.2 演示数据
-------------
演示数据仅仅在MySQL数据库中有,在你处理前,请确认你已经安装了demodata.sql文件
要安装所有的演示数据,你还要打开var.tgz数据包:

1. $ cd /ezpublish-xxx/
2. $ tar xfvz var.tgz
3. $ bin/modfix.sh


2.3 配置eZ publish
------------------
用你喜欢的编辑器打开/ezpublish-xxx/settings/site.ini,设置正确的[DatabaseSettings]段落.
(除了直接使用这个文件,你可以建立一个文件名叫/ezpublish-xxx/settings/override.site.ini.append
Here you can override settings in site.ini,仅仅添加你需要的部分.)你需要选择你想用的数据库参数,数据库主机名字,用户名,口令和数据库名字等。

[DatabaseSettings]
# 使用ezmysql 或者 ezpostgresql
DatabaseImplementation=ezpostgresql
# 需要连接的数据库服务器名字
Server=localhost
# 数据库用户名字
User=
# 数据库用户口令
Password=
# 在以前步骤中你建立的数据库名字
Database=


2.4 虚拟主机设置
----------------
你可使用虚拟主机设置的方式使用eZ publish。当使用虚拟主机的时候,你不需要特别指定URL中的index.php。下边就是一个虚拟主机设置的例子。把这些放置到apache的配置文件中,然后重新启动apache即可。


/ezpublish-xxx/>
Options FollowSymLinks Indexes ExecCGI
AllowOverride None


RewriteEngine On
RewriteRule !/.(gif|css|jpg|png)$ /ezpublish-xxx/index.php

ServerAdmin root@localhost
DocumentRoot /ezpublish-xxx/
ServerName 10.0.0.1




3. 在Windows上安装eZ publish
----------------------------
1. 解压缩ezpublish-xxx.tar.gz到目录
使用一个支持文件类型.tar.gz程序,比如Winzip。
2. 到目录/ezpublish-xxx
3. 确认目录var/cache/ini存在,如果不存在建立它!


3.1 数据库设置
--------------
3.1.1 MySQL
我们需要登录,建立一个新数据库,然后赋予一个用户权限并插入数据库

1. 打开windows的控制台(根据你的windows版本,选择:开始->运行->cmd.exe 或 开始->运行->command.exe)
2. 到你的mysql目录找到mysql.exe文件(应该在bin/目录下)
2. 运行: mysql.exe -u root -p
3. 你现在应该在mysql>提示符下,输入下面的语句:
mysql> create database ;
4. mysql> grant all on .* to @localhost identified by '<口令>';
(这个命令将同样建立制定的用户并附加相关的权限。)
5. 如果你不需要演示数据:
$ mysql.exe -u -p < /ezpublish-xxx/kernel/sql/mysql/kernel_schema.sql
$ mysql.exe -u -p < /ezpublish-xxx/kernel/sql/mysql/cleandata.sql
如果你需要演示数据:
$ mysql.exe -u -p < /ezpublish-xxx/kernel/sql/mysql/kernel_schema.sql
$ mysql.exe -u -p < /ezpublish-xxx/kernel/sql/mysql/demodata.sql

译者注:可选择phpmyadim工具,这是一个更方便的管理mysql的PHP工具。

3.2 演示数据
-------------
演示数据仅仅对于mysql数据库有,在你处理下面的步骤之前,你需要确认你安装的数据库是安装的demodata.sql而不是cleandata.sql文件。
要安装所有的演示数据,你还需要做最后一个步骤:
1. 到/ezpublish-xxx目录
2. 解压缩var.tgz到/ezpublish-xxx


3.3 Configure eZ publish
------------------------
Open /ezpublish-xxx/settings/site.ini in notepad and set
the correct settings in the [DatabaseSettings] section.
You need to set what database implementation you use, hostname of database
server to connect to, user name, password, database name.
(Instead of using this file, you can create a file called
/ezpublish-xxx/settings/override.site.ini.append
Here you can override settings in site.ini. Add only the parts you need.)

[DatabaseSettings]
# Use either ezmysql or ezpostgresql
DatabaseImplementation=ezpostgresql
# Name of server to connect to
Server=localhost
# DB user name
User=
# DB Password
Password=
# database name you have created on previous step
Database=


3.4 Virtualhost setup
---------------------
You can use eZ publish with a virtualhost setup. When using
a virtualhost you don't need to specify the index.php in the URL.

Make sure these lines exists in your apache configfile and is not commented out:
LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c

Below is a sample configuration for virtualhost setup. Include this in
your apache config file and restart apache when you are done.

>
/ezpublish-xxx/>
Options FollowSymLinks Indexes ExecCGI
AllowOverride None


RewriteEngine On
RewriteRule !/.(gif|css|jpg|png|jar)$ ezpublish-xxx/index.php

ServerAdmin root@localhost
DocumentRoot /ezpublish-xxx/
ServerName

Site.INI文件的中文翻译
#?ini charset="iso-8859-1"?
# eZ publish 配置文件
# 注意:并不建议直接修改这个文件,最好是写一个这个文件的覆盖文件。
# 文件名字可以是settings/override/site.ini.append或者
# settings/override/site.ini.append.php。


# 数据库设置部分
[DatabaseSettings]
DatabasePluginPath=
# 使用ezmysql或者ezpostgresql
DatabaseImplementation=ezmysql
Server=localhost
User=root
Password=
Database=nextgen
# 允许slave servers
# slave servers模式将只能使用读取查询
# 对于在负载均衡环境很有用
UseSlaveServer=disabled
#SlaveServerArray[]=localhost
#SlaverServerUser[]=nextgen
#SlaverServerPassword[]=nextgen
#SlaverServerDatabase[]=nextgen
# 在第一次失败以后需要重新连接的次数
ConnectRetries=0
Charset=iso-8859-1
# 在可能的情况下在数据库使用字符集转换过程
UseBuiltinEncoding=true
Socket=disabled
SQLOutput=disabled
UsePersistentConnection=disabled

# 扩展设置
[ExtensionSettings]
ExtensionDirectory=extension
# A list of active extensions, add new ones to activate them
# The extension itself will then have it's settings directory read (if any)
# and any extra configurability is done automatically.
ActiveExtensions[]
# Same as ActiveExtensions but will be loaded after the siteaccess is chosen.
# This allows for activating different extensions on different siteaccesses
ActiveAccessExtensions[]

# 信息收集设置
[InformationCollectionSettings]
# 收集的信息要发送到哪个Email。
[email protected]

# Session 设置
[Session]
# Session要延续的秒数,标准是3天。
SessionTimeout=259200

# 调试模式设置
[DebugSettings]
# 选择是否调试模式,如果disabled将没有调试信息显示
# 如果enabled它将根据DebugIP和DebugIPList的设置进行设置。
# 选择:enabled or disabled
DebugOutput=disabled

# Whether debug is set per IP address. If set to enabled it will user
# DebugIPList for valid ips otherwise all ips get debug.
# Use either enabled or disabled
DebugByIP=disabled

# A array with IP addresses which will get debug information
DebugIPList[]
# Examples
#DebugIPList[]=1.2.3.4
#DebugIPList[]=192.0.0.42
# Controls how debug is displayed, inline means that the debug is displayed in
# page itself while popup will create a new popup window with the debug.
# Popup window might not work in all browsers.
# Use either disabled, inline or popup
# If you use popup you must make sure that a rewrite rules exists for .html files
# or that your site is running in non-virtual host mode. Also some browsers
# have problems with this feature.
Debug=inline

# Controls if redirects should be debuggable, set to enable to get a redirect
# page with debug info.
# This is useful for development while production sites should have it off
DebugRedirection=disabled

# URL转换设置
[URLTranslator]
# 使用enabled或者disabled
Translation=disabled

#
# Enable this if you want to percieve the url as a path element
# for the node tree. By entering the path in the url and ending it
# with a .html you will get the correct node.
NodeTranslation=enabled

# 网站存取设置
[AccessSettings]
#Access=GroupBased
Access=Shared

# 站点设置
[SiteSettings]
# 站点的名字,将在缺省模板中用作标题
SiteName=eZ publish
# 站点的URL,用于在email中链接站点等
SiteURL=example.com
# 在pagelayout中用于metadata中的列表的值
MetaDataArray[author]=eZ systems
MetaDataArray[copyright]=eZ systems
MetaDataArray[description]=Content Management System
MetaDataArray[keywords]=cms, publish, e-commerce, content management
Dir=
# 在根目录中后边直接附加/时候,要显示的页面
IndexPage=/content/view/full/2/
# 在一个module不存在的时候的做法,使用缺省的页面或者displayerror
ErrorHandler=displayerror
# 在错误发生和错误句柄设置到缺省页面时候要显示的
DefaultPage=/content/view/full/2/
# 在不指明任何URI的时候,需要一个缺省的匹配网站存取
DefaultAccess=user
# 登录页面如何船体,使用embedded替换缺省的pagelayout或者使用自定义的loginpagelayout.tpl
LoginPage=custom
# SSL端口,缺省的值会适合大多数站点,但可以根据需要修改。
# 如果这个端口检测到则所有重定向将使用https协议
SSLPort=443

# 设置eZ publish的搜索引擎
[SearchSettings]
SearchEngine=eZSearchEngine
#SearchEngine=openFts

# 用户设置
[UserSettings]
# 如果设置为true,则在口令空的时候会自动产生一个口令并Email给用户
GeneratePasswordIfEmpty=true
GeneratePasswordLength=6
# 匿名用户的ID,这个用户将在用户浏览没有登录时候使用。
AnonymousUserID=10
# 保存新的自己注册用户的地方
DefaultUserPlacement=12
# 保存新的自我注册用户的部分ID(section ID)
DefaultSectionID=1
# 在新建立用户使用哪种回复返回新建立的用户到网站。使用都好分隔
# 回复的类型,当前仅仅是使用Email方式。
RegistrationFeedback=
# 如果各自注册用户需要使用Email确认的时候,选择enabled
VerifyUserEmail=enabled
# 新注册用户需要发送Email的位置
[email protected]
# 用于用户建立的内容类别ID号码
UserClassID=4
# 那个用户组有用户类别,控制那个类别用来显示用户,如果是空则所有类别都可以用。
UserClassGroupID=2
# 那个用户被认为是建立人
UserCreatorID=14
SiteName=ez.no
# 使用md5_password, md5_user, md5_site 或者 plaintext
# md5_password 从口令中产生口令hash。
# md5_user 从用户和口令产生口令hash。
# md5_site 从站点,用户和口令产生口令hash。
# plaintext 不产生hash,但这样口令没有保护,这样会有安全风险。
# recommended since it is a huge security risc.
# 注意:在修改网站名字的时候md5_site产生的口令没有办法工作。
HashType=md5_user
# true means update hash to HashType if it differs when logging in
# This is useful if you're upgrading from an older eZ publish site
# or another system that uses mysql as password type, it will then
# update the hash to whather is set.
UpdateHash=true
# 检验的方式,列表显示可以用来注册的的区域,这里是登录和Email
AuthenticateMatch=login;email
# 在登录退出以后使用的重定向URL
LogoutRedirect=/user/login

#站点控制设置
[SiteAccessSettings]
# 如果你想系统的SETUP设置激活,设置为true
CheckValidity=true
# 如果你不想匿名访问你的站点,设置为true
RequireUserLogin=true
#StaticMatch=sdk

# 当前激活的站点存取列表
AvailableSiteAccessList[]=user
AvailableSiteAccessList[]=admin
AvailableSiteAccessList[]=demo


# 站点存取是否需要调试
DebugAccess=disabled
# 存取匹配的扩展信息是否需要调试
DebugExtraAccess=disabled

# 在不需要用户登录的时候的module或者module/views的列表
AnonymousAccessList[]

# 站点匹配方式的列表,可选则的是:host, index, uri 和 port
MatchOrder=uri;host;port

# 可能的值:disabled, element 或者 regexp
# disabled - 关闭uri匹配
# element - 映射url元素到站点存取名字
# regexp - 根据regexp检验
URIMatchType=element
URIMatchElement=1
URIMatchRegexp=^/([^/]+)/
URIMatchRegexpItem=1

# 使用disabled, map, element, text 或者 regexp
HostMatchType=map
HostMatchElement=0
HostMatchRegexp=^(.+)/.example/.com$
HostMatchRegexpItem=1
HostMatchSubtextPre=
HostMatchSubtextPost=.example.com

# 在使用HostMatchType=map的时候,添加列表
# 每个列表都包含hostname;accessname
#HostMatchMapItems[]=example.com;user
#HostMatchMapItems[]=admin.example.com;admin

# Use either disabled, element, text or regexp
IndexMatchType=regexp
IndexMatchElement=1
IndexMatchRegexp=^/index_(.+)/.php$
IndexMatchRegexpItem=1
IndexMatchSubtextPre=index_
IndexMatchSubtextPost=.php
# A list of siteaccesses that are valid for this site.
# It will be used by the user/login policy to decice if a user
# can login a siteaccess
SiteAccessList[]=user
SiteAccessList[]=admin
SiteAccessList[]=demo

[PortAccessSettings]
# Add entries here if you have port in MatchOrder
# Each entry consists of the port=accessname
1337=user
1338=admin

[RoleSettings]
EnableCaching=true
# A list of modules to omit policy checking on,
# You should add 'role' to the list if you loose
# access to the role module
# You can also specify views by adding a / and the viewname
PolicyOmitList[]=user/login
PolicyOmitList[]=user/logout
PolicyOmitList[]=user/forgotpassword
PolicyOmitList[]=user/register
PolicyOmitList[]=user/activate
PolicyOmitList[]=user/success
PolicyOmitList[]=layout
PolicyOmitList[]=manual
PolicyOmitList[]=ezinfo

[DesignSettings]
# The standard design, is used as fallback design
# if the element is not in the sitedesign
StandardDesign=standard
# 站点的设计
SiteDesign=admin
# AdditionalSiteDesignArray contains an array
# of sitedesigns. These sitedesigns will be used
# if the design was not found in the main
# sitedesign. StandardDesign is the fallback design.
AdditionalSiteDesignList[]=


[SetupSettings]
# The pagelayout to use for first time setups
PageLayout=setup_pagelayout.tpl
# List of tests to be run, critical tests must pass for the setup to continue
CriticalTests=directory_permissions;phpversion;database_extensions;image_conversion;open_basedir;safe_mode
OptionalTests=php_magicquotes;zlib_extension;mbstring_extension;imagegd_extension;imagemagick_program;database_all_extensions;file_upload;php_register_globals
OverrideSiteDesign=standard

# 国家区域配置
[RegionalSettings]
# 站点主要语言
Locale=eng-GB
# 在locale错误的时候设置这里
HTTPLocale=
# The default language for content objects
# Note: Changing this can have catastrophic consequences
# since there might not be any content objects with
# the selected language. Instead the content/translations
# page should be used for adding/removing translations.
ContentObjectLocale=eng-GB
# Controls how xml is stored in content objects.
# disabled - Store with utf8
# enabled - Store with current charset
# if any other text is entered it is assumed to be a charset and will be used
ContentXMLCharset=enabled
# Use either disabled to disable all text translation (faster) or enabled.
# Text translation is automatically disabled when the Locale is set to eng-GB
TextTranslation=enabled
TranslationCache=enabled
# Use either enabled to see which locale files are loaded or disabled to supress debug
Debug=disabled
# By enabling development mode all untranslated texts will be translated
# using the bork rules.
# See lib/ezi18n/classes/ezborktranslator.php for more information.
DevelopmentMode=disabled

[UnitSettings]
# 用于二进制测量的单位
BinaryUnits=byte;bit
# True means use Ki, Mi etc. for binary measures instead of K, M etc.
# This is good if you want to follow proper naming standards.
UseSIUnits=false

[FileSettings]
# 上传文件放置的位置,必须由web server写。
TemporaryDir=/tmp/
# Permission for temporary files, setting it to 0777 means that anyone
# can read and write the files and can be considered a security risk.
# It's preferred to use 0770 and make sure the web server has correct
# user/group access.
TemporaryPermissions=0777
# 新文件要保存的地方,它是在var目录下的。
StorageDir=storage
# Permission for storage directories, setting it to 0777 means that anyone
# can read and write the directories and can be considered a security risk.
# It's preferred to use 0770 and make sure the web server has correct
# user/group access.
StorageDirPermissions=0777
# Permission for storage files, setting it to 0666 means that anyone
# can read and write the files and can be considered a security risk.
# It's preferred to use 0660 and make sure the web server has correct
# user/group access.
StorageFilePermissions=0666
# Directory depth for storing files, this means that it will create
# directories out of the first n characters to make sure not too
# many files are placed in one directory. For instance a file name
# newfile.png will be placed in n/e/w/newfile.png.
DirDepth=3
# 放置log文件,cache文件和其他保存建立文件的地方。
VarDir=var
# The name of the cache dir, it's a subdir of VarDir
# The cache dir can be set absolute, then VarDir will not be prepended
# e.g. /var/ezpublish/cache
CacheDir=cache
# The name of the log dir, it's a subdir of VarDir
LogDir=log

# 图像设置
[ImageSettings]
# Permission for new image directories, setting it to 0777 means that anyone
# can read and write the files and can be considered a security risk.
# It's preferred to use 0770 and make sure the web server has correct
# user/group access.
NewDirPermissions=0777
# Permission for new images, setting it to 0666 means that anyone
# can read and write the files and can be considered a security risk.
# It's preferred to use 0660 and make sure the web server has correct
# user/group access.
NewImagePermissions=0666
# 小尺寸的图像设置:
SmallSizeWidth=100
SmallSizeHeight=100
# 中尺寸的图像设置:
MediumSizeWidth=150
MediumSizeHeight=150
# 大尺寸的图像设置:
LargeSizeWidth=600
LargeSizeHeight=600
# 参考尺寸的图像设置:
ReferenceSizeWidth=600
ReferenceSizeHeight=600
ScaleLargerThenOriginal=false
# 原文件目录
OriginalDir=original
# 参考图像目录
ReferenceDir=reference
# 变化图像目录
VariationsDir=variations

[TemplateSettings]
# A ; (semicolon) separated list of directories to look for eztemplateautoload.php files
# These files will be used to automatically load in template functions and operators
# You can new ones if you create custom template code.
AutoloadPath=lib/eztemplate/classes/;kernel/common/
# Use either enabled to see which template files are loaded or disabled to supress debug
Debug=disabled
# Determines whether the internal node tree should be cached, by enabling this the loading
# and parsing of templates is significantly reduced.
NodeTreeCaching=enabled
# Determines whether the templates should be compiled to PHP code, by enabling this the loading
# and parsing of templates is omitted and template processing is significantly reduced.
# Note: The template compiling is currently experimental and may not render templates correctly yet.
TemplateCompile=disabled

# 注意:
# 下边的设置用于模板编译开放用处,并不适合普通站点。
#
# 是否在cache文件中包含注释
CompileComments=disabled
# 是否包含调试堆积
CompileAccumulators=disabled
# 是否包含调试时间点
CompileTimingPoints=disabled
# 在disabled模板compilation不包含节点位置的时候,位置的信息将显示行和列的信息用来指明警告和错误
CompileNodePlacements=enabled
# 在disabled模板compilation时候,文件仅仅被产生而不执行。这以为着普通的模板处理
CompileExecution=enabled
# 如果enabled,即使缓存在,模板也会被编译。
CompileAlwaysGenerate=disabled
# An array with node trees to include in the compiled template file.
# Including them will increase the size of the cache files and
# is only useful for template compilation development.
# Possible entries are:
# transformed - The tree after node transformation has been done
# static - The tree after static extraction has been done
# combined - The tree after static element combines has been done
# original - The originally parsed tree
CompileIncludeNodeTree[]
#CompileIncludeNodeTree[]=final
#CompileIncludeNodeTree[]=transformed
#CompileIncludeNodeTree[]=static
#CompileIncludeNodeTree[]=combined
#CompileIncludeNodeTree[]=original

[ContentSettings]
# A list of locale strings which content objects are allowed to be translated to.
TranslationList=eng-GB;nor-NO;nno-NO;eng-US
# Node where all new related objects are default placed
# OBSOLETE: See content.ini for more advanced settings
SurplusNode=3
# Where to place view cache files, it's a subdir of the global cache dir.
CacheDir=content
# Whether to use view caching or not
ViewCaching=enabled
# A list of viewmodes which will be cached
CachedViewModes=full;sitemap
# A list of viewmodes which displays more than just it's immediate children
# These viewmodes are too complex to cleanup file by file and needs to
# be expired globally.
ComplexDisplayViewModes=sitemap
# The threshold for file cleanup, if it is exceeded a global expiry is used instead
# The value is calculated with the number of affected nodes * viewmodes * translations * sitedesign
CacheThreshold=120

[MailSettings]
# The type of transport for emails, can be either sendmail or SMTP
# Window users should probably use SMTP
Transport=sendmail
# Configuration for SMTP
TransportServer=
TransportPort=25
TransportUser=
TransportPassword=
[email protected]
# The address which will be set at the sender of the e-mail as default
[email protected]
# Which charset are allowed to send directly, those that do not match
# is converted to OutputCharset before being sent.
AllowedCharsets[]
AllowedCharsets[]=us-ascii
AllowedCharsets[]=utf-8
AllowedCharsets[]=iso-8859-1
AllowedCharsets[]=iso-8859-15
# Which charset to convert emails to if they are not in correct format
OutputCharset=utf-8

# Setting for shipping cost for the simple shipping workflow
[SimpleShippingWorkflow]
ShippingCost=12

Posted on October 20, 2006 1:25 PM | Permalink | Comments (0) | TrackBacks (0)

eZ Publish

Open Source Enterprise Content Management System

* Enterprise software for CMS, e-commerce and document management

* Full freedom of Open Source code, with free and commercial license options

* Total product responsibility from eZ systems, the creator of eZ publish Content Management System

http://ez.no/products/ez_publish/demo

eZ Publish 的文章 - 中国开源联盟 | Open Source

 

Posted on October 20, 2006 1:10 PM | Permalink | Comments (0) | TrackBacks (0)

Mambo CMS

Mambo的介绍

Mambo, 中文意思为曼波音乐(源于古巴黑人音乐),是这个星球上功能最强大的开放源码的智能建站系统之一。在2004年4月20日伦敦举行的Linux用户和开发 员大会上,Mambo从众多优秀的开放源码系统中脱颖而出,获得2004年度最佳Linux开放源码系统奖项,和它同场竞技的有KDE、Firebird SQL以及eGroupware等,这些都是知名度很高,被广泛使用的系统,现在却沦为Mambo的手下败将,可想而知,Mambo的魔力有多大!

Mambo是功能非常强大的智能建站系统,它是网站的后台引擎,使网站内容的创建、管理和共享更加简易。目前Mambo用户快超过了Phpnuke,他吸收了phpnuke,xoops的很多优点,更灵活,更强大,有数不清的插件和皮肤下载

 

目录

[隐藏]
  • 1 第一式,什么是内容管理?
  • 2 第二式,怎样组织你的网站?
  • 3 第三式,设计站点外观
  • 4 第四式,模块与页面
  • 5 第五式,添加文本和图片
  • 6 第六式,链接
  • 7 第七式,首页和blog显示
  • 8 第八式,模块、组件和触发器
  • 9 第九式,它在哪?

if (window.showTocToggle) { var tocShowText = "显示"; var tocHideText = "隐藏"; showTocToggle(); }

 

[ 编辑]

第一式,什么是内容管理?

对 于大多数人的思维习惯来说,网站是由页面组成的,而页面之间用链接来跳转和组织起来;每个页面包含静态的内容,这些内容一旦被创建,即不再改变 (直到网站管理者改变它)。你可以把这样的网站想象成有一个树形结构:首页上有一个菜单,菜单上有几个按钮指向下级页面,下级页面上有许多文章标题,同样 是链接,这些标题指向所属的文章。

曼波的组织方式却与此迥异,因为显示在你的网站上的内容基本上都是动态的——当访问者对网页的定制改 变,新闻消息来源 (newsfeed)变更,或者网站成员向站点发表内容的时候,网页就会立即的产生变化。无论什么时候你重新刷新页面,网页的内容都会被更新。所以对于曼 波系统来说,别想着所谓某一个特定的页面上的内容,你需要一个完全不同的思维。(关于页面可以参照第四式)

你的网站的每一页都将包括有 各种各样的内容块(往往由模块来表达,关于模块参照第四式)。你可以先设计一个模板(关于模版参见第三式), 模板上将勾勒出这些内容块的布局,详细的位置排布,还包括网站的背景、文本的字体颜色还有logo大图。然后,你把模块(就是该模块的调用函数)放置到这 些分配给它的地方去(copy即可)。最后,你把网站的内容一条一条的添加上,并指定给页面的主体位置(其实,你是把内容指定给了菜单项,你会了解到曼波 的基础就是菜单,但现在可以先按照页面这个通俗说法来理解。)

第一式到此为止,你已经对内容管理了解得够多了,这表示你的修炼已有小成,让我们开始建设你的网站吧!

[ 编辑]

第二式,怎样组织你的网站?

我 想你已经迫不及待的想立马做出几个页面出来然后上传,好让大家欣赏一下你的大作。不过,这可并不是曼波运作的方式。在你哪怕制作一个最最简单的页 面之前,有些东西是你必须知道的。别泄气,修习武功就是要戒骄戒躁。像在少林派入门弟子一个少林长拳就要练五年哪。一旦,你为你的网站设置好了所有的参 数,编辑发布你的网站——让它看起来就跟真正专业的网站一模一样——就是非常小菜一碟的事情了。

对于曼波现有的版本(4.5.x)来 说,它有一个固定的内容分级体系。你必须把你的所有的内容分为三个层次,不能多,不能少。5.0版本 应该可以做到为任意分级:如果你只想有一个层次,比如把你所有的内容堆在首页上,你就可以不用非把他们划分成更多层次;如果你需要分成十级,你也可以轻松 的做到,就好像在windows下可以建任意多的子目录一样。但是目前为止,你只能使用它的三级体系:单元,类别和内容。

按照前者包括后者,单元是最大的一个范畴。单元可以分为许多的类别,类别是个小点的范畴,它包含了内容。所有的你网页上想呈现给读者看的,文本或者图片,都是这里所说的“内容”的意思。在你创建内容之前,你得先创建它所属的单元和类别。

你 可以这么考虑一个资料系统:单元好比抽屉,类别好比文件夹,内容就好比资料。如果你把你所有的打印的资料统统扔在房间各处,你的窝将惨不 忍睹。如果你把他们归类放在好多文件夹里,然后还是全丢地上,这也并没好多少。如果你把很多资料直接放在抽屉里,同样不利于查找翻阅。所以呢,把东西归整 好是一个好习惯,把你的资料(内容)放在文件夹(类别)里,然后再把文件夹放在抽屉(单元)里。是不是井井有条?

使用单元和分类的另一个好处是可以给它们分配不同的模版(在模板管理中指定)。举例说明:新闻单元可以只有两栏的布局,而不是三栏,因此当你的网站的会员增加新闻条目时,将看到和其他新闻条目一样的界面风格,而不是产品功能介绍页面的风格。

除 了上文所说的需要被归类在类别和单元中的内容之外,还有另外一种类型的内容叫做“静态内容”,它不归属于任何的单元或类别,它是独立的。 这里的静态没有别的特殊含义,也不是和“动态”相对立的那个意思。它仅仅是说,它独立于单元或者类别之外。在安装好曼波之后,你会发现它包含了两个静态内 容:中英双份的通用公共许可证(GPL)——也许你可以从中体会到有某些特殊的内容是无法被包含到你的网站内容三级体系中的,好比你的书桌玻璃板下面压着 的课程表,它是你的资料,但却不属于你的任意一门课程。此外,据我所知,你也不能够把静态内容发布到首页上去,但是通常意义上的内容都是可以的。

总而言之,在构建你的网站之前,不论你是想让它有很吸引人的内容还是有很酷的界面,首先把你的内容分门别类进行整理,然后扩张或压缩,把它们统统塞进曼波4.5.x的单元和类别中去——同时等待5.0的时代的到来,那将是一个好日子。

[ 编辑]

第三式,设计站点外观

决定你的网站外观的是模板。打开曼波的模板页(网站>模板管理>网站模板),你会看到已经有若干列出来的模板。你可以很方便的把任意的模板指定为默认模板,只需要选中该模板然后点击工具栏上的“默认”按钮。

可 是,模板究竟是什么呢?它是一组决定站点外观造型的文件的集合。其中核心文件是“index.php”,这个文件中包括了许多html代 码,用来实现诸如表格或层(用来规划内容块布局)和你的网站logo等,还有许多php代码,用来实现动态交互应用,诸如登录和退出、在线调查等。第二个 重要的文件是 CSS文件,它决定了网页中的文本字体、颜色和边框等。

在这里给出一张简单的首页(index.php)的布局图,它可以由表格或层体现:


在 这张图里面,header.jpg是你的网站logo;body是放置首页主要内容的区域;而橙黄色的区域,就是所谓的“位 置”,它是曼波的一个术语,表示在这些区域将被插入各种模块。这些模块可以被方便的投入使用或者被隐藏。比如我们可以在top这一块放上一个搜索模块和日 期显示模块,在 left这块放上导航菜单和登录模块。这一切都非常简单,你只需要在制作模板的时候(任意的网页工具,frontpage,dreamweaver或者 photoshop),把你打算指定为“位置”的那一块插进该“位置”的php代码,比如:,就表示该区域是“left”的“位置”。然后可以在编辑模块 属性的时候指定显示它到任意的位置,left、right、top、 bottom 以及任意数目的自定义位置。

接下来再说CSS文件,曼波的模板需要编写一个CSS文件用来定义网页的字体、颜色和边框等。官方的一个《CSS Guide》的文档非常的有帮助: 在线观看:http://www.mambonotes.com/content/view/30/101/ 下载:http://www.mambohut.com/index.php?option=com_remository&Itemid=26&func=fileinfo&parent=category&filecatid=107 图片版在线观看(德语!):http://www.mamboos.de/Mambo_CSS_Guide/

以上是关于模板的基本说明。下面列出来一些下载或设计模板的网站或指南: 下载模板:http://mambohut.com/ 设计模板:这里有很友好的模板设计指南, http://www.absalom.biz/tutorials/Mambo_Template_Tutorial.html 如果你想用Dreamweaver自己设计模板,我推荐下面这个,它指导你下载Dw的曼波模板设计插件:http://www.mambosolutions.com/dw_tutorial/ 我还推荐你下载MSAS(Mambo Stand Alone Sever),它能在你的电脑上建起一个包含MySQL和Apache的迷你服务器集成环境,这样你就能在本机调试你设计的模板了。 更多设计向导可以可看: http://www.allmambo.com/index.php?o...&id=13&Itemid=2

修炼完第三式,我相信你已经大体了解了曼波的运行机制,为了成为一代高手,你需要更深入的了解模板,轻接着看第四式。

[ 编辑]

第四式,模块与页面

如果你想要知道一个关于什么是模快的确切的定义,第八式会告诉你。如果你已经熟习了上一式,你已经会在模板中间设置位置,这些位置将被放置上一个一个的模块。在这一式中,我将继续对模块进行介绍。

什 么是模块呢?它可以被理解为由动态交互作用的魔力盒子。在后台的模块〉网站模块中,你可以察看已经被默认安装的一些模块。 你应该知道,所有的菜单其实都是模块。你的登录表单是一个模块,这个模块能让用户登录进入你的网站并更新或发表内容。最新文章也是一个模块,它列出了最新 发布的文章。还有许许多多功能各异的模块在互联网上可供下载,所以你是不会被局限在现有默认的那么几个模块的。

所有这些模块都将被放置 在你的模板的众多被事先定义好的“位置”(参见第三式)上。在后台模块管理中,你可以点击模块的名字然后编辑模块的属性。其中一项属性就是选择该模块被安 置的位置。尝试着把它换到其它不同的位置,然后到前台看看效果,是不是立刻就变了模样?很酷吧。

你也可以在特定的页面让模块生效或者关闭它(下面详细解释)。记住,位置仅仅是保留模块被放在这里的空间,它不对模块产生任何的控制作用。

现 在我们在来说说“页面”这个概念。准备好洗耳恭听了吗?OK,页面是不存在的,从来都没有,起码对于曼波系统来说。当你认为你是在浏览什 么页面的时候,曼波会认为,你其实是在浏览一个“菜单项”。实际上,在曼波系统里面你压根就别指望能看到有所谓某个特定页面的东西。每个你所看到的页,上 面有位置,有在这些位置上安置的模块,还有被显示的主题内容——这所有的在进入到你的浏览器视野之后,才被装配显示为一页,而此前它们都安静的躺在服务器 的各个角落。为什么是这样呢?因为曼波根本不信奉页面这回事!坦白地说,我觉得这种看法很傻叉——毕竟因特网的基础就是页面嘛。不过也许曼波就像是武当派 的太极拳,没有所谓招式的概念。没准这就是更先进的理念呢!

我们接上文说在特定的页面打开或者关闭模块的问题,此前你得把模块链接到菜 单项上先。编辑模块属性,在编辑页的右方,就是“菜单项链接” 的地方,你可以选中随便一个或者几个菜单项,让模块在这些菜单项的页面上生效。也就是说,如果在前台有人点击了没有在这里被选中的菜单项,该模块是不会被 显示的,尽管它就隐藏在那个位置。所以要清楚,如果你不把模块指定给任何的菜单项,它压根就不会生效的(记住,菜单就是页面!菜单是真谛!)。

修炼完本式,你已经很清楚怎么使用模块了。想来江湖侪辈已经不足你轻轻一击,不过要做出来完美的网站,你还得继续用功。

[ 编辑]

第五式,添加文本和图片

我 所说的“添加文本和图片”可不是修改或美化你的菜单样式,也不是像投票、登陆框这样的模块,而仅仅是页面主体所要显示的中心内容(在你的模板中, 这一块叫做“mos_mainbody”)。在修习第二式的时候,你已经组织好了你的网站的内容结构,所以现在就是把所有这些内容添加进你已经建立好的单 元和分类中的时候了!

我们先说一下什么是TinyMCE。它是曼波自带的一个所见即所得编辑器。这个编辑器是曼波的一个触发器(关于触 发器的概念参见第八 式)。不过可能在安装曼波的时候,TinyMCE没有被默认生效。你可以到后台的触发器〉网站触发器中,将“非所见即所得编辑器”取消发布,然后把 “TinyMCE” 发布。这些操作只需要单击发布项的图标即可完成。如果你懂HTML的话,我严重建议把TicyMCE设置为高级模式:点击网站触发器中TicyMCE的名 字可以打开编辑页,在右方你就可以看到“功能”下拉选项——基本模式意味着没有代码只有按钮进行编辑操作,高级模式能够让你直接编辑HTML代码。之所以 我很建议选择高级模式,是因为TinyMCE在基本模式下存在Bug。(比如,点击按钮“B”应该把文字变成粗体,但压根就没有效果;所以曾经我帮一个因 此很郁闷的用户删除了他的网页里面57个标签,这真是麻烦事。)

你可以在添加内容页增添文本和图片(通过点选内容〉所有内容〉新增)。第一行是标题,第二行是标题别名,它将出现在未来所显示页面的url里面(如果你启用了SEF404或者别的搜索引擎友好模块)。文本被分成了两部分输入:摘要和正文。

接 下来说一说正文里面插入图片的问题。我曾经花费了两个钟头时间想把一幅图片放在正文中间,可是没搞定。然后我在帮助文件里面找啊找啊也没 发现答案。当时在论坛里面也没人解答我的困惑,我尝试了n种办法,无一奏效。如果你也像我一样,那么往下读就好了。我保证你会恍然大悟再不会如我当初那般 痛苦。

首先,你得把你想插进正文的图片上传到媒体管理中去(不知道在哪里?进入后台一眼就看到了!)它的使用非常简单,可以方便的上传图片和创建新目录(我们暂时不去管代码那一行)。

当你把图片都上传之后,你就能很容易的把它们插入进去。不过在此之前,你带知道有些事情是不能做的:

1,不要用TinyMCE插入图片。TinyMCE需要输入图片的url,所以你得返回到媒体管理中去,然后拷贝粘贴网址。但是,这里TinyMCE是由bug的,所以你会发现生成的代码会是一团糟,然后你不得不去自己修改源码。

2,在你编辑正文的时候,不要把图片从右边的“图片”栏拖到左边的所见即所得编辑器中。尽管看起来这样能行,不过呢,你看到的可压根不是你得到的。你将仅仅把缩略图插入到内容中去。因此当你在前台浏览的时候,你会发现图片只有一点点大,根本就不是你的原图。

那怎么办?你又没有看到在编辑框的下面,有两个像一朵小花似的按钮,就是这样, 我们要关注的是这个写着I的按钮。它是一个很神奇的按钮。当你把鼠标移上去的时候,居然没有任何的提示标签告诉你这个按钮是干什么用的(搞什么飞机?)。 当你点击这个按钮的时候,你会发现在编辑框的光标处,有一个小小的代码被插入了:{mosimage}。这个代码表明在这个地方将被插入一个图片。也许你 依然是一头雾水,来让我们来设置在这篇正文中间所有要插入的图片。在整个编辑页的右方,你会看到“图片”的标签,点击进入它,你会发现它显示出你已经上传 到媒体管理中的的所有图片,现在选择任意多的你现在想依次插入的图片。要注意,一定要按照顺序!(有上下按钮来调整顺序。)因为每一次当你点下 “I”这个魔力按钮的时候,都表明在该处会插入一幅图片。最后呢,曼波将把你所有选中的图片,一次填入你所有标志了{mosimage}这个代码的地方。 那么究竟什么是{mosimage}呢?我猜测是一个系统触发器,关于触发器更多请看第八式。

修炼到这里,想必你已经添加了很多的内容和图片在你的网站里了……可是怎么首页左看右看就是这么不顺眼呢……下一式我将让你领悟到究竟什么是首页。

[ 编辑]

第六式,链接

有两个办法可以连接两个页面之间:菜单和链接。对于大多数网站设计来讲(无论你是否使用所见即所得编辑器),在网页上链接一个图片或者另外的网页可比做一个菜单简单多了。但是在曼波系统中,这恰恰是相反的——作出一个菜单非常的容易,做链接却麻烦点。

什 么是菜单呢?它也是模块。在曼波安装的时候已经默认设定了如下菜单:主菜单、顶部菜单、其他菜单和...正因为它们本身是模块,所以你可 以把它们放在你的模板上的任意一个“位置”。但是有一点需要提醒的是:如果你没有事先指定菜单项所要指向的东西,那么是不能创建这个菜单项的(与此相反, 通常的网页编辑思路是无论你有没有给一个菜单项设定链接,它都可以先放到那)。试一试你就知道了。

有两个途径创建菜单:一个是从你打算 设定为菜单项指向的内容处(也就是点击该菜单项将被显示的内容),或者是从菜单管理那里。前一个方 法:点击后台的内容〉内容管理〉所有内容(也可以是分类),编辑你要指定的内容或分类,在编辑页的右边,你会看到炼接到菜单的选项卡。它会让你选择你要创 建的菜单项所要从属的菜单(比如主菜单、其他菜单或者别的,你可以自定义任意的你需要的菜单),然后给你的菜单项起个名字。然后就OK了。回到前台看一 看,是不是出现了你刚创建的菜单项?点击一下看看是不是出现了你所要链接的内容?

如果我们要在菜单管理中定义菜单,这里会有更加详细的 设定。你可以很容易的删除菜单项,别担心,它不会删掉菜单项所指向的内容的。如果要 添加菜单项,就点击上方工具条的“新建”按钮。然后……你会看到一个很复杂的选项设定页面,它允许你选择菜单项要指向什么类型的内容和用什么样的方式去显 示这些内容。

这些选项都有前后两部分组成:怎样显示+什么类型。比如这样子的: Blog - Content Category Blog - Content Section Blog - Content Item

这里的“Blog”就是说内容将以搏客样式去显示(只显示标题和摘要,点击“更多”才能看到全文)。此外还有“Link”,这表示将直接打开你所要链接的内容。“Table”表示将在一个表格中间显示些复合的内容。“Separator”表示什么也不链接。

这里的“Content Category”将被链接到一个类别,当然,你也可以链接到单元,或者直接是内容。也可以是外部链接、新闻来源和静态内容。

看 到这么多选项可以被你自由设定有没有很兴奋?不过可别一激动就创建了n个菜单出来……要记住菜单就是一种模块,而曼波系统已经内建了很多 这样的模块了。比如,如果你想创建一个“最新更新”的菜单,大可不比自己再费周章。因为曼波已经有了这样的一个模块了!“最新消息”模块可以显示你最新发 布的若干内容条目,这不正是你想要的吗?你只需要把这个模块放在你的模板的任意一个位置上就可以了。

如果我想要一个效果很炫的菜单,而不是呆板的底色+文本呢?你可以试一试这个组件: http://mamboforge.net/projects/swmenu/

现在我们可以谈一谈链接了。如果你想在你的网站之内把某一页或图片链到另一页去,那么你得先安装一个“友好url”的组件。我推荐SEF404: http://mamboforge.net/projects/sef404/

然后你再到前台浏览你的网站,你会注意到所有的网址已经变成了不太直观的形式,像这样:/view/25/64。这样的网址看起来就像是静态页面,而不是让人更加一头雾水的动态网址形式了。

现 在我们可以去编辑你想添加链接的正文了。只需要在编辑页,选中你想附加上链接的文本或图片,点击小锁链形状的那个按钮(没看见?你有没有激活 TinyMCE啊?),输入网址和页面打开方式即可。 现在,你已经基本上清楚了怎样建设一个网站了,高手就是这样一步一步成长中的!不过,还有一些你得知道……

[ 编辑]

第七式,首页和blog显示

使用曼波系统你可以设定你的内容按照Blog格式显示。简单来说,Blog形式就是说在页面上显示出来文章的标题和摘要,并且有一个链接指向全文。在任何时候,你都可以把某页面的显示方式设定为按Blog方式显示。

比 如说,我们创建一个名字叫做“夜鸣剑文集”的分类(关于分类请参看第二式),并打算把它下面的所有文章都按照Blog格式列表。我们得先 新建一个菜单项(别忘了,曼波是没有页面的,只有菜单,参看第四式):编辑你的一个菜单,比如是主菜单,点击“新增”,会有两排得菜单项类型供你选择,我 们选中 “Blog – Conten Category”,然后输入菜单标题,在列表中选择“夜鸣剑文集”这个分类,OK了!刷新前台看看效果吧。为了控制显示的多样化和精确性,有许多的参数 可供选择。这些参数可以在刚刚输入菜单标题的时候设定,也可以在菜单列表中,直接编辑你建好的菜单项。比较重要的设定有第一排显示几个内容、分几列显示和 链接形式显示等等。 关于首页这个看似人人知道的概念,在曼波里面却显得略略怪异。不过你一旦理解了,就能避免之后可能产生的许多困惑。很容易看到,主菜单的第一个菜单项,就 是首页。不过其实呢,这个菜单项没有任何特殊的地方。任意一个菜单项,只要被设置成主菜单的第一个,他就起着首页的作用。不信你试试看,把任意的一个菜单 项的顺序和所谓的“首页”掉个个,然后再刷新前台,你看到了什么?所以在这种情况下,后台的“首页管理器”就完全不起作用的。因为做怎样的修改,都仅仅是 对那个所谓的“首页”进行的,而不是真正意义上的首页了。

恭喜,到目前为止,你已经跨过了所有真正意义上的难关,但是为了防止走火入魔,你需要澄清若干重要的概念,请看第八式。

 

[ 编辑]

第八式,模块、组件和触发器

曼波的设计充分考虑到了扩展性的需要。尽管默认已经包含了许多内建特性,还有数以百计的插件可供下载和安装。曼波的插件可分为三种,模块、组建和触发器。

模块是用以表达网站的各种各样信息的小型插件。比如菜单是模块,在线投票是模块,登陆退出是模块。模块可以被放置在“位置”处(关于位置参见第一式),然后在网站上被显示。

组件是应用程序,它们能够为你的网站增添新的功能。所以假如当你想增加时事通讯的功能,你得安装它的组件以及相应的模块(通常组件都有配套的模块,用以显示该组件的效果)。当你安装好一个组件之后,你可以看到它将出现在组件列表中,在这里能对该组件进行具体的设定。

触 发器是面向任务的微型插件,它们帮你处理网站的内容(而不是如何显示)。曼波的内核提供了许多系统触发器。比如mosimage可以把标 签 {mosimage}自动转换为Html语言的img标签,用以在正文中方便的显示图片(参见第五式);mospagebreak能够为你的正文分页(就 是内容编辑框下方的P字样图标)。相比于模块和组件而言,通常人们对新的触发器的需求似乎不是很高。

打个比方,曼波是很精致的内功心法,那么他的三种特性各异的插件就可以被视为兵器。选择自己称手强大的兵器,会让你更上一层楼。有一个网站是关于各种各样的插件的: www.mamboforge.net

不过它的说明文字确实非常的烂。下面列出了一些被精选出来的十分好用的插件:

  • 友好url:404sef;
  • 更好用的用户登录和管理:Community Builder;
  • 下载管理:DOCMan(Remository也不错)
  • 时事通讯:YaNC
  • 自动网站地图:SiteMap;
  • 美观简易的窗体:Art*Forms,复杂的窗体:FacileForms;
  • 论坛:方便且强大的SimpleBoard,能承受更大负载的Simple Machines Forum和PhpBB,强大但不易配置和整合的vBulletin;
  • 网上购物:phpShop或者mosCommerce;
  • 事务管理和日历:Events Calendar;
  • 美观的下拉菜单:SWMenu(www.swonline.biz)
  • 方便插入多媒体比如视频音频:MosMedia,www.ag-solutions.net/content/view/23/45/
  • 短消息:MyPMS onen-source
  • 多语言支持:MambelFish(曼波4.5.3版也将支持);
  • 相册:RSgallery,Menalto Gallery 2(也许是最好的),Zoom(易于整合)。

有没有找到你称手的插件呢?不过切记,正如学武之人不能过分依赖兵器的精良一样,与其添加过多的功能插件,不如更多地关注网站内容。

[ 编辑]

第九式,它在哪?

所有的主要内容已经写在了前八式中,本式只是告诉你几个常常被提起的问题的答案。有一些常见元素在曼波系统中却被掩藏得很深,初学者常常苦恼于此。

比 如“联系我们”页面怎么做呢?当我们安装曼波时,主菜单中有一项叫做联系我们,你需要在组件〉联系人〉管理联系人,在这里可以新增和编辑 联系人。如果你仅仅是想显示一个联系人,而不是很多,你可以创建一个指向一个联系人的链接(前提是这个联系人已经被创建了):打开主菜单(或者任意一个菜 单,随便你想把这个链接所放的地方),新建一个菜单项,选择“Contact Item”,然后选择所要链接的联系人就可以了。这个指向单个联系人的菜单项和“联系我们”其实没什么本质的区别。

如果你想改变联系人页面的显示样式,可以安装某些窗体组件,比如Art*Forms,它可以增添项目和调节不同的样式。

当 你创建了菜单项指向单元或者类别,怎样修改他们被点击之后所打开页面的样式呢?你现在应该很明了了,在曼波系统中,没有页面——只有菜单 项。所以我们还是得回到菜单中,编辑该菜单项。比如,一个指向分类或者单元的链接,系统会默认显示一些排序按钮,像“过滤”、“排序”等等,每篇文章出还 会被默认显示“打印”、“pdf格式打开”等按钮,这些都可以在菜单项编辑页面被设定显示还是不显示。

你可能感兴趣的:(【转】CMS8)