Orchard的多语言网站的开发

Orchard 1.10添加多语言

1.添加localization module。

2.enable content localization。

3.setting里面添加需要的语言。

 

4.module里面,很多cultureswitcher啊,culturepicker啊都不能用,没法出来language select widget。

后来试了一个PVlt localization这个module,总算widget出来了。

 

5.添加culture layer module,用来控制层里的rule 可以用Lang("zh-cn")来区分语言。

 

6.添加PJS.Bootstrap的Theme,一开始编译不通过,看到https://github.com/psenechal/PJS.Bootstrap/issues里有相关和orchard v1.10的兼容性的讨论,然后下载github的最新的master分支,之后,兼容性问题解决了。其中编译的时候要在theme工程里添加相应的orchard包的引用。编译通过后,正常运行打开网站,但是css和js一直就是没法正常导入,相同目录下的TheThemeMachine的orchard自带theme的css就能引入。

google到vs工程里的目录下如果有静态文件的话,要在该文件夹下面建立一个web.config。内容如下

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

  <system.webServer>

    <staticContent>

      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />

    </staticContent>

    <handlers accessPolicy="Script,Read">

      <!--

      iis7 - for any request to a file exists on disk, return it via native http module.

      accessPolicy 'Script' is to allow for a managed 404 page.

      -->

      <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />

    </handlers>

  </system.webServer>

</configuration>

看到Themes\PJS.Bootstrap\Styles也都有这个web.config文件。后来发现,Themes\PJS.Bootstrap\下面也有一个web.config文件。里面也有一段静态文件引用的配置。一开始先把StaticFile改成所有文件 path="*"。

还是不行,后来想了想,是不是因为web.config嵌套了,StaticFile这个节点重名了呢?于是把StaticFile改成了bootstrapthemeStaticFile。重新启动,竟然成功了。css和js都正常引入了。

证明我的猜想是正确的,

1.web.config嵌套的话,StaticFile名称不能重名。

2.猜想,其实只要在需要引入的所有目录的最外层的目录下放一个web.config,里面配置StaticFile,并配置path=“*”就可以了。

 

  <system.webServer>

    <handlers accessPolicy="Script,Read">

      <add name="bootstrapthemeStaticFile" path="*/Theme.png" verb="GET" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />

      <!--<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />-->

    </handlers>

  </system.webServer>

 

 7.安装featureitemslider,必须先安装mediapickerfield。要不不会出现图片选择。这次也出现了css文件无法引入的问题,但是每个有静态文件的目录下面也都有 如上的定义。并且多了

  <!--<system.web>

    <httpHandlers>

      --><!-- iis6 - for any request in this location, return via managed static file handler --><!--

      <add path="*" verb="*" type="System.Web.StaticFileHandler" />

    </httpHandlers>

  </system.web>-->

一个IIS6的配置。偶尔看到有些网站上面说要把这段给去掉。于是注释掉了上面那段。但是还是不行,

后来发现还有一个目录下面的web.config里这段没有注释掉。注释掉了之后,重新启动,就正常吧css引入了。

 

2016-10-03  测试下来,mediapickerfield还是和orchard v1.10不兼容。当创建带有media picker field的content type之后,再次打开这个content type会报错。 

因为Media和Media Picker两个module是deprecate了的。所有依赖media模块的其他模块如Image Field也不能用,所以弃用 feature item slider了。

安装了一个Mojabi.ImageSliderGallery 1.0 ,他的选择MediaLibraryPickerField,这个是Media Library自带的一个图片选择控件。目前使用一切正常。

 

 

 

 

 8.因为css都是less编写的,而且网页内都是引用的*min.css,所以下载了一个vs2015的插件web compiler 

https://visualstudiogallery.msdn.microsoft.com/3b329021-cd7a-4a01-86fc-714c2d05bb6c

选择less文件,web complie后,自动更新*.css和*min.css。

 

9.projection是一个集合,可以用来显示产品列表,文章列表,projection的数据源是query,可以在query里制定列表数据,query里添加filter,一个是localization,一个是contenttype。就可以过滤到自己想要的数据列表了,projection默认是没有localization的,要在content  definition里add parts,把localization加上去。然后要把projecttion对应到layer上,每种语言个一个layer,要设定rule:Lang("zh-cn") and ContentType("ProjectionPage"),这样就得对于不同的列表情况设定多个projection的contenttype。如ProductProjection等。

 

 

猜你喜欢

转载自radzhang.iteye.com/blog/2328112