An open API service indexing awesome lists of open source software.

https://github.com/pixel-open/sulu-newsbundle

A Sulu bundle to manage the news of your website.
https://github.com/pixel-open/sulu-newsbundle

sulu-bundle

Last synced: 11 months ago
JSON representation

A Sulu bundle to manage the news of your website.

Awesome Lists containing this project

README

          

# Sulu news bundle

[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%208.0-green)](https://php.net/)
[![Minimum Sulu Version](https://img.shields.io/badge/sulu-%3E%3D%202.6-green)](https://symfony.com)
[![GitHub release](https://img.shields.io/github/v/release/Pixel-Open/sulu-newsbundle)](https://github.com/Pixel-Open/sulu-newsbundle/releases)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Pixel-Open_sulu-newsbundle&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Pixel-Open_sulu-newsbundle)

## Presentation
A Sulu bundle to manage the news of your website.

## Requirements

* Symfony >= 5.4
* Composer

## Features
* List view of News (smart content)
* Without elasticsearch
* Routing
* Preview
* SULU Media include
* Content Blocks (Title,Editor,Image,Quote)
* Activity Log
* Trash
* Automation
* SEO

## Installation

### Install the bundle

Execute the following [composer](https://getcomposer.org/) command to add the bundle to the dependencies of your
project:

```bash
composer require pixelopen/sulu-newsbundle
```

### Enable the bundle

Enable the bundle by adding it to the list of registered bundles in the `config/bundles.php` file of your project:

```php
return [
/* ... */
Pixel\NewsBundle\NewsBundle::class => ['all' => true],
];
```

### Update schema
```shell script
bin/console do:sch:up --force
```

## Bundle Config

Define the Admin Api Route in `routes_admin.yaml`
```yaml
news.news_api:
type: rest
prefix: /admin/api
resource: pixel_news.news_route_controller
name_prefix: news.
```

## Use
### Add/Edit a news
Go to the "News" section in the administration interface. Then, click on "Add".
Fill the fields that are needed for your use.

Here is the list of the fields:
* Title (mandatory)
* URL (mandatory and filled automatically according to the title)
* Published at (manually filled)
* Cover
* Category (mandatory)
* Content

The "Content" field is a block content type. The different type of block come from the [Sulu Block Bundle](https://github.com/Pixel-Developpement/sulu-block-bundle)

Once you finished, click on "Save"

Your news is not visible on the website yet. In order to do that, click on "Publish?". It should be now visible for visitors.

To edit a news, simply click on the pencil at the left of the news you wish to edit.

### Categories
As you may have seen in the previous section, a news needs a category. These categories need to be created in a very specific way:
* You **must** create a root category which **must** have its key named "news"
* Then, under this root category, you create all the news categories you need

### Remove/Restore a gallery

There are two ways to remove a news:
* Check every news you want to remove and then click on "Delete"
* Go to the detail of a news (see the "Add/Edit a news" section) and click on "Delete".

In both cases, the news will be put in the trash.

To access the trash, go to the "Settings" and click on "Trash".
To restore a news, click on the clock at the left. Confirm the restore. You will be redirected to the detail of the news you restored.

To remove permanently a news, check all the news you want to remove and click on "Delete".

## Settings

This bundle comes with settings. There is only one setting, it's the configuration of a default image.
To access the bundle settings, go to "Settings > News management".

## Twig extension
There are several twig functions in order to help you use the news and settings on your website:

**get_latest_news(limit, local)**: returns the latest news. It takes two parameters:
* limit: represents the number of the latest news to display. If no limit is provided, the default value is 3
* locale: the locale in which the news should be retrieved. If no local is provided, the default value is 'fr'

Example of use:
```twig


```

**get_latest_news_html(limit, locale)**: same as get_latest_news but it renders a view instead. It takes two parameters:
* limit: represents the number of the latest news to display. If no limit is provided, the default value is 3
* locale: the locale in which the news should be retrieved. If no local is provided, the default value is 'fr'

Example of use:
```twig


{{ get_latest_news_html(4, app.request.locale) }}

```

**news_settings()**: returns the settings of the bundle. No parameters are required.

Example of use:

```twig
{% set newsSettings = news_settings() %}
{% if news.cover is not empty %}
{% set cover = sulu_resolve_media(news.cover.id, 'en' %}
{{ news.name }}
{% else %}
{% set default = sulu_resolve_media(newsSettings.defaultImage.id, 'en' %}
Default news image
{% endif %}
```

## Contributing
You can contribute to this bundle. The only thing you must do is respect the coding standard we implement.
You can find them in the `ecs.php` file.