<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>ThinkofDesign Blog</title> 
        <link>http://www.thinkofdesign.com</link> 
        <description>RSS feeds for DotNetNuke Skins and Resources by ThinkofDesign</description> 
        <ttl>60</ttl> <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/thinkofdesign-blog" type="application/rss+xml" /><feedburner:emailServiceId>thinkofdesign-blog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Links for 2009-11-03 [del.icio.us]</title><link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/xmOyWOk6sKg/vasilis</link><pubDate>Wed, 04 Nov 2009 00:00:00 PST</pubDate><guid isPermaLink="false">http://del.icio.us/vasilis#2009-11-03</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://davidwalsh.name/text-selection-ajax"&gt;Record Text Selections Using MooTools or jQuery AJAX&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/xmOyWOk6sKg" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/vasilis#2009-11-03</feedburner:origLink></item><item><title>Links for 2009-11-01 [del.icio.us]</title><link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/2ij0W3CmAuo/vasilis</link><pubDate>Sun, 01 Nov 2009 23:00:00 PST</pubDate><guid isPermaLink="false">http://del.icio.us/vasilis#2009-11-01</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mikevandermeulen.com/dnn"&gt;DotNetNuke Installation Utility&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/2ij0W3CmAuo" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/vasilis#2009-11-01</feedburner:origLink></item><item><title>Links for 2009-10-29 [del.icio.us]</title><link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/IVz6hyzx6fQ/vasilis</link><pubDate>Fri, 30 Oct 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/vasilis#2009-10-29</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://docs.jquery.com/JQuery_1.4_Roadmap"&gt;JQuery 1.4 Roadmap - jQuery JavaScript Library&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/IVz6hyzx6fQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/vasilis#2009-10-29</feedburner:origLink></item><item><title>Links for 2009-10-28 [del.icio.us]</title><link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/CAM_40Tv_D8/vasilis</link><pubDate>Thu, 29 Oct 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/vasilis#2009-10-28</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.mikeindustries.com/blog/archive/2009/04/the-sorry-state-of-wysiwyg-web-editors"&gt;Mike Davidson &amp;ndash; The Sorry State of WYSIWYG Web Editors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.dotlesscss.com/"&gt;Less Css for .NET&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/CAM_40Tv_D8" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/vasilis#2009-10-28</feedburner:origLink></item><item><title>Links for 2009-10-26 [del.icio.us]</title><link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/PiFt7aSks6I/vasilis</link><pubDate>Tue, 27 Oct 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/vasilis#2009-10-26</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2009/10/23/showcase-of-web-design-in-ireland-2/"&gt;Showcase of Web Design in Ireland &amp;laquo; Smashing Magazine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/PiFt7aSks6I" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/vasilis#2009-10-26</feedburner:origLink></item><item><title>Links for 2009-10-25 [del.icio.us]</title><link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/hhsYXP9SdLI/vasilis</link><pubDate>Mon, 26 Oct 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/vasilis#2009-10-25</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.strata.com/"&gt;Strata - The Power of 3D&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/hhsYXP9SdLI" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/vasilis#2009-10-25</feedburner:origLink></item><item>
    <comments>http://www.thinkofdesign.com/blog/id/72/all-dnn-sites-need-a-logo.aspx#Comments</comments> 
    <slash:comments>3</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=72</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=72&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 All DNN sites need a logo?</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/hD0PvQqZlwg/all-dnn-sites-need-a-logo.aspx</link> 
    <description>&lt;p&gt;There are cases that an image for the logo can be optional like in small personal sites and blogs. By default within a DotNetNuke site we have to choose between two options, either an image or no logo at all. So today we see how to make DNN show our portal name instead of a logo image in a search engine friendly manner.&lt;/p&gt; &lt;p&gt;Let's first see the code example and then we explain it.&lt;/p&gt; &lt;pre&gt; &amp;lt;% if len(PortalSettings.LogoFile) &amp;gt; 0 then %&amp;gt;&lt;br /&gt; &amp;lt;dnn:logo runat=&amp;quot;server&amp;quot; id=&amp;quot;dnnLOGO&amp;quot; /&amp;gt;&lt;br /&gt; &amp;lt;% else %&amp;gt;&lt;br /&gt; &amp;lt;h1 id=&amp;quot;logo&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;http://&amp;lt;%= PortalSettings.PortalAlias.HTTPAlias %&amp;gt;&amp;quot;&amp;gt;&amp;lt;%= PortalSettings.PortalName %&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt; &amp;lt;% end if %&amp;gt; &lt;/pre&gt; &lt;p&gt;What we do is pretty obvious. First we check if there is an image selected in site settings to be the logo of the portal. If there is one then we show it. That's the default DNN behavior actually. What we added is the way to handle the &amp;quot;else&amp;quot; case where a logo image has not been selected. So in that case we show an h1 and inside that a link to the portal's URL. I know that &lt;a title="Seablick" href="http://seablick.com"&gt;Tom&lt;/a&gt; will really love this! We also set the id of the h1 to be &amp;quot;logo&amp;quot; so we can customize it with CSS. And of course the text in the link is the name of our portal.&lt;/p&gt; &lt;p&gt;You can see that in action in the &amp;quot;&lt;a title="Nucleus DotNetNuke Skin" href="http://nucleus.thinkofdesign.com/"&gt;Nucleus&lt;/a&gt;&amp;quot; skin I'm currently working on.&lt;/p&gt; &lt;p&gt;That's it folks. We could also update the logo skin object to do the same.&lt;/p&gt; &lt;p&gt;I hope you find this tip useful.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=hD0PvQqZlwg:ankmQG3HUWY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=hD0PvQqZlwg:ankmQG3HUWY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=hD0PvQqZlwg:ankmQG3HUWY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=hD0PvQqZlwg:ankmQG3HUWY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=hD0PvQqZlwg:ankmQG3HUWY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=hD0PvQqZlwg:ankmQG3HUWY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/hD0PvQqZlwg" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Tue, 30 Jun 2009 19:18:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:72</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/72/all-dnn-sites-need-a-logo.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/71/skinning-utopia-or-taking-dnn-skins-to-the-next-level.aspx#Comments</comments> 
    <slash:comments>7</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=71</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=71&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 Skinning Utopia... or taking DNN skins to the next level</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/GcUIHIzr2-4/skinning-utopia-or-taking-dnn-skins-to-the-next-level.aspx</link> 
    <description>&lt;p&gt;I am just thinking of this so much time that I cannot keep it for  myself for any longer. I love DNN skinning engine but I really think  there is something important that is missing. Something that will take  DNN skins to the next level.&lt;/p&gt;
