News scrolling banner (animated) for Silverstripe CMS. The extension can automatically fetch tech news/posts by using Y Combinator's Hacker News API.
Working demo on iloveunix.com at site's footer.
- Compatible with Silverstripe versions 4 and 5
- Bootstrap (optional, e.g. silverstripe-bootloader)
composer require minimalic/silverstripe-hackernews
Rebuild DB by appending dev/build?flush=all
to your website's URL or by using shell:
vendor/bin/sake dev/build "flush=all"
Fetch first news by appending dev/tasks/FetchHackerNewsTask
to your website's URL or by using shell (from website's root directory):
vendor/bin/sake dev/tasks/FetchHackerNewsTask
or (if sake is not available):
php vendor/silverstripe/framework/cli-script.php dev/tasks/FetchHackerNewsTask
Bootstrap (CSS library) isn't required, but this extension is using Bootstrap's markups for templating.
Own Bootstrap implementation can be used as well as extensions like silverstripe-bootloader
:
composer require minimalic/silverstripe-bootloader
Simply put $HackerNews
inside your template, for example Footer.ss
:
<div class="container-fluid g-0 f-hacker-news">
$HackerNews
</div>
Configuration options (e.g. app/_config/hackernews.yml
):
minimalic\HackerNews\Tasks\FetchHackerNewsTask:
posts_to_load: 40
email_message_enable: true
email_message_nightly: true
email_message_from:
server@domain.com: 'Server Name'
email_message_to:
my.mail@domain.com: 'My Name'
minimalic\HackerNews\HackerNewsBanner:
banner_speed: 60
Set up cronjob (shell, as web user):
crontab -e
To fetch news every 6 hours starting at 0:42 local server time type in:
42 */6 * * * ~/mywebsite/vendor/bin/sake dev/tasks/FetchHackerNewsTask
(the ~/mywebsite/
is a relative path from your web user starting point - you can also use an absolute path like /var/www/mywebsite/
)
To compile SCSS to CSS install sass
, nodemon
and postcss
by using npm
and run (developing only, shell):
cd vendor/minimalic/silverstripe-hackernews/client/src/
npm run-script watch
See License
Copyright (c) 2024, minimalic.com - Sebastian Finke All rights reserved.