/// <summary> /// Compila la página /// </summary> private string Compile(FileTargetModel file, DocumentModel document) { SectionSourceModel templateArticle = Data.Templates.GetTemplate(document, TemplatesArrayModel.TemplateType.Article); SectionSourceModel templateMain = Data.Templates.GetTemplate(document, TemplatesArrayModel.TemplateType.Main); string content, fullTitle = document.Title; // Obtiene el título completo de la página if (Processor.Project.AddWebTitle) { fullTitle += $" - {Processor.Project.Title}"; } // Compila la página content = Data.NhamlCompiler.Compile(document, file.DateUpdate, templateArticle, GetIndexPages(file, document)); // Compila el contenido con la plantilla principal content = templateMain.ReplaceVariablesPageTemplate(content, null, document.Title, document.Title, document.Description, document.KeyWords); // Devuelve el valor compilando return(content); }
/// <summary> /// Crea las páginas de una categoría /// </summary> private FileTargetModelCollection Compile(FileTargetModel fileCategory, DocumentModel category, FileTargetModelCollection childs, int intItemsPerPage) { FileTargetModelCollection filesCompiled = new FileTargetModelCollection(Processor); SectionSourceModel templateMain = Data.Templates.GetTemplate(category, TemplatesArrayModel.TemplateType.Main); SectionSourceModel templateHeader = Data.Templates.GetTemplate(category, TemplatesArrayModel.TemplateType.CategoryHeader); // Si no hay ninguna plantilla añade el error if (templateHeader == null) { Processor.Errors.Add(fileCategory.File.DocumentFileName, "No se encuentra ninguna plantilla para la cabecera de la categoría"); } else { SectionSourceModel templateItems = GetTemplateItems(category); if (templateItems == null) { Processor.Errors.Add(fileCategory.File.DocumentFileName, "No se encuentra ninguna plantilla para los elementos de la categoría"); } else { string contentHeader = Data.NhamlCompiler.Compile(category, fileCategory.DateUpdate, templateHeader, null); int pageIndex = 0; int numberPages = CountPages(childs.Count, intItemsPerPage); if (childs.Count == 0) { string content; // Compila con la cabecera de la plantilla content = templateMain.ReplaceVariablesPageTemplate(contentHeader, null, category.Title, category.Title, category.Description, category.KeyWords); // Crea el archivo filesCompiled.Add(CreateFile(fileCategory, 0)); // Graba en el archivo compilado el contenido de la cabecera Save(filesCompiled [filesCompiled.Count - 1], content); } else { // Ordena los archivos if (fileCategory.ShowMode == DocumentModel.ShowChildsMode.SortByDate) { childs.SortByDate(false); } else { childs.SortByName(true); } // Compila el contenido for (int top = 0; top < childs.Count; top += intItemsPerPage, pageIndex++) { string content; FilesIndexComposition fileIndex = new FilesIndexComposition(); // Obtiene las páginas de índice fileIndex.PageTop = Data.Files.GetParent(fileCategory); fileIndex.PagePrevious = GetPage(fileCategory, pageIndex - 1, numberPages); fileIndex.PageNext = GetPage(fileCategory, pageIndex + 1, numberPages); // Normaliza el índice fileIndex.Normalize(); // Compila los elementos de la categoría content = Data.NhamlCompiler.CompileItemsCategory(category, templateItems, childs.Slice(top, intItemsPerPage), fileIndex); // Compila con la cabecera de la plantilla content = templateMain.ReplaceVariablesPageTemplate(contentHeader, content, category.Title, category.Title, category.Description, category.KeyWords); // Crea el archivo filesCompiled.Add(CreateFile(fileCategory, pageIndex)); // Graba el archivo compilado Save(filesCompiled [filesCompiled.Count - 1], content); } } } } // Devuelve la colección de páginas return(filesCompiled); }