Relative URLs in Sharepoint master page - sharepoint

I have a master page with tabs. The tabs are defined by the following sitemap file:
<siteMap>
<siteMapNode title="Home" url="~/" >
<siteMapNode title="Schedule" url="~/Pages/Tab2.aspx"/>
<siteMapNode title="Deliverables" url="~/Pages/Tab3.aspx"/>
<siteMapNode title="My Items" url="~/Pages/Tab4.aspx"/>
<siteMapNode title="Management" url="~/Pages/Tab5.aspx"/>
<siteMapNode title="Working Docs" url="~/Pages/Tab6.aspx"/>
</siteMapNode>
</siteMap>
The problem is that on my subsites, clicking on a tab keeps taking me back to the root. For example, I want the schedule link to go to http://Server/Subsite/Pages/Tab2.aspx. Instead, what I am getting is http://Server/Pages/Tab2.aspx. I read that having a tilde at the beginning of the link would solve this problem but it doesn't.

I spent HOURS looking for the answer to this question, and it turns out there IS one, it's just annoying. You can use the ProjectProperty tag in WSS sites AND MOSS sites, and one of the possible parameters for ProjectProperty gives you the subsite's URL.
<SharePoint:ProjectProperty Property="Url" runat="server"/>
That outputs a string literal with the value of the subsite URL. So, for example, you can do this (note that you need to use single-quotes for the src='' or href='' attribute of the actual HTML tag):
<a href='<SharePoint:ProjectProperty Property="Url" runat="server"/>/pages/Tab2.aspx'>
Hope it helps! For a listing of other possible values for ProjectProperty, check out this guy's page (which is where i found my original answer!)

I was looking for an answer to do this for a long time... I want to package my site as a Site Template and having absolute URLs was not an option... I need them to be relative to what ever the site URL is... whether it is at the root of MOSS or a sub-site deep down in the structure...
I found the following to work:
Script Tags:
<script type="text/javascript" src='<asp:Literal runat="server"
Text="<% $SPUrl:~Site/appBin/js/jquery.min.js %>" />'></script>
Style sheet (Method suggested above by user385947):
<link rel="stylesheet" type="text/css"
href="<% $SPUrl:~Site/appBin/css/jquery-ui.css %>" />
Hope this helps others...

You're looking for the ~site token, here's a list of the URL tokens custom to WSS.

Related

Kentico meta data information

Using a Head HTML code webpart, i'm adding OG meta data:
<meta property="og:title" content="{% CurrentDocument.DocumentName #%}" />
<meta property="og:type" content="article" />
<meta property="og:url" content="{% CurrentDocument.AbsoluteURL #%}" />
<meta property="og:description" content="{% StripTags(CurrentDocument.Summary) #%}" />
How would i then change the current title and standard description tag?
On your parent page for example /blog set the page title and description under Properties>Metadata using a macro. Then on the sub-pages let it automatically inherit that content. Take a look at this macro for the page description:
{% if(CurrentDocument.ClassName == "cms.blogpost"){BlogPostSummary}else{"Kentico MVP Brenden Kehren talks about Kentico how tos, provides code samples and education and just life in general."} #%}
What's happening here is the macro is checking the current page's class and if it's a blog post, then it uses the BlogPostSummary field and sets the description using that, otherwise if it's a blog or blog month, it uses the other text.
There should be no need to manually set those on each page unless you really have crazy SEO requirements. Even if so, you can create fields in your page type for those and still dynamically set them vs. manually set each one under metadata.
Are you looking for changing title and description HTML tags by a web part or just configuring it for some page?
If you just want to configure title and description of the HTML page then you can just select the document in the Pages application and then go to Properties -> Metadata. Documentation for that is here
If you are looking to somehow change the title and description by a web part then you would actually need to develop a custom web part and access the current page title of the page in code behind. Something like this works.
Even using the selected item transformation, transformatted item is a page from your content tree and as such has the Properties -> Metadata section. Moreover, titles and descriptions are inherited by default so you can just change or odd macros to their parent and it changes the title and description for pages in your selected transformation.

Code in Header to allow Subtome Button in Browser to find feed

By using the following code in header, I have managed for the rss button in url bar in browser to successful find my feed.
<link rel="alternate" type="application/rss+xml" title="Blog Title" href="http://www.weeblysite.com/1/feed" />
However, the subtome button on browser fails to locate feed. Therefore Feedly, Digg Reader, etc, finds no feed.
How can I implement code in my Weebly generated site to allow all such browser buttons to pick up and subscribe to feed?
Thank you.
Nicholas Boyd Crutchley
http://www.nicholasboydcrutchley.com/infin-story
this is a new blog.. no post...but the old blog has same problem..
The problem comes from the fact that your page has a broken discovery mechanism.
Right now in the <head> section of your HTML page, I can see this:
<link rel='alternate' type='application/rss+xml' title='RSS 2.0' href='http:////feed' />
And clearly, http:////feed is not the right feed url :) You want to have this:
<link rel='alternate' type='application/rss+xml' title='RSS 2.0' href='http://www.nicholasboydcrutchley.com/1/feed' />
And everything should be smooth!

Is there a pagination links microdata entry?

There is a microdata for breadcrumb links: http://www.data-vocabulary.org/Breadcrumb/
But is there a similar microdata for page links, like:
[<-] 3 4 5[prev] 6[current] 7[next] 8 9 10 11 [->]
Yes, there's the pagination attribute for the Article item, for instance..
But for collection pages there's no direct way, at least not that I know of. Thees sort of pages are often not ment for indexation anyway. But if you feel strongly about it...
1.) Schema.org / SiteNavigationElement
You could use Schema.org's SiteNavigationElement and extend it as a pagination element:
Example:
<!-- The container for your pagination markup -->
<div itemscope itemtype="http://schema.org/SiteNavigationElement/Pagination">
...
2.) Schema.org / WebPage / relatedLink
A link related to this web page, for example to other related web
pages.
The WebPage item has an attribute called relatedLink that arguably could be used for pagination purposes. Use CollectionPage, that's an extension of the WebPage item, and you still be able to state that there's related pages. This property could also be extended to achieve an higher semantic:
Example
<!-- The pagination link -->
<a itemprop="relatedLink/pagination" href="...">...</a>
The Relation attribute
Also, have a look at rel="next" and rel="prev" to accomplish a markup that touches the subject.
Example:
...
<head>
<link rel="prev" href="http://www.example.com/article?story=abc&page=1" />
<link rel="next" href="http://www.example.com/article?story=abc&page=3" />
...
Have a look at Google Webmaster Central Blog or WHATWG for additional information.