&lt;h3&gt;So what is the problem&lt;/h3&gt;
&lt;p&gt;The  problem is more obvious with the skins for sale on Snowcovered or on  the DNN Marketplace. Those skins are not enough dynamic. DNN site  owners need to be able to customize a skin upon their needs. They can  do that now only if the know HTML and CSS or if they hire someone to do  it for them. Skinners try to make their skins flexible and give their  customers some power over the look and feel of their site by offering  many page skins. Obviously creating more and more page skins is not the  solution. Ten, fifty or a hundred page skins are not enough to cover  all possible combinations. Not to mention that in most cases, the only  difference between the page skins that included within a package is  different headers or background colors.&lt;/p&gt;
&lt;h3&gt;Looking for the solution&lt;/h3&gt;
&lt;p&gt;DNN  site owners need to be able to customize their skins through a friendly  interface. Skinners need tools so they can offer this kind of  flexibility with their skins. Skins need to be as powerful as the  modules are. Skin Designer feature in the recent DNN versions seems to  walk in this direction but what I envision is much more than that.&lt;/p&gt;
&lt;h3&gt;WordPress is a good place for inspiration&lt;/h3&gt;
&lt;p&gt;The  first time I saw a WordPress theme with a Theme Options page I thought  &amp;quot;Yes, this is a great idea!&amp;quot;. DotNetNuke and WordPress have not much in  common. But I find the idea to have a Skin Options page really  exciting. A user friendly interface where the site owner will be able  to customize a skin without HTML and CSS to be a requirement.&lt;/p&gt;
&lt;h3&gt;Implementation&lt;/h3&gt;
&lt;p&gt;OK,  now begins the imaginative part. I'm not a programmer so what you will  read in the following lines is probably far far away from a real world  implementation.&lt;/p&gt;
&lt;p&gt;We want the site owner to be  able to customize both the HTML and the CSS part of a skin through a  dynamically generated form. We'll do that with a module. Let's name it  the &amp;quot;Skin Options&amp;quot; module. Through the module we can customize the skin  at portal level or at page level. So a &amp;quot;Skin Options&amp;quot; page will be  created automatically, when we install the module, under the &amp;quot;Admin&amp;quot;  site section where we can set the skin options at portal level. But we  can also override these options at page level just be dropping the  module in a page and set new skin options for that particular page. The  module will work only for the skins that include an options.xml file in  the skin folder. In the options.xml file the skinner will be able to  define what kind of input needs from the site owner and how this input  will affect the skin.&lt;/p&gt;
&lt;h3&gt;Overriding skin.css&lt;/h3&gt;
&lt;p&gt;So  for example the skinner could ask for a text input with &amp;quot;Background  color:&amp;quot; label that will override a style within a CSS selector in  skin.css (ideally multiple styles within multiple CSS selectors in  skin.css). Or a select box where the user will be able to choose  between several background images. Or a Boolean value based on which  we'll be able to know if the user wants the login link to be visible or  not. The module will create a new css file based on the user input that  will override skin.css either for the whole portal or for a specific  page.&lt;/p&gt;
&lt;h3&gt;Beyond skin objects&lt;/h3&gt;
&lt;p&gt;With  the same process we can get some input from the site owner and put it  in the DB. Then we can use that input in the skin.ascx to add logic to  our skin code. So for example on some pages instead of the breadcrumbs  skin object we show the page title or we don't show anything. Why not  and small text parts in areas of the skin that panes are not  appropriate. For example a custom message before the register link or  two three additional links on the right of the login and register  links. So in options.xml the skinner would be able to define custom  tags that will return either a text or a Boolean value.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;As  I wrote, the implementation part of this post is imaginative. I have no  idea if it makes any sense or not. What I wanted to do was to point out  something that I see as a need in the DNN skinning market and then just  imagine a possible solution from the perspective of a skinner.&lt;/p&gt;
&lt;p&gt;I would love to read your thoughts in the comments.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=GcUIHIzr2-4:F2bwLH-3Gk4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=GcUIHIzr2-4:F2bwLH-3Gk4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=GcUIHIzr2-4:F2bwLH-3Gk4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=GcUIHIzr2-4:F2bwLH-3Gk4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=GcUIHIzr2-4:F2bwLH-3Gk4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=GcUIHIzr2-4:F2bwLH-3Gk4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/GcUIHIzr2-4" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Sat, 27 Jun 2009 02:28:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:71</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/71/skinning-utopia-or-taking-dnn-skins-to-the-next-level.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/70/role-based-skinning.aspx#Comments</comments> 
    <slash:comments>4</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=70</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=70&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 Role Based Skinning</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/07P3JD3cG-E/role-based-skinning.aspx</link> 
    <description>&lt;p&gt;Similar to the &amp;quot;CSS Selectable Pages&amp;quot;, we shall keep adding efficiency to our skin code. This time we have a look at ways to reveal or conceal parts of our skin to the users according to their role or authentication. For example we could have a common header image for our guests and a more particular one for our members. Or even a special one for the users in a specific role. You got the idea.&lt;/p&gt; &lt;p&gt;There are not much to explain actually. Instead, all we need is small pieces of server side code. The reason these techniques are not so known to the public is because they are not documented. I'm doing skins for several years and have been in situations where I had to find solutions that common skinning techniques don't make it. It's about those small code hints that really make a difference but we need to spend time to discover.&lt;/p&gt; &lt;h3&gt;How to check whether a user is authenticated in skin code&lt;/h3&gt; &lt;pre&gt;&amp;lt;% if Request.IsAuthenticated then %&amp;gt;&lt;br /&gt; skin code for authenticated users&lt;br /&gt; &amp;lt;% end if %&amp;gt;&lt;/pre&gt; &lt;p&gt;Real world example: On the &lt;a title="PokerDIY" href="http://www.pokerdiy.com/"&gt;PokerDIY&lt;/a&gt; web site we have a &amp;quot;Take a Tour&amp;quot; link in the header which becomes a link to your inbox once you are logged in.&lt;/p&gt; &lt;h3&gt;&lt;strong&gt;How to check user's role in skin code&lt;/strong&gt;&lt;/h3&gt; &lt;pre&gt;&amp;lt;% if UserController.GetCurrentUserInfo().IsInRole(&amp;quot;Special Members&amp;quot;)  then %&amp;gt;&lt;br /&gt; skin code for registered users in the &amp;quot;Special Members&amp;quot; role&lt;br /&gt; &amp;lt;% end if %&amp;gt;&lt;/pre&gt; &lt;p&gt;Real world example: On &lt;a title="Seablick" href="http://seablick.com/"&gt;Seablick&lt;/a&gt; we replace the fancy header with a dynamic menu when logged in as Admin or Host.&lt;/p&gt; &lt;p&gt;I tried to give you some ideas but I'm sure you will find many other ways to use the above. I would love to read about your findings in the comments... Sometimes what seems to be obvious for you is well hidden for others.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=07P3JD3cG-E:PKkLe9r10wE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=07P3JD3cG-E:PKkLe9r10wE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=07P3JD3cG-E:PKkLe9r10wE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=07P3JD3cG-E:PKkLe9r10wE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=07P3JD3cG-E:PKkLe9r10wE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=07P3JD3cG-E:PKkLe9r10wE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/07P3JD3cG-E" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Thu, 25 Jun 2009 08:58:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:70</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/70/role-based-skinning.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/69/watercolors-on-transparent-background.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=69</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=69&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 Watercolors on transparent background</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/ClgfAO3JVF4/watercolors-on-transparent-background.aspx</link> 
    <description>&lt;p&gt;That's the first collaborative work with my daughter! She's the one who put the colors on the paper. I scanned them and removed the background in photoshop. The result was interesting so I thought to make the images available for download.&lt;/p&gt;&lt;p class="text-center"&gt;&lt;img src="/portals/0/watercolors.jpg" /&gt;&lt;/p&gt;&lt;p&gt;There are four huge PNG images 3508 x 2552 px that can be used in many ways. For those who want to know how I removed the white background, the process is really simple. We just go to the Channels and Ctrl + Click on the RGB icon. Then Select &gt; Inverse. Then copy and paste in a new canvas. To increase the color strength we can duplicate the layer, setting the blending mode of the new layer to Multiply.&lt;/p&gt;&lt;p&gt;Be creative!&lt;/p&gt;&lt;p class="text-center"&gt;&lt;a href="http://bloomfiles.com/files/watercolors.zip"&gt;&lt;img src="/portals/0/download.png" alt="Download"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ClgfAO3JVF4:_YS69i7GlqI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ClgfAO3JVF4:_YS69i7GlqI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ClgfAO3JVF4:_YS69i7GlqI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=ClgfAO3JVF4:_YS69i7GlqI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ClgfAO3JVF4:_YS69i7GlqI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ClgfAO3JVF4:_YS69i7GlqI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/ClgfAO3JVF4" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Fri, 19 Jun 2009 14:38:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:69</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/69/watercolors-on-transparent-background.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/68/css-selectable-pages.aspx#Comments</comments> 
    <slash:comments>6</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=68</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=68&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 CSS Selectable Pages</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/roQjffNh-7Y/css-selectable-pages.aspx</link> 
    <description>&lt;p&gt;Consider the following scenario. We have a portal with decades or hundreds of pages. Some of those pages include content that needs special styles to look good. Inline CSS is not an option as we talk about a good amount of CSS code. What we need is CSS selectors that will target on those specific pages. How can we do that?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Introducing CSS Selectable Pages&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I always wrap my skin code in a DIV. It helps me in several ways, like avoiding CSS conflicts or writing styles for a page skin without having to create an additional CSS file.&lt;/p&gt; &lt;p&gt;That usually goes like this:&lt;/p&gt; &lt;pre&gt;&amp;lt;div id=&amp;quot;skinname&amp;quot; class=&amp;quot;pageskinname&amp;quot;&amp;gt;&lt;br /&gt; &lt;br /&gt; skin code&lt;br /&gt; &lt;br /&gt; &amp;lt;/div&amp;gt; &lt;/pre&gt; &lt;p&gt;Here comes the cool part. Wouldn't be nice if we could add a dynamic CSS class to this DIV? A CSS class that will be generated by DNN and will be unique for every single page of our site. Oh yes, that's what we need. And know what?  It is possible and it's also dead simple.&lt;/p&gt; &lt;pre&gt; &amp;lt;div id=&amp;quot;skinname&amp;quot; class=&amp;quot;pageskinname page&amp;lt;%=PortalSettings.ActiveTab.TabID %&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt; &lt;br /&gt; skin code&lt;br /&gt; &lt;br /&gt; &amp;lt;/div&amp;gt; &lt;/pre&gt; &lt;p&gt;Isn't nice? Isn't great? How come I hadn't thought of this before? That's what came into my mind the first time I thought of this trick!&lt;/p&gt; &lt;p&gt;&amp;lt;%=PortalSettings.ActiveTab.TabID %&amp;gt; will generate the current page ID. So when we browse a page with ID=75, our code on the client will look like this:&lt;/p&gt; &lt;pre&gt; &amp;lt;div id=&amp;quot;skinname&amp;quot; class=&amp;quot;pageskinname page75&amp;quot;&amp;gt;&lt;br /&gt; &lt;br /&gt; skin code&lt;br /&gt; &lt;br /&gt; &amp;lt;/div&amp;gt; &lt;/pre&gt; &lt;p&gt;Now we can go in the stylesheet editor and write some styles for this particular page.&lt;/p&gt; &lt;pre&gt; .page75 p { font:normal 1.1em/1.5 Tahoma,Sans-serif; color:#555; } &lt;/pre&gt; &lt;p&gt;That's it. Simple and powerful. A technique that obviously adds efficiency to our skin code.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=roQjffNh-7Y:OKaIUvQUerE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=roQjffNh-7Y:OKaIUvQUerE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=roQjffNh-7Y:OKaIUvQUerE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=roQjffNh-7Y:OKaIUvQUerE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=roQjffNh-7Y:OKaIUvQUerE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=roQjffNh-7Y:OKaIUvQUerE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/roQjffNh-7Y" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Sat, 30 May 2009 13:32:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:68</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/68/css-selectable-pages.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/67/css-specificity.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=67</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=67&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 CSS Specificity</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/PyBYIEOKUp8/css-specificity.aspx</link> 
    <description>&lt;p&gt;I had a quick chat with a friend who was trying to override some CSS  styles so he can change the look and feel of the Telerik menu for DNN  and I thought to post some useful information that many others could  benefit from.&lt;/p&gt;
