Vorrei anche scegliere di utilizzare un binario per ottenere ciò, ma se vuoi gestire il file htaccess usando il testo, piuttosto che un componente multimediale, puoi spingere un binario nel tuo pacchetto usando la seguente tecnica:
1) Inserisci il testo del file Htaccess in il pacchetto con un nome accessibile (ad esempio Binary_Text) 2) Utilizzare un codice simile al seguente per creare un file di testo dal testo nella variabile e aggiungerlo al pacchetto
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();
}
}
}
}
Penso che il codice sia piuttosto auto-esplicativo. Questo pubblica un binario di tipo text/xml, ma non ci dovrebbero essere problemi a convertirlo per fare un semplice file di testo.
fonte
2012-04-13 11:41:23
Chris, ho deciso di renderlo un compito di distribuzione per ora, ma questo codice sembra davvero buono per un'altra volta. Grazie. –