pixelopen / sulu-newsbundle
管理Sulu的新闻
Requires
- php: ^8.0
- pixelopen/sulu-blockbundle: ^2.5 || ^2.6
- sulu/sulu: ^2.4
- symfony/config: ^5.0 || ^6.0
- symfony/dependency-injection: ^5.0 || ^6.0
- symfony/framework-bundle: ^5.0 || ^6.0
- symfony/http-foundation: ^5.0 || ^6.0
- symfony/http-kernel: ^5.0 || ^6.0
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-20 15:45:55 UTC
README
展示
这是一个用于管理您网站新闻的Sulu扩展包。
需求
- PHP >= 8.0
- Sulu >= 2.4.*
- Symfony >= 5.4
- Composer
功能
- 新闻列表视图(智能内容)
- 不使用Elasticsearch
- 路由
- 预览
- SULU媒体包含
- 内容块(标题、编辑器、图片、引用)
- 活动日志
- 回收站
- 自动化
- SEO
安装
安装扩展包
执行以下 composer 命令以将扩展包添加到项目的依赖项中
composer require pixelopen/sulu-newsbundle --with-all-dependencies
启用扩展包
通过将其添加到项目 config/bundles.php
文件中注册的扩展包列表中来启用扩展包
return [ /* ... */ Pixel\NewsBundle\NewsBundle::class => ['all' => true], ];
更新模式
bin/console do:sch:up --force
扩展包配置
在 routes_admin.yaml
中定义管理员API路由
news.news_api: type: rest prefix: /admin/api resource: pixel_news.news_route_controller name_prefix: news.
用法
添加/编辑新闻
转到管理界面中的“新闻”部分。然后,点击“添加”。填写您所需的字段。
以下是字段列表
- 标题(必填)
- URL(必填,将根据标题自动填写)
- 发布日期(手动填写)
- 封面
- 类别(必填)
- 内容
“内容”字段是块内容类型。不同类型的块来自 Sulu Block Bundle
完成编辑后,点击“保存”
您的新闻在网站上尚未可见。为了使其可见,请点击“发布?”。现在它应该对访客可见。
要编辑新闻,只需点击您要编辑的新闻左侧的铅笔。
类别
如您在前一节中看到的那样,新闻需要一个类别。这些类别需要以非常特定的方式进行创建
- 您 必须 创建一个根类别,其键 必须 命名为“news”
- 然后,在此根类别下,创建所有您需要的新闻类别
删除/恢复画廊
有两种方法可以删除新闻
- 勾选您要删除的所有新闻,然后点击“删除”
- 转到新闻的详细信息(请参阅“添加/编辑新闻”部分)并点击“删除”。
在这两种情况下,新闻将被放入回收站。
要访问回收站,转到“设置”并点击“回收站”。要恢复新闻,请点击左侧的时钟。确认恢复。您将被重定向到您恢复的新闻的详细信息。
要永久删除新闻,请勾选您要删除的所有新闻并点击“删除”。
设置
此扩展包附带设置。只有一个设置,它是默认图像的配置。要访问扩展包设置,请转到“设置 > 新闻管理”。
Twig扩展
有几个twig函数可以帮助您在网站上使用新闻和设置
get_latest_news(limit, local):返回最新新闻。它接受两个参数
- limit:表示要显示的最新新闻数量。如果没有提供限制,默认值为3
- locale:检索新闻的locale。如果没有提供locale,默认值为'fr'
使用示例
<div class="w-full flex flex-row gap-6 justify-between"> {% set news = get_latest_news(4, app.request.locale) %} {% for new in news %} <div class="containerAvis bg-white rounded-xl p-6 w-1/4"> <a href="{{ sulu_content_path(new.routePath) }}" class="no-underline"> {% if new.cover.id is defined %} {% set cover = sulu_resolve_media(new.cover.id, 'fr') %} <img src="{{ cover.thumbnails["991x"] }}" alt="{{ new.title }}" class="w-full h-40 object-cover object-center bg-black mt-0 mb-4"> {% endif %} <h3 class="block text-center text-base font-bold">{{ new.title }}</h3> <p class="block text-center">{{ new.publishedAt|date("d/m/Y") }} {#- {{ new.category }} #}</p> </a> </div> {% endfor %} </div>
get_latest_news_html(limit, locale):与get_latest_news相同,但它渲染一个视图。它接受两个参数
- limit:表示要显示的最新新闻数量。如果没有提供限制,默认值为3
- locale:检索新闻的locale。如果没有提供locale,默认值为'fr'
使用示例
<div> {{ get_latest_news_html(4, app.request.locale) }} </div>
news_settings():返回组件的设置。不需要任何参数。
使用示例
{% set newsSettings = news_settings() %} {% if news.cover is not empty %} {% set cover = sulu_resolve_media(news.cover.id, 'en' %} <img src="{{ cover.thumbnails['991x'] }}" alt="{{ news.name }}"> {% else %} {% set default = sulu_resolve_media(newsSettings.defaultImage.id, 'en' %} <img src="{{ default.thumbnails['991x'] }}" alt="Default news image"> {% endif %}
贡献
您可以为此组件做出贡献。您必须做的事情是尊重我们实施的编码标准。您可以在ecs.php
文件中找到它们。