&lt;p&gt;It's  about CSS specificity and I will not go in the details of this concept  because it's well covered in several good articles, some of them are  listed at the bottom of this post. I just want to point out that it is  a concept that may not be so important on web sites that use one style  sheet but within a framework like DNN where multiple CSS files and CSS  overrides are so extensively used, it is really something that we need  to be aware of.&lt;/p&gt;
&lt;p&gt;Just to give a quick overview of the concept,  every CSS selector has a weight which is called specificity. The more  specific is a selector the more weight it has.&lt;/p&gt;
&lt;p&gt;See this example:&lt;/p&gt;
&lt;pre&gt;span.text{color:red;}&lt;br /&gt;
	&lt;br /&gt;
.text{color:green;}&lt;/pre&gt;
&lt;p&gt;In  the above we have two selectors that look similar but the first one is  more specific (has more weight) because it targets only SPAN elements.  The second targets any element with class=&amp;quot;text&amp;quot; so it will not be  applied on SPAN elements with class=&amp;quot;text&amp;quot; because it can't override  the first one.&lt;/p&gt;
&lt;p&gt;If we want to override the first selector, we have to create another one with more weight like below:&lt;/p&gt;
&lt;pre&gt;div span.text{color:green;}&lt;/pre&gt;
&lt;p&gt;Keep  in mind that specificity is more important than the order of the  selectors in our sheets. So a selector with more weight will override  another with less even if the second one came last in the browser.&lt;/p&gt;
&lt;p&gt;Hope I gave you a very basic idea. Below you can find some good articles for further reading about the topic.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a title="CSS Specificity: Things You Should Know" href="http://www.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/"&gt;CSS Specificity: Things You Should Know&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a title="Links Specificity" href="http://meyerweb.com/eric/css/link-specificity.html" id="kid2"&gt;Links Specificity&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a title="Calculating a selector's specificity" href="http://www.w3.org/TR/CSS21/cascade.html#specificity"&gt;Calculating a selector's specificity&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a title="Specificity | HTML Dog" href="http://htmldog.com/guides/cssadvanced/specificity/"&gt;Specificity | HTML Dog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=PyBYIEOKUp8:Yt5ltitBGJY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=PyBYIEOKUp8:Yt5ltitBGJY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=PyBYIEOKUp8:Yt5ltitBGJY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=PyBYIEOKUp8:Yt5ltitBGJY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=PyBYIEOKUp8:Yt5ltitBGJY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=PyBYIEOKUp8:Yt5ltitBGJY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/PyBYIEOKUp8" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Tue, 20 Jan 2009 02:03:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:67</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/67/css-specificity.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/66/how-to-avoid-the-span-in-the-dnntitle.aspx#Comments</comments> 
    <slash:comments>5</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=66</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=66&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 How to avoid the SPAN in the dnn:TITLE</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/Rlyp5OSZ07o/how-to-avoid-the-span-in-the-dnntitle.aspx</link> 
    <description>&lt;p&gt;This is just an answer to a question posted on &lt;a href="http://twitter.com/thinkofdesign"&gt;my twitter&lt;/a&gt; from &lt;a href="http://twitter.com/horacioj"&gt;@horacioj&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;It's about how to avoid the SPAN and get a clean heading tag in a DNN container title.&lt;/p&gt; &lt;p&gt;Below you can see the code for a simple container that demonstrates exactly that.&lt;p&gt; &lt;pre&gt; &amp;lt;%@ Control language="vb" AutoEventWireup="false" Explicit="True" Inherits="DotNetNuke.UI.Containers.Container" %&amp;gt;&lt;br /&gt; &amp;lt;%@ Register TagPrefix="dnn" TagName="TITLE" Src="~/Admin/Containers/Title.ascx" %&amp;gt;&lt;br /&gt; &amp;lt;%@ Register TagPrefix="dnn" TagName="Actions" Src="~/Admin/Containers/Actions.ascx" %&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;dnn:title runat="server" id="dnnTitle" visible="false" /&amp;gt;&lt;br /&gt; &amp;lt;% Dim ModuleTitle As String = GetPortalModuleBase(dnnTitle).ModuleConfiguration.ModuleTitle %&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;div class="common"&amp;gt;&lt;br /&gt; &amp;lt;h3&amp;gt;&amp;lt;%= ModuleTitle %&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt; &amp;lt;dnn:Actions runat="server" id="dnnActions" /&amp;gt;&lt;br /&gt; &amp;lt;div id="ContentPane" runat="server" /&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt; &lt;/pre&gt; &lt;p&gt;I have to mention though that with this implementation, the inline title editing won't work.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=Rlyp5OSZ07o:T9KRQ1fDzwc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=Rlyp5OSZ07o:T9KRQ1fDzwc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=Rlyp5OSZ07o:T9KRQ1fDzwc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=Rlyp5OSZ07o:T9KRQ1fDzwc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=Rlyp5OSZ07o:T9KRQ1fDzwc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=Rlyp5OSZ07o:T9KRQ1fDzwc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/Rlyp5OSZ07o" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Mon, 19 Jan 2009 00:16:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:66</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/66/how-to-avoid-the-span-in-the-dnntitle.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/65/an-easy-way-to-test-containers.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=65</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=65&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 An easy way to test containers</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/CsdLhvZYM-Y/an-easy-way-to-test-containers.aspx</link> 
    <description>&lt;p&gt;If you ever tried to create a set with several containers, I'm sure you have seen how time consuming can be, to apply one by one the containers you have created so you can be sure that everything looks and works as it should.&lt;/p&gt;
