6

A bug in SharePoint 2013 which breaks the Posts.aspx page.

Reproduce:

1) Click on the title of any blog post to open up the Post.aspx?ID=N view.

2) Place the page in edit mode and then place the Post web part in edit mode.

3) Click on the "Edit the current view". Do Not make any changes but just click [OK]

..Result = contents of Web Part disappears and now whenever you click on any Blog Post title, the page will not display the actual post.

Proposed Fixes that do not work..

a) Edit the broken web part and change the view from <Current View> to the <Summary View> ... Does not work because although View Comes back, it shows ALL post and in my test the "Edit Current view" option disappears so there is no way to add a filter (which also doesn't work anyway).

b) Delete the Broken web part and re-add from new. It will show as a list instead of what we had but continues to show ALL posts. Edit it's current view and add the filter "ID is equal to [ID]"... Does not work because once you go back and click on a Post Title, the new view displays "There are no items in this view" so you go from showing all, back to showing none.

c) Site Settings --> Site Actions --> Reset to site definition --> ALL... doesn't seem to do anything.

d) Add Post.aspx?contents=1 to view all web parts. Select the Post web part and "Reset'... again nothing seems to happen.

What am I missing here?

1
  • I got the same problem with SP2010. Did you manage to solve yours? This was a mysite profile, and we fixed it by deleting that profile, and recreate (it worked, but not a very good solution).
    – williamwmy
    Aug 20, 2014 at 12:03

5 Answers 5

3

Here's the solution to fix the post web part on the Post.aspx site.

  1. Delete the faulty "Post" web part.
  2. Add a new post web part (this will display a list of all posts)
  3. Edit the web part by changing the view property to "<Summary View>".
  4. Under Appearance setting, set the Chrome Type to None
  5. Click on apply, then OK.
  6. Open SharePoint Designer, navigate to the Post.aspx page via the Site Objects > All Files folder
  7. Edit the file in Advanced mode.
  8. Locate a webpartzone which has “Description="Use the Posts list for posts in this blog."” property. (Please know that there are 2 query tags in the file).
  9. Replace the Query tag contained in this webpartzone with the Query code below. Problem solved!!!!
<Query>
    <OrderBy>
      <FieldRef Name="PublishedDate" Ascending="FALSE"/>
      <FieldRef Name="ID" Ascending="FALSE"/>
    </OrderBy>
    <Where>
      <Eq>
        <FieldRef Name="ID"/>
          <Value Type="">
             <GetVar Scope="Request" Name="ID"/>
          </Value>
      </Eq>
    </Where>
</Query>
1
  • 1
    I think the site is blocking the code that i posted. another way to get the code is to open a working blog in SharePoint Designer. locate the Query under the webpartzone that has “Description="Use the Posts list for posts in this blog."” property. Copy just the query tag bit and past it into the same line on you faulty blog Aug 26, 2014 at 2:21
1

The hint of Stefan, to replace the post.aspx is a good approach, but for me not the whole solution.
After the post.aspx was replaced and the webparts have been added, all posts are displayed, not just this one I wanted to see. Only with the additional adaptation of the code in the SPD I found the correct result.

Here are the steps:

1) Open the post.aspx of the two Blogs

2) Search for the "Left"-section and find the lines with "<View Name="{...}" Type=" .... " at the beginning.

3) Replace the lines from the new post.aspx with those from the old.

4) Now even customize the URL according to the blog and it works.

0

I previously had the same problem and I was able restore the page with help of a newly created blog site. I created a new Blog and then mapped the blogs as a network share and copied the new post.aspx over the ruined post.aspx.

This brought back the web part that showed the blog posts after that I added the missing web parts back to the posts.aspx.

Overall the blog template can be tricky sometimes.

0

I tried the approaches from Stefan and from Phil, but I was not able to get them to work for me.
My solution was to create a new blog site in my stage environment, then use Sharegate to copy the custom site columns (adding them to the posts library, of course) and then the content from the photos library and posts list. This gave me essentially a mirror of the site that was impacted, but this had a working post.aspx page.
Next, I used Sharegate again to copy the mirrored site from stage and replace the original site. Afterwards the original site in production was working as it was before the post.aspx page was broken. Whew!

0

You can also try to use webpart connections (Filter by URL). To do it,

  1. Add the Context filter WebPart to Posts.aspx (URL)
  2. Edit it.
  3. In "Parameter Name" type ID
  4. Click Ok
  5. Click Edit webpart -> Connections - > Send Values to -> Posts
  6. On the popup, select Filter by (second option)
  7. Select ID. Click Finish.

It should solve your problem even if you change the view again.

1
  • It worked to get post by ID on a custom page. However there are few syntax changes in above steps and in SharePoint 2013. Overall its great and worked. Thank you very much. Sep 8, 2016 at 10:02

Not the answer you're looking for? Browse other questions tagged or ask your own question.