Sharepoint: Setting url in onet.xml NavBar

I have the following NavBar element in my onet.xml. It adds the link "Link" to the quicklauch bar, but seems to ignore the body attribute. I'm particularly interested in setting the href to what I want (/Lists/Link/AllItems.aspx), but it doesn't work.
Any help?
I'm working on Moss 2007.
<NavBar Name="Link"
Prefix="<table border=0 cellpadding=4 cellspacing=0>"
Body="<tr><td><table border=0 cellpadding=0 cellspacing=0><tr><td><img src='/_layouts/images/blank.gif'
ID='100' alt='' border=0>&nbsp;</td><td valign=top><a ID=onetleftnavbar#LABEL_ID# href='/Lists/Link/AllItems.aspx'>#LABEL#</td></tr></table></td></tr>"
Suffix="</table>" ID="1033" />
the problem is that the URL is relative to the root site, so try using the site context with:
Url="_layouts/[%=System.Threading.Thread.CurrentThread.
CurrentUICulture.LCID%]/yourpage.aspx"
Hope this may help.

SharePoint Search on default Masterpage

I am trying to enable the search bar on my default master page. In the source code of the master page there is the following:
<asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server">
<SharePoint:DelegateControl runat="server" ControlId="SmallSearchInputBox"/>
</asp:ContentPlaceHolder>
In the render of the page in design mode it says [DelegateControl]. When I publish the page, I do not see a search box, I see nothing... can someone point me in the direction as how to enable search on my default master page, thanks.
I had the exact same problem but eventually found a very simple solution. You just need to make sure your asp:ContentPlaceHolder is within an html form. I don't know exactly why this is the case, but simply changing your code to
<form id="Form1" runat="server">
<asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server">
<SharePoint:DelegateControl runat="server" ControlId="SmallSearchInputBox"/>
</asp:ContentPlaceHolder>
</form>
should solve the problem.
I found this very simple application.master page: http://blogs.microsoft.co.il/blogs/justguy/archive/2008/08/31/empty-application-master.aspx
When the search boxes worked using this simple master page, I was able to track down the problem and find the needed element.
Are you certain that you MOSS Search service is correctly configured?
If not, check this article:
http://www.mysharepointblog.com/post/2008/10/Configure-Search-On-MOSS-2007-(Microsoft-Office-SharePoint-Server).aspx
Have you activated the "Office SharePoint Server Standard Site Collection features" from the site features?

Resources