&lt;p&gt;DotNetNuke from the very early versions, give to the skinners the ability to preset the usage of a specific container in a pane. This concept is known as &lt;span class="b"&gt;Pane Level&lt;/span&gt; skinning. Take a look in the following code:&lt;/p&gt;
&lt;pre&gt;&amp;lt;div id=&amp;quot;ContentPane&amp;quot; runat=&amp;quot;server&amp;quot; containertype=&amp;quot;L&amp;quot; containername=&amp;quot;SkinName&amp;quot; containersrc=&amp;quot;ContainerName.ascx&amp;quot; /&amp;gt;&lt;/pre&gt;
&lt;p&gt;The containertype, containername and containersrc are the attributes we're talking about. Let's see what they mean.&lt;/p&gt;
&lt;h4&gt;containertype&lt;/h4&gt;
&lt;p&gt;With this attribute we tell DNN whether our container is stored under the &lt;span class="b"&gt;\Portals\_default\Containers\&lt;/span&gt; directory or under our &lt;span class="b"&gt;\Portals\{portal ID}\Containers\&lt;/span&gt; directory. In the first case the containertype needs the value &lt;span class="b"&gt;G&lt;/span&gt; and in the second the value &lt;span class="b"&gt;L&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Just a reminder here that we store our skins and containers under &lt;span class="b"&gt;\Portals\_default\&lt;/span&gt;, when we want to make them available to all portals that will be created with our DNN installation. Instead, when we put them under &lt;span class="b"&gt;\Portals\{portal ID}\&lt;/span&gt;, they will be available only to that specific portal (for example \Portals\0\).&lt;/p&gt;
&lt;h4&gt;containername&lt;/h4&gt;
&lt;p&gt;This is the name of the folder where our containers reside in, which is also the name of our containers set. For example &lt;span class="b"&gt;\Portals\0\MyContainers&lt;/span&gt;. There is no default value and we use just the name of the folder, not the full path.&lt;/p&gt;
&lt;h4&gt;containersrc&lt;/h4&gt;
&lt;p&gt;This is the file name of the container we want to apply, which is also the container name. For example &lt;span class="b"&gt;\Portals\0\MyContainers\MyContainer.ascx&lt;/span&gt;. There is no default value and we use just the name of the file, not the full path.&lt;/p&gt;
&lt;p&gt;All three attributes are required. If we forget one of them or there is an error with one of their values, the default DNN container will be applied.&lt;/p&gt;
&lt;p&gt;This concept intended to give the skinners the power to override the &lt;span class="b"&gt;Portal Level&lt;/span&gt; container in situations that this is suitable. With &lt;span class="b"&gt;Portal Level&lt;/span&gt; container we mean the &lt;span class="b"&gt;Portal Container&lt;/span&gt; the administrator has been selected in the &lt;span class="b"&gt;Appearance&lt;/span&gt; section in &lt;span class="b"&gt;Site Settings&lt;/span&gt;. The administrator is still able to override the container has been preset from the skinner, applying a new container as &lt;span class="b"&gt;Module Container&lt;/span&gt; in &lt;span class="b"&gt;Module Settings&lt;/span&gt;.&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Portal Container - set by Administrator&lt;/li&gt;
	&lt;li&gt;Pane Container - set by Skinner&lt;/li&gt;
	&lt;li&gt;Module Container - set by Administrator&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The problem with this concept is that the containertype, containername and containersrc are not standards compliant attributes. So if we want our skin code and therefore our site to validate, we cannot use them in production. But I find them extremely useful during the development. Instead of going in &lt;span class="b"&gt;Site Settings&lt;/span&gt; or &lt;span class="b"&gt;Module Settings&lt;/span&gt; and apply the containers I want to test again and again, I just change the file name value of the containersrc attribute in my skin code.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=CsdLhvZYM-Y:x6CBWlVHqks:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=CsdLhvZYM-Y:x6CBWlVHqks:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=CsdLhvZYM-Y:x6CBWlVHqks:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=CsdLhvZYM-Y:x6CBWlVHqks:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=CsdLhvZYM-Y:x6CBWlVHqks:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=CsdLhvZYM-Y:x6CBWlVHqks:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/CsdLhvZYM-Y" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Fri, 26 Sep 2008 11:52:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:65</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/65/an-easy-way-to-test-containers.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/64/how-to-fix-the-dnn-file-manager-appearance.aspx#Comments</comments> 
    <slash:comments>2</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=64</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=64&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 How to fix the DNN File Manager appearance</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/HZNet56YHD8/how-to-fix-the-dnn-file-manager-appearance.aspx</link> 
    <description>&lt;p&gt;Sometimes the File Manager does not fit in the content area. I got this issue in many skins that use vertical navigation. To fix it, we just have to put a fixed width using the FileManager CSS class in skin.css or in portal.css which is easier for administrators because they can edit this file in Site Settings (Stylesheet Editor). We can also use the !important keyword to make sure that our style will be applied no matter what.&lt;/p&gt; &lt;pre&gt;.FileManager{width:680px !important;}&lt;/pre&gt; &lt;p&gt;In the above, we can adjust the width upon our skin's needs.&lt;/p&gt; &lt;p&gt;Another thing that looks annoying in the File Manager when our skin's default font size is larger than 11px, is that many labels or even the file names in the list, wrap and the whole thing becomes a mess. Adding one more line in our skin.css or portal.css, we can fix that too.&lt;/p&gt; &lt;pre&gt; .FileManager{width:680px !important;}&lt;br /&gt;.FileManager *{font-size:11px !important;} &lt;/pre&gt;&lt;p&gt;In general, we can update about anything in the File Manager appearance using the FileManager CSS class. For example we could also add a background color or change the font color, to make it look OK with skins that use a dark background.&lt;/p&gt; &lt;p&gt;I hope you find this tip useful.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=HZNet56YHD8:C6gGYnqG3Kg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=HZNet56YHD8:C6gGYnqG3Kg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=HZNet56YHD8:C6gGYnqG3Kg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=HZNet56YHD8:C6gGYnqG3Kg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=HZNet56YHD8:C6gGYnqG3Kg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=HZNet56YHD8:C6gGYnqG3Kg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/HZNet56YHD8" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Fri, 26 Sep 2008 09:15:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:64</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/64/how-to-fix-the-dnn-file-manager-appearance.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/63/dotnetnuke-css-hierarchy.aspx#Comments</comments> 
    <slash:comments>3</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=63</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=63&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 DotNetNuke CSS hierarchy</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/XhZCu-vbyYE/dotnetnuke-css-hierarchy.aspx</link> 
    <description>&lt;p&gt;If you ever tried to view the source code when a DotNetNuke page is loaded in the browser, you probably noticed that there are several CSS files attached in the head area. In this article we'll try to break down this concept and understand how it works and how we can benefit from it. I think it's essential knowledge for administrators who need to make simple tweaks to the appearance of their DNN web sites, but also for developers and designers who make their first steps into the module and skin development.&lt;/p&gt; &lt;p&gt;Not only on a DNN web site but even on a single static web page, when we attach more than one CSS files, the styles that are included in all of them will be applied to our document. Many web designers use this method to separate their styles so for example they can have one stylesheet to control the layout, another one for the typography and so on. Another common technique is to have browser specific stylesheets, like one that includes styles only for IE6. Using IE conditional comments, we can attach this stylesheet only when the the request comes from a user with IE6. This technique has been very popular lately.&lt;/p&gt; &lt;p&gt;DotNetNuke makes extensive usage of this method but not for the reasons we described above... at least not until version 04.09.00 where having browser specific stylesheets is also possible. We need to talk a little more about this method so we can better understand the DNN reasons.&lt;/p&gt; &lt;p&gt;Let's assume we have two CSS files attached to an HTML document and both of them include the same classes and style rules. What will happen in this case? Which styles will finally be applied to our page? Here comes the interesting part... The styles that are included in the second CSS file will override those in the first one. In the following example the font size of our paragraphs will be 14px.&lt;/p&gt; &lt;pre&gt;&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;Stylesheet1.css&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;Stylesheet2.css&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;Stylesheet1.css&lt;br /&gt;p{font-size:12px;}&lt;br /&gt;&lt;br /&gt;Stylesheet2.css&lt;br /&gt;p{font-size:14px;} &lt;/pre&gt; &lt;p&gt;The browsers load the CSS files from top to bottom. If they find the same rules in two or more files, they apply the one found last. Even in just one CSS file, when a rule exists more than once, the lower in our CSS code is the one that will be applied. Let's see now how DNN uses this method to offer a flexible solution to developers and administrators.&lt;/p&gt; &lt;p&gt;The following list of CSS files is what we usually find when we view the source of a DNN page.&lt;/p&gt; &lt;p&gt;/Portals/_default/default.css&lt;br /&gt; /Portals/0/Skins/SkinName/skin.css&lt;br /&gt; /Portals/0/Skins/SkinName/container.css&lt;br /&gt; /Portals/0/portal.css&lt;/p&gt; &lt;p&gt;Well, we can find more but let's keep it as simple as possible for now. Later we will see when and why more CSS files find their place in this list. Two of the above files are really important, the first one (default.css) and the last one (portal.css).&lt;/p&gt; &lt;h3&gt; /Portals/_default/default.css&lt;/h3&gt; &lt;p&gt;This is the first stylesheet that we will find attached to all DNN web sites. It is responsible to bring some style to our pages no matter what. We can describe it as a fall back solution... when there are no other styles to be applied, our pages will still have some basic format with styles that come from this file. As you can understand, all CSS files to follow can override this one.&lt;/p&gt; &lt;h3&gt;/Portals/0/portal.css&lt;/h3&gt; &lt;p&gt;Like default.css, we will find portal.css attached to all DNN web sites but this time at the end of the list. The zero in the middle of the path is the portal ID. As you probably know, with one DNN installation we can have more than one portals and each one of them will have its own portal.css that can be found at /Portals/PortalID/portal.css.&lt;/p&gt; &lt;p&gt;On a fresh DNN installation, this file includes a list of CSS classes without style rules in them. These empty classes are there to give us an idea of what this file is all about. The portal.css is the last one in our list so we can use it to override styles that exist in the other CSS files. Can you now tell what those empty classes are? I guess you can! They are classes we can also find in the default.css but in the default.css they are not empty. So the DNN guys have kindly put the names of the most common default CSS classes in portal.css for us to have quick access and be able to override them, giving a personal touch to our DNN web site. Quick access means that all we have to do to edit this file, is to go to our Site Settings and open the Stylesheet Editor. Oh yeah... the file we're editing in there IS the portal.css. Cool eh?&lt;/p&gt; &lt;p&gt;Anyway, the point is that using the Stylesheet Editor, we can override not only the default DNN styles but also skin styles, container styles and module styles. But let's walk the bridge and move on to the next level. Are you following?&lt;/p&gt; &lt;h3&gt;DotNetNuke CSS hierarchy&lt;/h3&gt; &lt;p&gt;Having a better understanding of how things work, I think we can now talk about the DotNetNuke CSS hierarchy. With the term &amp;quot;CSS hierarchy&amp;quot; we mean which CSS files will be at what position in our list and why. So let's first create a quick diagram and then we'll get into the details.&lt;/p&gt; &lt;p&gt;1. &lt;span class="b"&gt;default styles&lt;/span&gt;: default.css&lt;br /&gt; 2. &lt;span class="b"&gt;module styles&lt;/span&gt;: module.css or styles that come from module templates&lt;br /&gt; 3. &lt;span class="b"&gt;skin styles&lt;/span&gt;: skin.css, PageskinName.css, container.css, ContainerName.css&lt;br /&gt; 4. &lt;span class="b"&gt;administrator styles&lt;/span&gt;: portal.css&lt;/p&gt; &lt;p&gt;There are two categories we have not examined yet, the module styles and and the skin styles. We need to make clear though that the files these styles reside in, are optional and we will not find the same files attached to all DNN web sites... not even from page to page on the same DNN web site.&lt;/p&gt; &lt;h4&gt;Module styles&lt;/h4&gt; &lt;p&gt;DotNetNuke module developers have the ability to optionally define CSS styles that will be applied to their modules, in a file called module.css. The number of module.css files we will find attached to a page of our DNN web site obviously depends on the number of modules we have put in our page and how many of them do have a module.css. If there are more than one, the order they will appear in our list is the same with the order the modules appear in our source code. &lt;/p&gt; &lt;p&gt;/DesktopModules/ModuleName/module.css&lt;/p&gt; &lt;p&gt;Some more advanced modules support templates. This means that the appearance of the module can be controlled with additional files, usually HTML and CSS. As administrators we can alter these files or add a new template and then select it from the admin interface of the module. The templates usually live under the module's directory. Can be something like /DesktopModules/ModuleName/Templates/Templatename/. So when a module supports templates and the template we're using includes a CSS file, for example template.css, this will appear in our list under the module.css of that module.&lt;/p&gt; &lt;p&gt;/DesktopModules/ModuleName/Templates/Templatename/template.css&lt;/p&gt; &lt;p&gt;The CSS files that are responsible for the appearance of the modules, come after the default.css in our list so the module developers can override the default styles, but also come before the skin styles and administrator styles, so either with a skin or using the Stylesheet Editor, we can override the module's styles and make it look good upon our needs.&lt;/p&gt; &lt;h4&gt;Skin styles&lt;/h4&gt; &lt;p&gt;Before we talk about the CSS files that can be included in a skin, we need to explain that a skin may have one or more page skins. Page skins are the HTML or ASCX files that are included in a skin and define the structure of a page. We call them page skins because they can be applied on pages. A simple and common example is the home page skin and the inner page skin. The home page skin is the one we can use for our home page and usually has a more complicated layout, with more panes. The inner page skin is the one we can apply to the inner pages of our site and usually includes two or three panes.&lt;/p&gt; &lt;p&gt;Now let's see how many CSS files can be included in a skin. First of all the skin.css. The styles that we put in skin.css will be applied to all page skins. Then comes the PageskinName.css, for example home.css or inner.css. The styles we put in the PageskinName.css will be applied only to PageskinName.ascx or, to make it more familiar, the styles we put in home.css will be applied only to home.ascx and can override the skin.css styles.&lt;/p&gt; &lt;p&gt;/Portals/PortalID/Skins/SkinName/skin.css&lt;br /&gt; /Portals/PortalID/Skins/SkinName/PageskinName.css&lt;/p&gt; &lt;p&gt;In most cases the skins include also a set of containers. The containers have their own place under the DNN directory which is the /Portals/PortalID/Containers/. A set of containers consists of one or more ACSX or HTML files, a container.css file and one or more containerName.css files. As in the skins, the container.css will be applied to all the containers and ContainerName.css will be applied only to ContainerName.ascx. When there are more than one ContainerName.css, the order they will appear in our list is the same with the order the containers appear in our source code. &lt;/p&gt; &lt;p&gt;/Portals/PortalID/Containers/SkinName/container.css&lt;br /&gt; /Portals/PortalID/Containers/SkinName/ContainerName.css&lt;/p&gt; &lt;p&gt;DotNetNuke version 04.09.00 introduced a &lt;a href="/blog/ctl/articleview/mid/369/articleid/62/the-styles-skin-object.aspx"&gt;new skin object&lt;/a&gt; that give us the ability to attach even more stylesheets to our pages. The new skin object's name is &amp;quot;Styles&amp;quot; and its purpose is to allow skinners attach browser specific stylesheets. The position of these files can be defined from the skinner to be either at the top or at the bottom of the list.&lt;/p&gt; &lt;h3&gt;How to identify an element's CSS class in the browser&lt;/h3&gt; &lt;p&gt;Now that we know how CSS works in DNN, we need a way to identify an element's CSS class so we can override its styles. With the evolution of the browsers this is not a problem. All modern browsers have tools, either built-in or developed as plug-ins, that make this task really easy. Opera has built-in Developer Tools. We can find them under Tools &amp;gt; Advanced. In &lt;a href="http://tools.google.com/chrome/"&gt;Google Chrome&lt;/a&gt; the only thing we have to do is right-click anywhere in a page and select the Inspect element option. For Firefox there is &lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt;, an excellent tool for everyone and a must-have for developers. Internet Explorer users can install the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;amp;displaylang=en"&gt;Developer Toolbar&lt;/a&gt; and Safari users the &lt;a href="http://trac.webkit.org/wiki/Web%20Inspector"&gt;Web Inspector&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Summarizing we can say that the DotNetNuke CSS file system and hierarchy, probably seems to be too complicated for the newcomers. Believe me, it's not that much. After a few hours of practicing, we can enjoy the power and flexibility of this platform.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=XhZCu-vbyYE:0YM05XOjvqo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=XhZCu-vbyYE:0YM05XOjvqo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=XhZCu-vbyYE:0YM05XOjvqo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=XhZCu-vbyYE:0YM05XOjvqo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=XhZCu-vbyYE:0YM05XOjvqo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=XhZCu-vbyYE:0YM05XOjvqo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/XhZCu-vbyYE" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Sun, 21 Sep 2008 23:47:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:63</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/63/dotnetnuke-css-hierarchy.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/62/the-styles-skin-object.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=62</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=62&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 The Styles Skin Object</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/uigja3M5z8A/the-styles-skin-object.aspx</link> 
    <description>&lt;p&gt;DotNetNuke version 04.09.00 introduced a new skin object that give us the ability to attach even more StyleSheets to our pages. The new skin object's name is &amp;quot;Styles&amp;quot; and its purpose is to allow skinners attach browser specific stylesheets.&lt;/p&gt;
