Skip to main content

A Latest News Macro using XSLT,

The Following Code can be placed in a Template or in a Macro for a user to place on any page.

What this Macro does, is display only the last 2 news items, I have used it on the following sites, for example:

Cindy-Lou photographer (link to follow) and SCSC (link to follow)

The only bit that needs cahnged per project are:

1)  <xsl:variable name="maxItems" select="2"/> (highlighted below) --> This ensures only the lates 2 News Items are shown.
2) <xsl:if test="@template = 1169"> (highlighted below) --> 1169 is the Template ID of my News Articles,  change 1169 to match the News Item template for your project. 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxml="urn:schemas-microsoft-com:xslt"
  xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets" xmlns:PS.XSLTsearch="urn:PS.XSLTsearch"
  exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets PS.XSLTsearch ">

<xsl:output method="xml" omit-xml-declaration="yes"/>

<xsl:param name="currentPage"/>

<!-- update this variable on how deep your site map should be -->
<xsl:variable name="maxLevelForSitemap" select="8"/>
<xsl:variable name="maxItems" select="2"/>


  <xsl:template match="/">
    <div id="latestNews">
      <xsl:variable name="counter" select="1" />
      <h2>Latest News</h2>
      <ul>
      <xsl:call-template name="drawNodes">
        <xsl:with-param name="parent" select="$currentPage/ancestor-or-self::* [@isDoc and @level=1]"/>
      </xsl:call-template>
      </ul>
        </div>
  </xsl:template>
   
   

  <xsl:template name="drawNodes">
    <xsl:param name="parent"/>
    <xsl:if test="umbraco.library:IsProtected($parent/@id, $parent/@path) = 0 or (umbraco.library:IsProtected($parent/@id, $parent/@path) = 1 and umbraco.library:IsLoggedOn() = 1)">
  
 
        <xsl:for-each select="$parent/* [@isDoc and @level &lt;= $maxLevelForSitemap]">
     <xsl:sort select="newsDate" order="descending"/>


       
    <xsl:if test="position()&lt;= $maxItems">
      <xsl:if test="@template = 1169">
               <li>
               <a href="{umbraco.library:NiceUrl(@id)}"><xsl:value-of select="newsTitle"/></a>
               </li>
            </xsl:if>
        </xsl:if>
             <xsl:if test="count(./* [@isDoc and @level &lt;= $maxLevelForSitemap]) &gt; 0">
               <xsl:call-template name="drawNodes">
                 <xsl:with-param name="parent" select="."/>
               </xsl:call-template>
             </xsl:if>
        
        
        </xsl:for-each>
     
  
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>

Comments

Popular posts from this blog

Create a .NET Contact Form that Gets the Last Url Visited in C# Can also be Used in Umbraco

This is a Simple Contact From done in C# .Net and also can be used in Umbraco.  Paste the code in to Visual Web Developer for a better view. The important bits are coment in the second file.  One of the Commented out lines highlights how to get the mailto address from an Umbraco field. The code Below includes the myContactForm.ascx.cs codebehind file and the myContactForm.ascx file. 1) The myContactForm.ascx file:  <%@ Control Language="C#" AutoEventWireup="true" CodeFile="ContactFormforPublications.ascx.cs" Inherits="usercontrols_ContactFormPublications" %> <div class="contact-form" id="contactForm" runat="server">     <h3>Request a Publication</h3>     <div class='int'>         <form runat="server">         <asp:Panel DefaultButton="contactFormSubmit" runat="server">         <fieldset>             <div class='

Umbraco 7 - C# Razor - Passing a parameter variable from a Template to a Partial View.

Passing a parameter variable from a Template to a Partial View Example - Passing a Page Id to a Partial View. In the example below we are passing 3 page Ids (1090. 1091, 1092) to a partial view.  The Partial View will display the details for each of these nodes on a home page.  See final output below. 1) In your Template: @Html.Partial("HomePageLinksToLandingPages", new ViewDataDictionary{{ "pageId", 1090}}) @Html.Partial("HomePageLinksToLandingPages", new ViewDataDictionary{{ "pageId", 1091}}) @Html.Partial("HomePageLinksToLandingPages", new ViewDataDictionary{{ "pageId", 1092}}) 2) The Partial View: @inherits Umbraco.Web.Mvc.UmbracoTemplatePage @{ var thisPageId = 1090; var stringPage = @ViewData["pageId"]; thisPageId = Convert.ToInt32(stringPage); } <div class="col-md-4"> <arti