Rob*_*elf 10 c# tridion tridion-2011
美好的一天!
我允许我的内容编辑器将CSS存储为非常基本的组件(通常包含一个称为"代码"的单个多行字段,然后将它们粘贴到其中),然后将这些字段作为组件演示文件添加到具有.css文件扩展名的页面中.创建页面时,用户可以设置一些配置值:minify output(bool),文件名前缀和文件名后缀.最后两个的意图是,如果用户选择在出门的时候缩小CSS,则文件名可以在演示服务器上不同.
除了修改文件名外,我已经完成了所有工作.我不想更改CM中的文件名; 只有它驻留在演示服务器上.我假设这可以在放入CSS页面模板的TBB中完成.我对它采取了一个裂缝,但我想确保没有我遗漏的东西.以下示例只是简写,其中一些可配置值为了简洁而进行了硬编码.
// Create a reference to the Page object in the package.
Page page = this.GetPage();
// Retrieve a reference to the page's file name.
string currentFileName = Utilities.GetFilename(page.FileName);
// Set the published file name on its way out the door.
page.FileName = currentFileName + "_min";
// ???
// Profit.
Run Code Online (Sandbox Code Playgroud)
我假设您只进行静态发布,即不使用Tridion Content Broker.
您应该能够使用新的基于TOM.NET的Tridion事件系统执行此操作,并在Initiated阶段订阅Publishing事件.这意味着在页面开始发布之前,您将捕获事件并修改页面文件名.但是,这将使页面在CME中具有新名称.因此,再次使用发布事务后的另一个事件阶段,即TransactionCommitted阶段,您可以更改页面的名称.
您还可以编写自定义部署程序扩展来执行此操作,这将重命名页面.但是,您还需要使用代码来管理重命名页面的"取消发布".请参阅Jaime关于如何编写Deployer扩展的博客文章:http://sdltridionworld.com/articles/sdltridion2011/tutorials/Deployer_Extensions_With_Eclipse_1.aspx
阅读@Dylan响应的答案,您可以考虑在发布时创建二进制变体,其中包含最小化代码的输出.
在它最简单的形式中,您将使用页面的输出创建一个文本文件,然后调用.AddBinary()指定文件的内容,文件名,变体名称(我建议使用此页面的URI),当前StructureGroup的URI以及要绑定它的Component的URI(可能是页面上的Component).
你可以看到米哈伊的博客一些二进制变种的例子在这里
Binary binary = m_Engine.PublishingContext.RenderedItem.AddBinary(
resizedStream, newFilename, variantId, mmc,
binaryContent.MultimediaType.MimeType);
Run Code Online (Sandbox Code Playgroud)
除了实际页面之外,这将发布包含页面输出的文件.取消发布页面时,您也将取消发布额外的文件.
| 归档时间: |
|
| 查看次数: |
540 次 |
| 最近记录: |