&lt;p&gt;The code as we can find it in the new default skin:&lt;/p&gt;
&lt;pre&gt;&amp;lt;dnn:STYLES runat=&amp;quot;server&amp;quot; ID=&amp;quot;StylesIE6&amp;quot; Name=&amp;quot;IE6Minus&amp;quot; StyleSheet=&amp;quot;ie6skin.css&amp;quot; Condition=&amp;quot;LT IE 7&amp;quot; UseSkinPath=&amp;quot;true&amp;quot; /&amp;gt;&lt;/pre&gt;
&lt;p&gt;Of course it has to be registered first.&lt;/p&gt;
&lt;pre&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;dnn&amp;quot; TagName=&amp;quot;STYLES&amp;quot; Src=&amp;quot;~/Admin/Skins/Styles.ascx&amp;quot; %&amp;gt;&lt;/pre&gt;
&lt;p&gt;And here is the description of its attributes as we can read in the /Admin/Skins/Styles.xml&lt;/p&gt;
&lt;h3&gt;Condition&lt;/h3&gt;
&lt;p&gt;Internet Explorer specific condition. All valid conditional expressions are allowed, for example &amp;quot;LT IE 7&amp;quot;, &amp;quot;gte IE 7&amp;quot; or &amp;quot;(IE 6)|(IE 7)&amp;quot;. See &lt;a href="http://msdn.microsoft.com/en-us/library/ms537512.aspx"&gt;MS MSDN Library&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h3&gt;IsFirst&lt;/h3&gt;
&lt;p&gt;Boolean value that defines whether the stylesheet link should be loaded as first link or not. If false, the link will be added as last.&lt;/p&gt;
&lt;h3&gt;Name&lt;/h3&gt;
&lt;p&gt;String value that will define the ID of the stylesheet link&lt;/p&gt;
&lt;h3&gt;StyleSheet&lt;/h3&gt;
&lt;p&gt;String value that contains the path to the style sheet that needs to be loaded. The path is relative to the root of the application.&lt;/p&gt;
&lt;h3&gt;UseSkinPath&lt;/h3&gt;
&lt;p&gt;Boolean value that, if set to true, will make the reference to the Stylesheet relative to the path of the skin.&lt;/p&gt;
&lt;p&gt;Cambrian tastes really good, don't you think?&lt;/p&gt;
&lt;h3&gt;Further resources&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://blog.theaccidentalgeek.com/post/2008/08/25/DNN-Tips-amp3b-Tricks-3-Conditional-Stylesheets.aspx"&gt;DNN Tips &amp;amp; Tricks #3: Conditional Stylesheets&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=uigja3M5z8A:ZBVAYDcVn2E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=uigja3M5z8A:ZBVAYDcVn2E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=uigja3M5z8A:ZBVAYDcVn2E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=uigja3M5z8A:ZBVAYDcVn2E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=uigja3M5z8A:ZBVAYDcVn2E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=uigja3M5z8A:ZBVAYDcVn2E:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/uigja3M5z8A" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Sun, 21 Sep 2008 09:08:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:62</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/62/the-styles-skin-object.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/29/add-flash-content-to-your-skins-the-right-way.aspx#Comments</comments> 
    <slash:comments>25</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=29</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=29&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 Add Flash content to your skins, the right way</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/mwe2zNbA4vQ/add-flash-content-to-your-skins-the-right-way.aspx</link> 
    <description>&lt;p&gt;&lt;span class="b"&gt;February 5, 2009&lt;br /&gt;Update:&lt;/span&gt; This post is pretty old... there are many tools out there now that you can use to embed Flash content on your skin or web pages.&lt;br /&gt;Check this out: &lt;a href="http://flowplayer.org/tools/flashembed.html"&gt;http://flowplayer.org/tools/flashembed.html&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;I'll show you how to put Flash content in your DotNetNuke skins using the &lt;a href="http://blog.deconcept.com/swfobject/"&gt;SWFObject&lt;/a&gt;. In case you're wondering, here is why this method is much better than the default Adobe's embed method:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; You get rid of the "&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=%2522Click%2520to%2520activate%2520and%2520use%2520this%2520control%2522"&gt;Click to activate and use this control&lt;/a&gt;" message in IE&lt;/li&gt; &lt;li&gt;Can be used in valid HTML and XHTML documents&lt;/li&gt; &lt;li&gt;It's search engine friendly&lt;/li&gt; &lt;li&gt;The script also includes Flash plug-in detection and&lt;/li&gt; &lt;li&gt;Support for the &lt;a href="http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75"&gt;Adobe Flash Player Express Install&lt;/a&gt; feature&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Before you try to use the SWFObject in your skins, it is recommended to read all details about it at the &lt;a href="http://blog.deconcept.com/swfobject/"&gt;official page&lt;/a&gt; as I'm not going to explain how it works or describe its features further. What we are going to accomplish is to import the SWFObject in our skins so we can then use its methods to embed Flash content either in our skin's code or in our DNN pages that use this skin.&lt;/p&gt; &lt;p&gt;Here is the simple process:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Download the SWFObject which comes in a zip file with examples of usage in static pages&lt;/li&gt; &lt;li&gt;Extract the zip to find the swfobject.js and put it in your skin's folder&lt;/li&gt; &lt;li&gt;Put the following line of code at the top of your skin's code:&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;If you're using ascx files:&lt;/p&gt; &lt;pre&gt;&amp;lt;script type="text/javascript" src="&amp;lt;%= SkinPath %&amp;gt;swfobject.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt; &lt;p&gt;If you're using html files:&lt;/p&gt; &lt;pre&gt;&amp;lt;script type="text/javascript" src="swfobject.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt; &lt;p&gt;That's it! Now every time you want to put Flash content either in your skin's code or directly in your pages (using a Text/Html module) you can use the following code:&lt;/p&gt; &lt;pre&gt; &amp;lt;div id="myFlash1"&amp;gt;This text is replaced by the Flash movie.&amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt; var so = new SWFObject("myFlash1.swf", "myFlashTitle", "400", "200", "8", "#336699");&lt;br /&gt; so.write("myFlash1");&lt;br /&gt; &amp;lt;/script&amp;gt; &lt;/pre&gt; &lt;p&gt;You need to put a second one?&lt;/p&gt; &lt;pre&gt; &amp;lt;div id="myFlash2"&amp;gt;This text is replaced by the Flash movie.&amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt; var so = new SWFObject("myFlash2.swf", "myFlashTitle", "400", "200", "8", "#336699");&lt;br /&gt; so.write("myFlash2");&lt;br /&gt; &amp;lt;/script&amp;gt; &lt;/pre&gt; &lt;p&gt;Easy eh?&lt;/p&gt; &lt;p&gt;Here is a quick explanation of the above code:&lt;/p&gt; &lt;p&gt;First we create a DIV with a unique ID that will be used by the script to put in it our Flash content. If our guest's browser doesn't support JavaScript or Flash, the text we put in this DIV will be visible.&lt;/p&gt; &lt;pre&gt;&amp;lt;div id="UniqueID"&amp;gt;This text is replaced by the Flash movie.&amp;lt;/div&amp;gt;&lt;/pre&gt; &lt;p&gt;Then we create a new instance of the SWFObject using JavaScript.&lt;/p&gt; &lt;pre&gt;var so = new SWFObject("myFlashFileName.swf", "myFlashTitle", "Width", "Height", "RequiredFlashPlayer", "BackgroundColorHEX");&lt;/pre&gt; &lt;p&gt;And then we replace the text in the DIV with our Flash content.&lt;/p&gt; &lt;pre&gt;so.write("UniqueID");&lt;/pre&gt; &lt;p&gt;Of course there are much more you can do with the SWFObject. You can add more parameters, you can pass variables to your SWF, either directly or from the URL string... but I won't say more. Further details on the usage of the SWFObject you can find on the &lt;a href="http://blog.deconcept.com/swfobject/"&gt;official page&lt;/a&gt;.&lt;/p&gt; &lt;h3&gt;Pay attention on using the right path!&lt;/h3&gt; &lt;p&gt;When you use the SWFObject to embed Flash content in your skin's code and your Flash file is in your skin's folder then your path should look like the following:&lt;/p&gt; &lt;pre&gt;&amp;lt;%= SkinPath %&amp;gt;myFlashFileName.swf&lt;/pre&gt; &lt;p&gt;so when you're creating a new instance of the SWFObject the code should look like this:&lt;/p&gt; &lt;pre&gt;var so = new SWFObject("&amp;lt;%= SkinPath %&amp;gt;myFlash1.swf", "myFlashTitle", "400", "200", "8", "#336699");&lt;/pre&gt; &lt;p class="bold"&gt;The above applies to both HTML and ASCX skins! DotNetNuke won't fix the path in HTML skins when it's part of JavaScript code.&lt;/p&gt; &lt;p&gt;But when you want to put Flash content directly in your pages using a Text/Html module, then you should use absolute path. So if your Flash file is in the root of your portal, the code should look like this (considering that your portal's ID is 0):&lt;/p&gt; &lt;pre&gt;var so = new SWFObject("http://www.yoursite.com/portals/0/myFlash1.swf", "myFlashTitle", "400", "200", "8", "#336699");&lt;/pre&gt; &lt;p&gt;That's all you need to know to use the SWFObject with your DNN skins. I think it's painless but still if you know other solutions, I'd love to hear about them so let me know in the comments!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=mwe2zNbA4vQ:hZzvc3z7614:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=mwe2zNbA4vQ:hZzvc3z7614:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=mwe2zNbA4vQ:hZzvc3z7614:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=mwe2zNbA4vQ:hZzvc3z7614:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=mwe2zNbA4vQ:hZzvc3z7614:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=mwe2zNbA4vQ:hZzvc3z7614:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/mwe2zNbA4vQ" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Sat, 07 Apr 2007 09:16:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:29</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/29/add-flash-content-to-your-skins-the-right-way.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/24/two-words-before-skinning.aspx#Comments</comments> 
    <slash:comments>8</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=24</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=24&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 Two words before skinning</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/0Oep5zHpHVw/two-words-before-skinning.aspx</link> 
    <description>&lt;p&gt;I don't want to disappoint or discourage anyone but I feel that I have to point out some simple facts about DotNetNuke skinning.&lt;/p&gt;&lt;p&gt;To put it straightaway, when we talk about DotNetNuke skinning we talk about a pretty simple process with a pretty quick learning curve. But the point is that a DNN skin is not just some special tags and content panes. To design and then develop a DNN skin means that you know at least the basics about web design. How to produce optimized graphics using photoshop or any other graphics software, how to code an HTML page and how to apply CSS styles, is essential knowledge someone who wants to create a skin must have. Even further, when someone wants to produce professional and high quality skins, have to be a professional and skilled web designer.&lt;/p&gt;&lt;p&gt;So, before start thinking about how to create your own custom DotNetNuke skin, be sure to ask yourself about your web design skills. If you don't do that, you'll end up thinking that a custom DotNetNuke skin is a very painful process which is not true... not at all.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=0Oep5zHpHVw:I4unR6vA0yE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=0Oep5zHpHVw:I4unR6vA0yE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=0Oep5zHpHVw:I4unR6vA0yE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=0Oep5zHpHVw:I4unR6vA0yE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=0Oep5zHpHVw:I4unR6vA0yE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=0Oep5zHpHVw:I4unR6vA0yE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/0Oep5zHpHVw" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Sat, 24 Feb 2007 08:29:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:24</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/24/two-words-before-skinning.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/23/dotnetnuke-links-and-clicks.aspx#Comments</comments> 
    <slash:comments>11</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=23</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=23&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 DotNetNuke Links and Clicks</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/ojdCOB-s-6E/dotnetnuke-links-and-clicks.aspx</link> 
    <description>&lt;p&gt;Let's see an idea of tracking any link on a DotNetNuke web site and then producing a report with the most popular links. For this task we'll use two DotNetNuke modules that come out of the box, the &lt;a href="http://www.dotnetnuke.com/DotNetNukeProjects/ModuleLinks/tabid/857/Default.aspx"&gt;Links&lt;/a&gt; and the &lt;a href="http://www.dotnetnuke.com/DotNetNukeProjects/ModuleReports/tabid/970/Default.aspx"&gt;Reports&lt;/a&gt;. To help you decide if it worths your time, I'll show you how to produce reports like the ones I have put on &lt;a href="http://www.thinkofdesign.com/Main/Reports/tabid/80/Default.aspx"&gt;this page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As you probably already know, the Links module has advanced tracking features which means that when you add a new link, there are options to &amp;quot;Track Number Of Times This Link Is Clicked? &amp;quot; and &amp;quot;Log The User, Date, And Time For Every Link Click?&amp;quot;. When we check those checkboxes, we enable the tracking for this specific link. We'll use only the first option for now, as we just want to check the popularity of our links and the number of clicks is just fine for that.&lt;/p&gt;
