In the interest of possibly helping anyone else set up their podcast, here’s how Arena podcasting is configured in our environment (You can click on any of these images to see them full size).

Feed Formats

Before setting up any channels, you’ll need to setup your available feed formats in the Arena Administration area.

PodcastFeedFormats

XSLT

Arena uses an rss.aspx page to convert an XML version of your feed into a standardized RSS feed format.  This gives you control over fine-tuning how the RSS content is generated (You can view both the XML and the XSLT from the Channel overview page).  Here’s a copy of our xslt/rss/default.xslt file.  This XSLT file creates an RSS feed that is also compliant with iTunes requirements…

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">

    <xsl:output method="xml" version="1.0" encoding="utf-8"/>

    <xsl:template match="/">
        <rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
            <xsl:for-each select="/*">
                <channel>
                    <title>
                        <xsl:value-of select="@author"/>: <xsl:value-of select="@title"/> (<xsl:value-of select="format/@title"/>)
                    </title>
                    <link>
                        <xsl:value-of select="@link"/>
                    </link>
                    <language>
                        <xsl:value-of select="@language"/>
                    </language>
                    <copyright>
                        <xsl:value-of select="@copyright"/>
                    </copyright>
                    <description>
                        <xsl:value-of select="description"/>
                    </description>
                    <itunes:subtitle>
                        <xsl:value-of select="@subtitle"/>
                    </itunes:subtitle>
                    <itunes:author>
                        <xsl:value-of select="@author"/>
                    </itunes:author>
                    <itunes:summary>
                        <xsl:value-of select="description"/>
                    </itunes:summary>
                    <itunes:owner>
                        <itunes:name>
                            <xsl:value-of select="@contactname"/>
                        </itunes:name>
                        <itunes:email>
                            <xsl:value-of select="@contactemail"/>
                        </itunes:email>
                    </itunes:owner>
                    <itunes:image>
                        <xsl:attribute name="href">
                            <xsl:value-of select="@imageurl"/>
                        </xsl:attribute>
                    </itunes:image>
                    <xsl:for-each select="category">
                        <xsl:call-template name="categorynode"></xsl:call-template>
                    </xsl:for-each>
                    <xsl:for-each select="items/item">
                        <xsl:call-template name="itemnode"></xsl:call-template>
                    </xsl:for-each>
                </channel>
            </xsl:for-each>
        </rss>
    </xsl:template>

    <xsl:template name="categorynode">
        <itunes:category>
            <xsl:attribute name="text">
                <xsl:value-of select="@text"/>
            </xsl:attribute>
            <xsl:for-each select="category">
                <xsl:call-template name="categorynode"></xsl:call-template>
            </xsl:for-each>
        </itunes:category>
    </xsl:template>

    <xsl:template name="itemnode">
        <item>
            <title>
                <xsl:choose>
                    <xsl:when test="topic">
                        <xsl:choose>
                            <xsl:when test="topic/@title = @title">
                                <xsl:value-of select="@title"/>
                            </xsl:when>
                            <xsl:otherwise>
                                <xsl:value-of select="topic/@title"/>: <xsl:value-of select="@title"/>
                            </xsl:otherwise>
                        </xsl:choose>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:value-of select="@title"/>
                    </xsl:otherwise>
                </xsl:choose>
            </title>
            <pubDate>
                <xsl:value-of select="@publish"/>
            </pubDate>
            <itunes:author>
                <xsl:value-of select="/channel/@author"/>
            </itunes:author>
            <xsl:if test="@imageurl">
                <itunes:image>
                    <xsl:attribute name="href">
                        <xsl:value-of select="@imageurl"/>
                    </xsl:attribute>
                </itunes:image>
            </xsl:if>
            <itunes:summary>
                <xsl:value-of select="description"/>
            </itunes:summary>
            <description>
                <xsl:value-of select="description"/>
            </description>

            <link>
                <xsl:value-of select="@link"/>
            </link>
            <enclosure>
                <xsl:attribute name="url">
                    <xsl:value-of select="enclosure/@url"/>
                </xsl:attribute>
                <xsl:attribute name="length">
                    <xsl:value-of select="enclosure/@duration"/>
                </xsl:attribute>
                <xsl:attribute name="type">
                    <xsl:value-of select="enclosure/@mimetype"/>
                </xsl:attribute>
            </enclosure>
            <itunes:keywords>
                <xsl:value-of select="keywords"/>
            </itunes:keywords>
            <xsl:if test="enclosure/@time">
                <itunes:duration>
                    <xsl:value-of select="enclosure/@time"/>
                </itunes:duration>
            </xsl:if>
        </item>
    </xsl:template>

</xsl:stylesheet>

 

Arena Page Setup

Here’s how our Podcasting administrative pages are setup in Arena

PodcastAdministrationSetup

The first “Podcast Channels” page simply redirects to the second (not sure why, but that’s how it is). 

The second “Podcast Channels” page has the ChannelList module.

The “Channel Details” page has the ChannelDetail and ChannelTabs (Show Filter setting is set to True) modules.

The “Item Details” page has the ItemDetail module.  
Note: I think there’s a bug with the smart page setting on this module.  It’s looking for a page above this one with the ItemList module which does not exist.  Our setting points to the Channel Detail page above it.

The “Topic Details” page has the TopicDetail module.

Note: Similar bug here.  It has a smart page setting that looks for a page above this one with the TopicList module.  Our setting again points to the Channel Detail page above it.

The “Topic Item Detail” page has the ItemDetail module.

Note: Same bug.  Our Item List Page setting points to the Topic Details page above this page.

       

Public Pages

Here’s how the public pages on our website are configured…

PodcastWebsiteSetup

The “Online Message” page in addition to several html modules has the ChannelView module.

Settings Used: Heading = blank, Image Size = 452, Item View Page = “Message” page below this one, SubHeading = blank, Topic View Page = “Series” page below this one, Use Topic View = True.

The “Series” page has the TopicView module.

Settings Used: Heading = blank, Image Size = 452, Item View Detail Page = “Message” page below this one, SubHeading = blank.

The “Message” page has the ItemFlashViewer module.

Settings Used: Email Message = blank, Flash Format = Flash Video, Image Size = blank, Object Height = 260, Object Width = 320.

 

Channel Overview…

Here’s an example of how our contemporary service podcast is setup.

PodcastChannelView

You’ll notice that we use FeedBurner as our external feed so that when people subscribe to the feed they’ll see the FeedBurner url instead of our internal url.  We’ve then configured the Feedburner acount to point back to the actual arena url(http://arena.ccvonline.com/Arena/rss.aspx?c=1&f=1).

 

Details…

PodcastChannelDetails

 

Enclosure Types…

PodcastChannelEnclosures

 

Topic…

PodcastTopicView

 

Item Overview…

PodcastItemView

 

Item Details…

PodcastTopicDetails

You’ll notice that we use various third-party hosting providers to store our actual video and audio content to cut down on bandwidth to our internal servers.  podcasts.ccvonline.com actually points to an Amazon S3 server.

 

Hope that helps, comment for any questions.

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>