mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
rss feed added
This commit is contained in:
@@ -54,6 +54,7 @@ class LibraryItem extends Model implements HasMedia, Sortable, Feedable
|
|||||||
])
|
])
|
||||||
->where('news', true)
|
->where('news', true)
|
||||||
->where('approved', true)
|
->where('approved', true)
|
||||||
|
->orderByDesc('created_at')
|
||||||
->get();
|
->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,7 +149,7 @@ class LibraryItem extends Model implements HasMedia, Sortable, Feedable
|
|||||||
public function toFeedItem(): FeedItem
|
public function toFeedItem(): FeedItem
|
||||||
{
|
{
|
||||||
return FeedItem::create()
|
return FeedItem::create()
|
||||||
->id('news/'. $this->slug)
|
->id('news/'.$this->slug)
|
||||||
->title($this->name)
|
->title($this->name)
|
||||||
->enclosure($this->getFirstMediaUrl('main'))
|
->enclosure($this->getFirstMediaUrl('main'))
|
||||||
->enclosureLength($this->getFirstMedia('main')->size)
|
->enclosureLength($this->getFirstMedia('main')->size)
|
||||||
|
|||||||
@@ -32,12 +32,12 @@ return [
|
|||||||
/*
|
/*
|
||||||
* The format of the feed. Acceptable values are 'rss', 'atom', or 'json'.
|
* The format of the feed. Acceptable values are 'rss', 'atom', or 'json'.
|
||||||
*/
|
*/
|
||||||
'format' => 'atom',
|
'format' => 'rss',
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The view that will render the feed.
|
* The view that will render the feed.
|
||||||
*/
|
*/
|
||||||
'view' => 'feed::atom',
|
'view' => 'feed::rss',
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The mime type to be used in the <link> tag. Set to an empty string to automatically
|
* The mime type to be used in the <link> tag. Set to an empty string to automatically
|
||||||
|
|||||||
48
resources/views/vendor/feed/atom.blade.php
vendored
Normal file
48
resources/views/vendor/feed/atom.blade.php
vendored
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?=
|
||||||
|
/* Using an echo tag here so the `<? ... ?>` won't get parsed as short tags */
|
||||||
|
'<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL
|
||||||
|
?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="{{ $meta['language'] }}">
|
||||||
|
@foreach($meta as $key => $metaItem)
|
||||||
|
@if($key === 'link')
|
||||||
|
<{{ $key }} href="{{ url($metaItem) }}" rel="self"></{{ $key }}>
|
||||||
|
@elseif($key === 'title')
|
||||||
|
<{{ $key }}>{!! \Spatie\Feed\Helpers\Cdata::out($metaItem) !!}</{{ $key }}>
|
||||||
|
@elseif($key === 'description')
|
||||||
|
<subtitle>{{ $metaItem }}</subtitle>
|
||||||
|
@elseif($key === 'language')
|
||||||
|
@elseif($key === 'image')
|
||||||
|
@if(!empty($metaItem))
|
||||||
|
<logo>{!! $metaItem !!}</logo>
|
||||||
|
@else
|
||||||
|
|
||||||
|
@endif
|
||||||
|
@else
|
||||||
|
<{{ $key }}>{{ $metaItem }}</{{ $key }}>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
@foreach($items as $item)
|
||||||
|
<entry>
|
||||||
|
<title>{!! \Spatie\Feed\Helpers\Cdata::out($item->title) !!}</title>
|
||||||
|
<link rel="alternate" href="{{ url($item->link) }}" />
|
||||||
|
<id>{{ url($item->id) }}</id>
|
||||||
|
<author>
|
||||||
|
<name>{!! \Spatie\Feed\Helpers\Cdata::out($item->authorName) !!}</name>
|
||||||
|
@if(!empty($item->authorEmail))
|
||||||
|
<email>{!! \Spatie\Feed\Helpers\Cdata::out($item->authorEmail) !!}</email>
|
||||||
|
|
||||||
|
@endif
|
||||||
|
</author>
|
||||||
|
<summary type="html">
|
||||||
|
{!! \Spatie\Feed\Helpers\Cdata::out($item->summary) !!}
|
||||||
|
</summary>
|
||||||
|
@if($item->__isset('enclosure'))
|
||||||
|
<link href="{{ url($item->enclosure) }}" length="{{ $item->enclosureLength }}" type="{{ $item->enclosureType }}" />
|
||||||
|
@endif
|
||||||
|
@foreach($item->category as $category)
|
||||||
|
<category term="{{ $category }}" />
|
||||||
|
@endforeach
|
||||||
|
<updated>{{ $item->timestamp() }}</updated>
|
||||||
|
</entry>
|
||||||
|
@endforeach
|
||||||
|
</feed>
|
||||||
46
resources/views/vendor/feed/json.blade.php
vendored
Normal file
46
resources/views/vendor/feed/json.blade.php
vendored
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"version": "https://jsonfeed.org/version/1.1",
|
||||||
|
"title": "{{ $meta['title'] }}",
|
||||||
|
@if(!empty($meta['description']))
|
||||||
|
"description": "{{ $meta['description'] }}",
|
||||||
|
@endif
|
||||||
|
"home_page_url": "{{ config('app.url') }}",
|
||||||
|
"feed_url": "{{ url($meta['link']) }}",
|
||||||
|
"language": "{{ $meta['language'] }}",
|
||||||
|
@if(!empty($meta['image']))
|
||||||
|
"icon": "{{ $meta['image'] }}",
|
||||||
|
@endif
|
||||||
|
"authors": [@foreach($items->unique('authorName') as $item){
|
||||||
|
"name": "{{ $item->authorName }}"
|
||||||
|
}@if(! $loop->last),@endif
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
],
|
||||||
|
"items": [@foreach($items as $item){
|
||||||
|
"id": "{{ url($item->id) }}",
|
||||||
|
"title": {!! json_encode($item->title) !!},
|
||||||
|
"url": "{{ url($item->link) }}",
|
||||||
|
"content_html": {!! json_encode($item->summary) !!},
|
||||||
|
"summary": {!! json_encode($item->summary) !!},
|
||||||
|
"date_published": "{{ $item->timestamp() }}",
|
||||||
|
"date_modified": "{{ $item->timestamp() }}",
|
||||||
|
"authors": [{ "name": {!! json_encode($item->authorName) !!} }],
|
||||||
|
@if($item->__isset('image'))
|
||||||
|
"image": "{{ url($item->image) }}",
|
||||||
|
@endif
|
||||||
|
@if($item->__isset('enclosure'))
|
||||||
|
"attachments": [
|
||||||
|
{
|
||||||
|
"url": "{{ url($item->enclosure) }}",
|
||||||
|
"mime_type": "{{ $item->enclosureType }}",
|
||||||
|
"size_in_bytes": {{ $item->enclosureLength }}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
@endif
|
||||||
|
"tags": [ {!! implode(',', array_map(fn($c) => '"'.$c.'"', $item->category)) !!} ]
|
||||||
|
}@if(! $loop->last),
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
3
resources/views/vendor/feed/links.blade.php
vendored
Normal file
3
resources/views/vendor/feed/links.blade.php
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
@foreach($feeds as $name => $feed)
|
||||||
|
<link rel="alternate" type="{{ \Spatie\Feed\Helpers\FeedContentType::forLink($feed['format'] ?? 'atom') }}" href="{{ route("feeds.{$name}") }}" title="{{ $feed['title'] }}">
|
||||||
|
@endforeach
|
||||||
39
resources/views/vendor/feed/rss.blade.php
vendored
Normal file
39
resources/views/vendor/feed/rss.blade.php
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<?=
|
||||||
|
/* Using an echo tag here so the `<? ... ?>` won't get parsed as short tags */
|
||||||
|
'<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL
|
||||||
|
?>
|
||||||
|
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
|
||||||
|
<channel>
|
||||||
|
<atom:link href="{{ url($meta['link']) }}" rel="self" type="application/rss+xml"/>
|
||||||
|
<title>{!! \Spatie\Feed\Helpers\Cdata::out($meta['title'] ) !!}</title>
|
||||||
|
<link>{!! \Spatie\Feed\Helpers\Cdata::out(url($meta['link']) ) !!}</link>
|
||||||
|
@if(!empty($meta['image']))
|
||||||
|
<image>
|
||||||
|
<url>{{ $meta['image'] }}</url>
|
||||||
|
<title>{!! \Spatie\Feed\Helpers\Cdata::out($meta['title'] ) !!}</title>
|
||||||
|
<link>{!! \Spatie\Feed\Helpers\Cdata::out(url($meta['link']) ) !!}</link>
|
||||||
|
</image>
|
||||||
|
@endif
|
||||||
|
<description>{!! \Spatie\Feed\Helpers\Cdata::out($meta['description'] ) !!}</description>
|
||||||
|
<language>{{ $meta['language'] }}</language>
|
||||||
|
<pubDate>{{ $meta['updated'] }}</pubDate>
|
||||||
|
|
||||||
|
@foreach($items as $item)
|
||||||
|
<item>
|
||||||
|
<title>{!! \Spatie\Feed\Helpers\Cdata::out($item->title) !!}</title>
|
||||||
|
<link>{{ url($item->link) }}</link>
|
||||||
|
<description>{!! \Spatie\Feed\Helpers\Cdata::out($item->summary) !!}</description>
|
||||||
|
<author>{!! \Spatie\Feed\Helpers\Cdata::out($item->authorName.(empty($item->authorEmail)?'':' <'.$item->authorEmail.'>')) !!}</author>
|
||||||
|
<guid isPermaLink="true">{{ url($item->id) }}</guid>
|
||||||
|
<pubDate>{{ $item->timestamp() }}</pubDate>
|
||||||
|
@if($item->__isset('enclosure'))
|
||||||
|
<enclosure url="{{ url($item->enclosure) }}" length="{{ url($item->enclosureLength) }}" type="{{ $item->enclosureType }}"/>
|
||||||
|
<media:content url="{{ url($item->enclosure) }}" medium="image" type="{{ $item->enclosureType }}"/>
|
||||||
|
@endif
|
||||||
|
@foreach($item->category as $category)
|
||||||
|
<category>{{ $category }}</category>
|
||||||
|
@endforeach
|
||||||
|
</item>
|
||||||
|
@endforeach
|
||||||
|
</channel>
|
||||||
|
</rss>
|
||||||
Reference in New Issue
Block a user