&lt;p&gt;What you probably haven't thought is that using this feature, we can track any inline link on our web site. All we have to do is to place a hidden Links module somewhere, add a link and copy the tracking URL which automatically will be produced by DotNetNuke. Then we can use this URL instead of the real one to put the link in our text. I have to say thanks to &lt;a href="http://seablick.com/"&gt;Tom Kraak&lt;/a&gt; who introduced this simple but valuable idea to me.&lt;/p&gt;
&lt;p&gt;I'll add here a link to Cathal's &lt;a href="http://www.thinkofdesign.com/LinkClick.aspx?link=http%3a%2f%2fwww.cathal.co.uk%2fDefault.aspx%3ftabid%3d80&amp;amp;tabid=36&amp;amp;mid=345"&gt;Free DotNetNuke Modules&lt;/a&gt;. Mouse over this link and see what appears in your browser's status bar. This exactly is what we're talking about.&lt;/p&gt;
&lt;p&gt;The Cathal's URL is:&lt;/p&gt;
&lt;pre name="code" class="html:nocontrols:nogutter"&gt;http://www.cathal.co.uk/Default.aspx?tabid=80&lt;/pre&gt;
&lt;p&gt;but the URL I use is:&lt;/p&gt;
&lt;pre name="code" class="html:nocontrols:nogutter"&gt;http://www.thinkofdesign.com/LinkClick.aspx?link=http://www.cathal.co.uk/Default.aspx?tabid=80&lt;/pre&gt;
&lt;p&gt;which gives me the ability to track the clicks on this link.&lt;/p&gt;
&lt;p&gt;Let's do it together and see how it works.&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Place a Links module somewhere in your web site and set its visibility to &amp;quot;Page Editors Only&amp;quot; to prevent your guests from viewing this module.&lt;/li&gt;
	&lt;li&gt;Add a link to thinkofdesign.com (oops! just kidding), add any link and check the &amp;quot;Track Number Of Times This Link Is Clicked?&amp;quot; checkbox. I consider you know how to add a link. Click Update.&lt;/li&gt;
	&lt;li&gt;Right click the link you just created and &amp;quot;Copy Link Location&amp;quot; in FireFox or &amp;quot;Copy Shortcut&amp;quot; in IE.&lt;/li&gt;
	&lt;li&gt;From now on you can use this URL every time you want to link to this web site in your text. And you can do that as many times as you want and anywhere in your web site.&lt;/li&gt;
	&lt;li&gt;After the first click, a simple report will appear at the bottom area of this link's edit page. Just click the small pencil on the left of the link and you'll find it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;But what if we have lot of links we want to track? And how can we find out which one is the most popular? We have to browse each one's edit page and write down the clicks. No! There is a much better way to do it and here comes the second part of our task. As we initially said, we'll use the Reports module here.&lt;/p&gt;
