manuxi/sulu-news-bundle

Say hello to Sulu news!

Installs: 117

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 1

Forks: 1

Open Issues: 0

Type:symfony-bundle


README

php workflow symfony workflow GitHub license GitHub license

I made this bundle to have the possibility to manage news in my projects without the dependency to elasticsearch. Sadly it's still not fixed in the SuluArticleBundle :(

This bundle contains

  • Several filters for News Content Type
  • Link Provider
  • Sitemap Provider
  • Handler for Trash Items
  • Handler for Automation
  • Possibility to assign a contact as author
  • Twig Extension for resolving news / get a list of news
  • Events for displaying Activities and more...

The news and their meta information is translatable.

It contains an example twig template.

Please feel comfortable submitting feature requests. This bundle is still in development. Use at own risk 🤞🏻

👩🏻‍🏭 Installation

Install the package with:

composer require manuxi/sulu-news-bundle

If you're not using Symfony Flex, you'll also need to add the bundle in your config/bundles.php file:

return [
    //...
    Manuxi\SuluNewsBundle\SuluNewsBundle::class => ['all' => true],
];

Please add the following to your routes_admin.yaml:

SuluNewsBundle:
    resource: '@SuluNewsBundle/Resources/config/routes_admin.yml'

Last but not least the schema of the database needs to be updated.

Some tables will be created (prefixed with app_):
news, news_translation, news_seo, news_excerpt (plus some ManyToMany relation tables).

See the needed queries with

php bin/console doctrine:schema:update --dump-sql

Update the schema by executing

php bin/console doctrine:schema:update --force

Make sure you only process the bundles schema updates!

🎣 Usage

First: Grant permissions for news. After page reload you should see the news item in the navigation. Start to create news. Use smart_content property type to show a list of news, e.g.:

<property name="newslist" type="smart_content">
    <meta>
        <title lang="en">News</title>
        <title lang="de">News</title>
    </meta>
    <params>
        <param name="provider" value="news"/>
        <param name="max_per_page" value="5"/>
        <param name="page_parameter" value="page"/>
    </params>
</property>

Example of the corresponding twig template for the news list:

{% for news in newslist %}
    <div class="col">
        <h2>
            {{ news.title }}
        </h2>
        <h3>
            {{ news.subtitle }}
        </h3>
        <p>
            {{ news.created|format_datetime('full', 'none', locale=app.request.getLocale()) }}
        </p>
        <p>
            {{ news.summary|raw }}
        </p>
        <p>
            <a class="btn btn-primary" href="{{ news.routePath }}" role="button">
                {{ "Read more..."|trans }} <i class="fa fa-angle-double-right"></i>
            </a>
        </p>
    </div>
{% endfor %}

Since the seo and excerpt tabs are available in the news editor, meta information can be provided like it's done as usual when rendering your pages.

🧶 Configuration

There exists no configuration yet. I'm on it :)

👩‍🍳 Contributing

For the sake of simplicity this extension was kept small. Please feel comfortable submitting issues or pull requests. As always I'd be glad to get your feedback to improve the extension :).