2012-04-13 27 views
5

Tôi đang sử dụng ISAPI viết lại trên một dự án và muốn biết liệu có thể xuất bản tệp .htaccess từ Tridion không?Tridion 2009 SP1: Có thể xuất bản tệp .htaccess không?

Tôi đã thử tạo Mẫu trang có đuôi .htaccess nhưng không thể tạo trang không có tên.

Bất kỳ ý tưởng nào?

Tôi có thể sử dụng C# TBB để thay đổi tên trang không?

Trả lời

3

tôi cũng sẽ chọn để sử dụng một số nhị phân để đạt được điều này, nhưng nếu bạn muốn quản lý tệp htaccess bằng văn bản, chứ không phải là thành phần đa phương tiện, bạn có thể đẩy nhị phân vào gói của mình bằng cách sử dụng kỹ thuật sau:

1) Đẩy văn bản của tệp Htaccess vào gói có tên có thể truy cập (tức là Binary_Text) 2) Sử dụng mã tương tự như sau để tạo tệp văn bản từ văn bản trong biến và thêm nó vào gói

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(); 
      } 

     } 
    } 
} 

Tôi nghĩ mã này khá tự giải thích. Điều này xuất bản một nhị phân loại văn bản/xml, nhưng không có vấn đề chuyển đổi nó để làm một tập tin văn bản đơn giản.

+0

Chris, tôi đã quyết định biến nó thành công việc triển khai ngay bây giờ nhưng mã này trông thực sự tốt cho một lần khác. Cảm ơn bạn. –

3

Tôi nghĩ bạn có thể sử dụng thành phần đa phương tiện để lưu trữ .htaccess của bạn. Ngay cả khi bạn không thể tải lên tệp mà không có tên (giới hạn Windows), bạn sẽ có thể thay đổi tên tệp sau, bằng cách sửa đổi thuộc tính đa phương tiện BinaryContent.Filename. Sau đó, bạn có thể xuất bản thành phần này một cách riêng biệt hoặc sử dụng phương thức AddBinary trong một trong các mẫu của bạn.

Ngoài ra còn có một giản đồ người dùng mà bạn có thể thay đổi một số quy tắc khác: "\ Tridion \ bin \ cm_xml_usr.xsd", nhưng bạn sẽ không thể để cho phép tên tập tin rỗng

+0

Cảm ơn câu trả lời của bạn. Bây giờ tôi chỉ làm cho nó một nhiệm vụ triển khai kể từ khi tôi chỉ có một trang web, nhưng sẽ xem xét để thực hiện một cái gì đó như thế này trong tương lai. –

Các vấn đề liên quan