我在一个项目上使用ISAPI重写,并想知道是否有可能从Tridion发布.htaccess文件?
我尝试使用.htaccess扩展名创建页面模板,但无法创建没有名称的页面.
有任何想法吗?
我可以使用C#TBB来更改页面名称吗?
我还会选择使用二进制文件来实现此目的,但如果您想使用文本而不是作为多媒体组件来管理 htaccess 文件,您可以使用以下技术将二进制文件推送到包中:
1) 将 Htaccess 文件的文本推送到具有可访问名称(即 Binary_Text)的包中 2) 使用类似于以下的代码从变量中的文本创建文本文件并将其添加到包中
class publishStringItemAsBinary : ITemplate
{
public void Transform(Engine engine, Package package)
{
TemplatingLogger log = TemplatingLogger.GetLogger(typeof(publishStringItemAsBinary));
TemplateUtilities utils = new TemplateUtilities();
System.IO.Stream inputStream = null;
try
{
string strInputName = package.GetValue("InputItem");
string strFileName = package.GetValue("strFileName");
string sg_Destination = package.GetValue("sg_Destination");
string itemComponent = package.GetValue("mm_Component");
inputStream = new MemoryStream(Encoding.UTF8.GetBytes(package.GetValue(strInputName)));
log.Debug("InputObject:" + strInputName);
log.Debug("Filename for binary:" + strFileName);
log.Debug("Destination StructureGroup:" + sg_Destination);
Publication contextPub = utils.getPublicationFromContext(package, engine);
TcmUri uriLocalSG = TemplateUtilities.getLocalUri(new TcmUri(contextPub.Id), new TcmUri(sg_Destination));
TcmUri uriLocalMMComp = TemplateUtilities.getLocalUri(new TcmUri(contextPub.Id), new TcmUri(itemComponent));
StructureGroup sg = (StructureGroup)engine.GetObject(uriLocalSG);
Component comp = (Component)engine.GetObject(uriLocalMMComp);
String sBinaryPath = engine.PublishingContext.RenderedItem.AddBinary(inputStream, strFileName, sg, "nav", comp, "text/xml").Url;
//Put a copy of the path in the package in case you need it
package.PushItem("BinaryPath", package.CreateStringItem(ContentType.Html, sBinaryPath));
}
catch (Exception e)
{
log.Error(e.Message);
}
finally
{
if (inputStream != null)
{
inputStream.Close();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为代码是非常不言自明的。这会发布 text/xml 类型的二进制文件,但将其转换为纯文本文件应该没有问题。
归档时间: |
|
查看次数: |
155 次 |
最近记录: |