更新:下面的方法是不必要的,mojoportal本身提供了模块实例的多页面映射功能。
Mojoportal作为一个web开发平台,是十分优秀的,解决了用户管理和页面权限等诸多问题,当然他也是一个优秀的cms系统。
我们可以把他的博客模块稍加改进,增加在父页面上,可以浏览子页面博客内容的功能。
如下图:
我的页面”下有三个子页面,当点击“我的页面”时,可以显示3个子页面内的内容。
第一步;建立CusBlogModule.ascx模块文件,这个文件和BlogModule.ascx文件大致相同,只是改一下文件名和代码文件名,并在loadSetting()方法中增加如下代码:
if (Settings.Contains("CusBlogModuleID"))
{
if (Settings["CusBlogModuleID"].ToString() != null && Settings["CusBlogModuleID"].ToString()!="")
{
CusModuleID= Int32.Parse(Settings["CusBlogModuleID"].ToString());
}
}
第二步:在网站后台添加这个模块,并添加配置,添加CusBlogModuleID设置,默认值为空
第三步:修改blogviewControl.ascx.cs中相关设置,使得文章内容页面可以顺利访问。
using System;
using System.Configuration;
using System.Data;
using System.Globalization;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;
using mojoPortal.Business;
using mojoPortal.Web.Framework;
using mojoPortal.Web.UI;
using mojoPortal.Web.Controls;
using mojoPortal.Web.Controls.google;
using Resources;
using Calendar = System.Web.UI.WebControls.Calendar; namespace mojoPortal.Web.BlogUI
{
public partial class CusBlogModule : SiteModuleControl
{
#region Properties
private static readonly ILog log = LogManager.GetLogger(typeof(BlogModule));
private int countOfDrafts = 0;
private int pageNumber = 1;
private int totalPages = 1;
private int pageSize = 5;
//添加
public int CusModuleId=0;
private bool showPager = true;
protected string addThisAccountId = string.Empty;
protected bool useAddThisMouseOverWidget = true;
protected string addThisCustomBrand = string.Empty;
protected string addThisButtonImageUrl = "~/Data/SiteImages/addthissharebutton.gif";
protected string addThisCustomOptions = string.Empty;
protected string addThisCustomLogoUrl = string.Empty;
protected string addThisCustomLogoBackColor = string.Empty;
protected string addThisCustomLogoForeColor = string.Empty;
protected string feedburnerFeedUrl = string.Empty;
protected string EditContentImage = WebConfigSettings.EditContentImage;
protected string EditBlogAltText = "Edit";
protected string BlogDateTimeFormat;
protected string FeedBackLabel;
protected bool ShowCalendar = false;
protected DateTime CalendarDate;
protected bool ShowCategories = false;
protected bool ShowArchives = false;
protected bool AllowComments = true;
protected bool NavigationOnRight = false;
protected bool ShowStatistics = false;
protected bool ShowFeedLinks = false;
protected bool ShowAddFeedLinks = false;
protected bool BlogUseLinkForHeading = true;
protected Double TimeOffset = 0;
protected string GmapApiKey = string.Empty;
protected int GoogleMapHeightSetting = 300;
protected int GoogleMapWidthSetting = 500;
protected bool GoogleMapEnableMapTypeSetting = false;
protected bool GoogleMapEnableZoomSetting = false;
protected bool GoogleMapShowInfoWindowSetting = false;
protected bool GoogleMapEnableLocalSearchSetting = false;
protected bool GoogleMapEnableDirectionsSetting = false;
protected int GoogleMapInitialZoomSetting = 13;
protected MapType mapType = MapType.G_SATELLITE_MAP;
protected string OdiogoFeedIDSetting = string.Empty;
protected bool UseExcerpt = false;
protected bool TitleOnly = true ;
protected bool HideAddThisButton = false;
protected int ExcerptLength = 250;
protected string ExcerptSuffix = "...";
protected string MoreLinkText = "read more";
protected bool EnableContentRatingSetting = false;
protected bool EnableRatingCommentsSetting = false;
protected bool ShowPostAuthorSetting = false;
protected bool GoogleMapIncludeWithExcerptSetting = false;
protected bool ShowGoogleMap = false;
protected bool BlogUseTagCloudForCategoriesSetting = false;
protected string blogAuthor = string.Empty;
private string CommentSystem = "internal";
private string DisqusSiteShortName = string.Empty;
protected string disqusFlag = string.Empty;
protected string IntenseDebateAccountId = string.Empty;
protected bool ShowCommentCounts = true;
protected string EditLinkText = BlogResources.BlogEditEntryLink;
protected string EditLinkTooltip = BlogResources.BlogEditEntryLink;
protected string EditLinkImageUrl = string.Empty;
#endregion
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.Load += new EventHandler(Page_Load);
this.calBlogNav.SelectionChanged += new EventHandler(calBlogNav_SelectionChanged);
this.calBlogNav.VisibleMonthChanged += new MonthChangedEventHandler(CalBlogNavVisibleMonthChanged);
pgr.Command += new CommandEventHandler(pgr_Command);
this.EnableViewState = false;
}
protected virtual void Page_Load(object sender, EventArgs e)
{
LoadSettings();
SetupCss();
{
SetupRssLink();
}
PopulateLabels();
{
PopulateControls();
}
}
private void PopulateControls()
{
BindBlogs();
PopulateNavigation();
}
private void BindBlogs()
{
//有修改
using (IDataReader reader = Blog.GetPage(CusModuleId, CalendarDate.Date.AddDays(1), pageNumber, pageSize, out totalPages))
{
rptBlogs.DataSource = reader;
rptBlogs.DataBind();
pgr.ShowFirstLast
= true;pgr.PageSize = pageSize;
pgr.PageCount = totalPages;
pgr.Visible = (totalPages > 1) && showPager;
}
}
void pgr_Command(object sender, CommandEventArgs e)
{
pageNumber = Convert.ToInt32(e.CommandArgument);
pgr.CurrentIndex = pageNumber;
PopulateControls();
updBlog.Update();
}
protected virtual void PopulateNavigation()
{
Feeds.ModuleSettings
= Settings;Feeds.PageId = PageId;
//有修改
Feeds.ModuleId = CusModuleId;
Feeds.Visible = ShowFeedLinks;
if (this.ShowCategories)
{
tags.CanEdit = IsEditable;
tags.PageId = PageId;
//有修改
tags.ModuleId = CusModuleId;
tags.SiteRoot = SiteRoot;
tags.RenderAsTagCloud = BlogUseTagCloudForCategoriesSetting;
}
else
{
tags.Visible = false;
this.pnlCategories.Visible = false;
}
if (this.ShowArchives)
{
archive.PageId = PageId;
//有修改
archive.ModuleId = CusModuleId;
archive.SiteRoot = SiteRoot;
}
else
{
archive.Visible = false;
this.pnlArchives.Visible = false;
}
stats.PageId
= PageId;//有修改
stats.ModuleId = CusModuleId;
stats.CountOfDrafts = countOfDrafts;
stats.Visible = ShowStatistics;
}
private void calBlogNav_SelectionChanged(object sender, EventArgs e)
{
System.Web.UI.WebControls.Calendar cal = (System.Web.UI.WebControls.Calendar)sender;
CalendarDate
= cal.SelectedDate;calBlogNav.VisibleDate = CalendarDate;
calBlogNav.SelectedDate = CalendarDate;
PopulateControls();
}
private void CalBlogNavVisibleMonthChanged(object sender, MonthChangedEventArgs e)
{
CalendarDate = e.NewDate;
calBlogNav.VisibleDate = CalendarDate;
calBlogNav.SelectedDate = CalendarDate;
PopulateControls();
}
protected virtual void PopulateLabels()
{
Title1.EditUrl = SiteRoot + "/Blog/EditPost.aspx";
//Title1.EditText = BlogResources.BlogAddPostLabel;
Title1.EditText = "";
if ((IsEditable) && (countOfDrafts > 0))
{
//BlogEditCategoriesLabel //有修改
Title1.LiteralExtraMarkup =
" <a href='"
+ SiteRoot
+ "/Blog/EditPost.aspx?pageid=" + PageId.ToInvariantString()
+ "&mid=" + CusModuleId.ToInvariantString()
+ "' class='ModuleEditLink' title='" +"添加文章" + "'>" + "添加文章" + "</a>"
+ " <a href='"
+ SiteRoot
+ "/Blog/EditCategory.aspx?pageid=" + PageId.ToInvariantString()
+ "&mid=" + CusModuleId.ToInvariantString()
+ "' class='ModuleEditLink' title='" + BlogResources.BlogEditCategoriesLabel + "'>" + BlogResources.BlogEditCategoriesLabel + "</a>"
+ " <a href='"
+ SiteRoot
+ "/Blog/Drafts.aspx?pageid=" + PageId.ToInvariantString()
+ "&mid=" + CusModuleId.ToInvariantString()
+ "' class='ModuleEditLink' title='" + BlogResources.BlogDraftsLink + "'>" + BlogResources.BlogDraftsLink + "</a>";
}
else if (IsEditable)
{
//有修改
Title1.LiteralExtraMarkup =
" <a href='"
+ SiteRoot
+ "/Blog/EditPost.aspx?pageid=" + PageId.ToInvariantString()
+ "&mid=" + CusModuleId.ToInvariantString()
+ "' class='ModuleEditLink' title='" + "添加文章" + "'>" + "添加文章" + "</a>"
+" <a href='"
+ SiteRoot
+ "/Blog/EditCategory.aspx?pageid=" + PageId.ToInvariantString()
+ "&mid=" + CusModuleId.ToInvariantString()
+ "' class='ModuleEditLink' title='" + BlogResources.BlogEditCategoriesLabel + "'>" + BlogResources.BlogEditCategoriesLabel + "</a>";
}
calBlogNav.UseAccessibleHeader
= true;EditBlogAltText
= BlogResources.EditImageAltText;FeedBackLabel = BlogResources.BlogFeedbackLabel;
mojoBasePage basePage
= Page as mojoBasePage;if (basePage != null)
{
if (basePage.UseIconsForAdminLinks)
{
EditLinkImageUrl = ImageSiteRoot + "/Data/SiteImages/" + EditContentImage;
}
}
}
protected string FormatPostAuthor(string authorName)
{
if (ShowPostAuthorSetting)
{
if (blogAuthor.Length > 0)
{
return string.Format(CultureInfo.InvariantCulture,
BlogResources.PostAuthorFormat, blogAuthor);
}
return string.Format(CultureInfo.InvariantCulture,
BlogResources.PostAuthorFormat, authorName);
}
return string.Empty;
}
protected string FormatBlogEntry(string blogHtml, string excerpt, string url, int itemId)
{
if (UseExcerpt)
{
if ((excerpt.Length > 0) && (excerpt != "<p> </p>"))
{
return excerpt + ExcerptSuffix + " <a href='" + FormatBlogUrl(url, itemId) + "'>" + MoreLinkText + "</a><div> </div>";
}
string result = string.Empty;
if ((blogHtml.Length > ExcerptLength) && (MoreLinkText.Length > 0))
{
result
= UIHelper.CreateExcerpt(blogHtml, ExcerptLength, ExcerptSuffix);result += " <a href='" + FormatBlogTitleUrl(url, itemId) + "'>" + MoreLinkText + "</a><div> </div>";
return result;
}
}
return blogHtml;
}
//有修改
protected string FormatBlogUrl(string itemUrl, int itemId)
{
if (itemUrl.Length > 0)
return SiteRoot + itemUrl.Replace("~", string.Empty) + disqusFlag;
return SiteRoot + "/Blog/ViewPost.aspx?pageid=" + PageId.ToInvariantString()