Shows Modul: Shows Übersicht?

Ich versuche zu verstehen, wie das Konzept der „Shows“ funktioniert.

Jede Episode kann einer Show zugeordnet sein. Aber nur eine. Jede Show hat ihren eigenen Feed (bzw. mehrere: m4a, mp3, usw.)

Kann ich:

  1. auf den Episoden Seiten den Namen der Show mit anzeigen?
  2. Den Namen der Show mit in den Episoden Titel nehmen?
  3. alle Episoden zu einer Show anzeigen?
  4. alle Feeds zu einer Show anzeigen?
  5. eine (halb)automatisch generierte Seite pro Show haben? Samt subscribe Button?
  6. eine Liste aller Shows haben
  7. auf die Show Episoden Episoden Template zugreifen?

Inzwischen habe ich https://docs.podlove.org/podlove-publisher/guides/podcast-network.html#option-2-shows-module gefunden - aber das scheint mein Theme nicht her zu geben: http://audio.antiberg.de/show/tt/

[Edit: hatte es mit einer Show ohne veröffentlichte Episode getestet. http://audio.antiberg.de/show/talk/ hat tatsächlich „automatisch“ eine brauchbare Show-Übersicht. http://f.foxel.org/Screen-Shot-2021-03-04-20-38-18.76-1614886709.png ]

Das geht über die Podlove-Templates. Nicht ganz leicht zu verstehen, aber sehr mächtig. Grundlagen stehen auf joernschaar.de in einem inzwischen achtteiligen Tutorial. Zu den Shows steht da noch nicht viel, aber wenn Du die Grundlagen verstehst, kannst Du das leicht bauen. Bei Fragen helfe ich gern weiter.

3 Like

Hey Danke! Da hast Du dir ja echt Arbeit mit dem Tutorial gemacht. Mit {% for show in podcast.shows %} und der Dokumentation unter https://docs.podlove.org/podlove-publisher/reference/template-tags komme ich schon deutlich weiter.

1 Like

Ich hab im Wesentlichen meinen eigenen Lernfortschritt dokumentiert. :innocent: Viel. Paß mit den Templates.

1 Like

Ein Template, dass die Shows auflistet sieht dann etwa so aus:

{% for show in podcast.shows %} 
    <div  class="podcast_show" id="{{show.slug}}">
        <h3>
            <div class="subscribe">
            {{ podcast.subscribeButton({format: 'cover',  style: 'outline', size: 'small', show: show.slug}) }}
            </div>
            <a href="/show/{{show.slug}}/">{{ show.title}}</a>
        </h3>

        <div class="subtitle">{{show.subtitle}}</div>
        <p class="summary">{{show.summary}}</p>

        {% set episodes = [] %}
        {% for episode in podcast.episodes %}
            {% if episode.show.slug == show.slug %}
                {% set episodes = episodes|merge([episode]) %}
            {% endif %}
        {% endfor %}
        {% if episodes|length > 0 %}
            <table>
                <thead>
                    <th></th>
                    <th>Date</th>
                    <th>Title</th>
                    <th>Duration</th>
                </thead>
                <tbody>
                    {% for episode in episodes %}
                        <tr class="podcast_archive_element">
                            <td class="thumbnail">
                                {{ episode.image({fallback: true}).html({width: 64, height: 64}) }}
                            </td>
                            <td class="date">
                                <span class="release_date">
                                    {{ episode.publicationDate }}
                                </span>
                            </td>
                            <td class="title">
                                <a href="{{ episode.url }}">
                                    <strong>{{ episode.title }}</strong><br>
                                    {{ episode.subtitle }}
                                </a>
                            </td>
                            <td class="duration">
                                {% set duration = episode.duration %}
                                {{ duration.hours }}:{{ duration.minutes|padLeft("0",2) }}:{{ duration.seconds|padLeft("0",2) }}
                            </td>
                        </tr>
                    {% endfor %}
                </tbody>
            </table>
        {% else %}
            <p><em>Noch keine Folge erschienen.</em></p>
        {% endif %}
    </div>
{% endfor %}

{# Der Code für die Tabelle stammt aus include '@core/shortcode/episode-list.twig' #}
<style type="text/css">
.podcast_show {
    padding-bottom: 3em;
}
.podcast_show h3 a {
    color: #222;
    text-decoration: none;
}
.podcast_show .subscribe {
    float: right;
}
.podcast_show .subtitle {
    font-weight: bold;
}
.podcast_show .summary {
    font-size: 100%;
}
.podcast_archive_element .thumbnail {
    width: 64px;
    padding: 5px !important;
}
.podcast_archive_element td {
    vertical-align: top;
}
</style>

Dann eine Seite erstellen, in der man das entsprechne Template nutzt: [podlove-template template="Shows"].

Das Ergebnis ist dann unter http://audio.antiberg.de/show/ zu bewundern.

3 Like

vielen lieben dank @mdornseif