&lt;p&gt;With the Reports module we can pretty easily bring to light any data from our database. All we need is some &lt;a href="http://en.wikipedia.org/wiki/Sql"&gt;SQL&lt;/a&gt; magic to write the query that will open the door. I am totally newbie with SQL queries but with a little &lt;a href="http://w3schools.com/sql/default.asp"&gt;education&lt;/a&gt; I was able to accomplish this simple task.&lt;/p&gt;
&lt;p&gt;Before we use the Reports module we'll need the ModuleId of the Links module with the links we're tracking. To find that, we just browse the Module Settings and we find it in the URL (it's /ModuleId/&lt;strong&gt;345&lt;/strong&gt;/ in my case).&lt;/p&gt;
&lt;p&gt;So, we place a Reports module somewhere in our web site (I created a new Reports page) and then we browse this Module's Settings. At the bottom of this page we find the Report Settings and then the Data Source Settings and the field where we can put our query. Here comes the query I used:&lt;/p&gt;
&lt;pre name="code" class="html:nocontrols:nogutter"&gt;SELECT Url,CreatedDate,Clicks FROM UrlTracking WHERE ModuleID='345' ORDER BY Clicks DESC&lt;/pre&gt;
&lt;p&gt;This will produce a report with the Url of the links we're tracking, the date we created them and of course the clicks. The most popular link will go first. In the Display Settings we choose the Grid Visualizer. We can also Enable Paging and Sorting or Show a Header above each column with the results. We click Update. Cool eh?&lt;/p&gt;
&lt;p&gt;There are cases where the Url of the link we're tracking isn't so descriptive and we need the title of our link. But the titles of our links exist in another table of our database so here the query becomes a little... longer (I spent half an hour to write this):&lt;/p&gt;
&lt;pre name="code" class="html:nocontrols:nogutter"&gt;SELECT Links.Title,UrlTracking.CreatedDate,UrlTracking.Clicks FROM Links,UrlTracking WHERE UrlTracking.Url=Links.Url AND UrlTracking.ModuleID='345' ORDER BY UrlTracking.Clicks DESC&lt;/pre&gt;
&lt;p&gt;This will produce the same report but instead of the Url, we can see the titles of the links we're tracking.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.thinkofdesign.com/Main/Reports/tabid/80/Default.aspx"&gt;Check my Reports page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That was all about it! What do you think?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ojdCOB-s-6E:F2wmRYm8aY0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ojdCOB-s-6E:F2wmRYm8aY0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ojdCOB-s-6E:F2wmRYm8aY0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=ojdCOB-s-6E:F2wmRYm8aY0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ojdCOB-s-6E:F2wmRYm8aY0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ojdCOB-s-6E:F2wmRYm8aY0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/ojdCOB-s-6E" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Mon, 19 Feb 2007 13:37:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:23</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/23/dotnetnuke-links-and-clicks.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/19/toms-new-dnn-blog-on-seablickcom.aspx#Comments</comments> 
    <slash:comments>2</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=19</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=19&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 Tom's new DNN blog on Seablick.com</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/G7tYXamjYcQ/toms-new-dnn-blog-on-seablickcom.aspx</link> 
    <description>&lt;p&gt;I'm so excited to tell you about this one! Tom Kraak, the owner of Seablick.com, is my business partner in NY but also a very good guy and a very good friend. During the last year, many times we discussed about the creation of his own blog. He knows DotNetNuke inside out and he's so involved with DotNetNuke business, I was sure that his blog will be a good resource for many people.&lt;/p&gt;&lt;p&gt;Tom's DNN blog is here, coming along with a new optimized skin for Seablick.com ;) Still with several things in beta but I'm sure you'll find it interesting!&lt;/p&gt;&lt;p&gt;Did I mention that he's a proficient consultant and a SEO freak?&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Check it out: &lt;a href="http://seablick.com/"&gt;Seablick.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=G7tYXamjYcQ:BEFhtXNhEQA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=G7tYXamjYcQ:BEFhtXNhEQA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=G7tYXamjYcQ:BEFhtXNhEQA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=G7tYXamjYcQ:BEFhtXNhEQA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=G7tYXamjYcQ:BEFhtXNhEQA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=G7tYXamjYcQ:BEFhtXNhEQA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/G7tYXamjYcQ" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Fri, 12 Jan 2007 18:38:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:19</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/19/toms-new-dnn-blog-on-seablickcom.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/17/quotsubscribe-to-rssquot-browser-support.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=17</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=17&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 &amp;quot;Subscribe to RSS&amp;quot; browser support</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/9EyNeNGlo60/quotsubscribe-to-rssquot-browser-support.aspx</link> 
    <description>&lt;p&gt;I'm sure you have noticed that when you're browsing some web sites, an orange RSS icon appears on the right of the Firefox address bar or in the new Internet Explorer's 7 icon toolbar. This icon makes the subscription to this web site's feeds quick and easy. We just have to click the icon once to find out the available feeds and subscribe to the ones we want.&lt;/p&gt;
&lt;p&gt;You can add this feature to your web site just by adding the line below in the head section of your default.aspx page:&lt;/p&gt;
&lt;pre name="code" class="html:nocontrols:nogutter"&gt;
	&amp;lt;link rel=&amp;quot;alternate&amp;quot; type= &amp;quot;application/rss+xml&amp;quot; title=&amp;quot;Feed Title&amp;quot; href=&amp;quot;Feed URL&amp;quot; /&amp;gt;
&lt;/pre&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Feed title&lt;/strong&gt; can be anything. Just use a title that describes your feed better, for example RSS: Articles or RSS: Forums.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Feed URL&lt;/strong&gt; is the absolute path of your feed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Of course you can add more than one feed by just adding one more code line with a new title and URL.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=9EyNeNGlo60:BI3BQwS2AYI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=9EyNeNGlo60:BI3BQwS2AYI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=9EyNeNGlo60:BI3BQwS2AYI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=9EyNeNGlo60:BI3BQwS2AYI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=9EyNeNGlo60:BI3BQwS2AYI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=9EyNeNGlo60:BI3BQwS2AYI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/9EyNeNGlo60" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Tue, 21 Nov 2006 11:09:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:17</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/17/quotsubscribe-to-rssquot-browser-support.aspx</feedburner:origLink></item>
<item>
    <comments>http://www.thinkofdesign.com/blog/id/4/pagetitle-the-hidden-dnn-skin-object.aspx#Comments</comments> 
    <slash:comments>9</slash:comments> 
    <wfw:commentRss>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=65&amp;ModuleID=369&amp;ArticleID=4</wfw:commentRss> 
    <trackback:ping>http://www.thinkofdesign.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=4&amp;PortalID=0&amp;TabID=65</trackback:ping> 
    <title>Blog.10.0 PageTitle: The hidden DNN skin object</title> 
    <link>http://feedproxy.google.com/~r/thinkofdesign-blog/~3/ulHWej-u9fg/pagetitle-the-hidden-dnn-skin-object.aspx</link> 
    <description>&lt;p&gt;Follow these steps to activate the PageTitle: The hidden DNN skin object skin object for your HTML skins.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Log in to your DNN site with your host account. &lt;/li&gt; &lt;li&gt;Browse the Host &amp;gt; Module Definitions page. &lt;/li&gt; &lt;li&gt;In the Modules list find the [Skin Objects] label (usually the first in the list). &lt;/li&gt; &lt;li&gt;Click the small pencil on the left of the [Skin Objects] label. &lt;/li&gt; &lt;li&gt;You are at the Edit Module Definitions page. Scroll that page to find the list with the controls. &lt;/li&gt; &lt;li&gt;Click the Add Control link to open the Edit Module Control page. &lt;/li&gt; &lt;li&gt;In the Key field write PAGETITLE. &lt;/li&gt; &lt;li&gt;In the Source field there is a drop down menu where you have to find the &lt;strong&gt;DesktopModules/PageTitle/PageTitle.ascx&lt;/strong&gt;. &lt;/li&gt; &lt;li&gt;Click update at the bottom of that page.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;The PageTitle: The hidden DNN skin object Skin Object is now available to your DNN site and you can use it in your skins. You can also include a CssClass property with it to apply CSS styles.&lt;/p&gt; &lt;h3&gt;The PageTitle skin object in DNN 4.x&lt;/h3&gt; &lt;p&gt;DotNetNuke 4.x does not include the PageTitle skin object out of the box. So if you want to make it work in your DNN 4.x web site, you have to either install the skin object from DNN 3.x or put the files manually.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;To install the skin object from DNN 3.x, find the zip file which is located in the &lt;strong&gt;(DNN 3.x root)\DesktopModules\PageTitle&lt;/strong&gt; folder, and then install it at your DNN 4.x web site following the common module installation process.&lt;/li&gt; &lt;li&gt;To put the files manually, you have to copy two files from DNN 3.x to DNN 4.x. These are the &lt;strong&gt;~\DesktopModules\PageTitle\PageTitle.ascx&lt;/strong&gt; and the &lt;strong&gt;~\bin\DotnetNuke.Modules.PageTitle.dll&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt; &lt;h3&gt;The PageTitle in ASCX skins&lt;/h3&gt; &lt;p&gt;In ASCX skins you don't need a skin object. Use the code below to get the title of the page you're browsing:&lt;/p&gt; &lt;pre name="code" class="html:nocontrols:nogutter"&gt; &amp;lt;%=PortalSettings.ActiveTab.TabName %&amp;gt; &lt;/pre&gt; &lt;p&gt;I found this tip among others on Snapsis forums. Check this thread: &lt;a href="http://www.snapsis.com/DNN-Tips-And-Tricks/tabid/560/forumid/12/postid/5003/view/topic/DotNetNuke-Tokens--Some-tricks-for-getting.aspx"&gt;DotNetNuke Tokens: Some tricks for getting more than SkinPath in your skin&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ulHWej-u9fg:XO3SgyoZ67g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ulHWej-u9fg:XO3SgyoZ67g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ulHWej-u9fg:XO3SgyoZ67g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?i=ulHWej-u9fg:XO3SgyoZ67g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ulHWej-u9fg:XO3SgyoZ67g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/thinkofdesign-blog?a=ulHWej-u9fg:XO3SgyoZ67g:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/thinkofdesign-blog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/thinkofdesign-blog/~4/ulHWej-u9fg" height="1" width="1"/&gt;</description> 
    <dc:creator>Vasilis Terzopoulos</dc:creator> 
    <pubDate>Wed, 08 Nov 2006 09:05:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:4</guid> 
    
<feedburner:origLink>http://www.thinkofdesign.com/blog/id/4/pagetitle-the-hidden-dnn-skin-object.aspx</feedburner:origLink></item>

    <lastBuildDate>Wed, 04 Nov 2009 00:00:00 PST</lastBuildDate></channel>
</rss>
