2010-11-29 79 views
0

我试图将网站上的所有“内容”页面迁移到DNN5 Pro。页面上的动态内容

因此,我只是在DNN中创建了所有页面,向ContentPane添加了HTML模块,并复制并粘贴了旧页面中的HTML内容。

问题是,大多数页面都有一些经典的asp代码,它们会执行一些次要的服务器端任务 - 例如,使用从DB获取的价格填充表格,根据他的IP地址预先选择用户的国家,一些基本的日期计算等。

很明显,这段代码在DNN中不起作用。

如果我不得不迁移到PHP,我只是将这些代码从传统的ASP重写到PHP,然后将值从PHP分配到smarty,然后将它们用在模板中。

但由于DNN有一个完全不同的架构,我看不出有多相似的方法可以使用。

HTML模块中的令牌替换功能看起来像我需要的功能,但它只允许“映射”DNN提供的令牌。

所以,也许任何人都有类似的问题与DNN和/或知道这应该如何完成。

回答

0

您可以直接在您的皮肤文件中编写代码。做一些逻辑,如:

<%If PortalSettings.ActiveTab.TabID = 33 Then 

//code here of what you want 

End If%> 

其中33是您要运行自定义代码的页面的页面ID。还有其他的方法来创建皮肤对象或创建自定义模块,但这可能是最简单的方法。只需在你的皮肤上直接编写代码。或者为每个页面创建一个皮肤副本,然后再用更自然的方式为自定义代码执行自定义代码,但这将会完成。

+0

非常感谢,我想我会坚持这个选项! – 2010-11-30 06:46:23

+0

对不起,但这听起来像一个可怕的想法。如果您只是要为每个DNN页面创建一个自定义外观文件,那么使用DNN有什么意义。功能应该放置在模块(偶尔皮肤对象)中,而不是直接放在皮肤上。 – EfficionDave 2010-12-01 21:01:04

1

看起来你似乎试图颠覆DotNetNuke的整个点。虽然肯定有各种各样的hacky方式可以尝试使其像PHP网站一样工作,但这样做的想法太糟糕了。

相反,您需要评估php站点的每个动态部分,并找到或创建一个将复制该功能的DotNetNuke模块。

为了使初始转换更快速,您可以使用简单的ASP样式内联脚本来构建您创建的模块,但是您绝对应该使用现有模块来处理在网格中显示数据等内容。