pixelopen/sulu-newsbundle

管理Sulu的新闻

2.6.0 2024-06-14 14:22 UTC

This package is not auto-updated.

Last update: 2024-09-20 15:45:55 UTC


README

GitHub release (with filter) Dependency

展示

这是一个用于管理您网站新闻的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文件中找到它们。