keyteq / cloudinary-metaindexer

将cloudinary账户索引到mongodb数据库中,并根据选定的标签在前端列表中使其可用。

安装: 69

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 12

分支: 1

公开问题: 0

类型:ezplatform-bundle

2.0 2020-01-30 13:18 UTC

This package is auto-updated.

Last update: 2024-09-03 11:01:06 UTC


README

将cloudinary账户索引到mongodb数据库中,并根据配置的标签和/或文件夹前缀使它可用以在前端列表项目。

这样您可以创建自定义的eZ页面,只列出带有特定标签或位于cloudinary文件夹内的cloudinary资源。

先决条件

  • eZ Publish 5.4+ 或 eZ Platform
  • PHP 5.5+
  • 服务器上已安装mongodb。并且已安装mongodb的php扩展。
  • 一个cloudinary账户。
  • 一个cron作业(见下面的文档)

安装

步骤1

如果您正在运行PHP 5.6+ / 7+,您没有安装旧的ext-mongo。Doctrine ODM 1.X需要ext-mongo,但在此情况下有一个适配器可用。

您需要为mongodb安装此适配器(PHP 5.6+ / 7+)

注意:如果您有低于PHP 5.6的PHP版本 - 跳过此步骤

composer require alcaeus/mongo-php-adapter --ignore-platform-reqs

步骤2

安装此捆绑包(稳定版)

composer require keyteq/cloudinary-metaindexer

步骤3 - (如果您之前已安装doctrine mongodb)

如果您已在项目中配置doctrine mongodb以执行某些其他任务,您需要禁用cloudianry meta indexer捆绑包的自动映射。只有当您将auto_mapping设置为true时才需要这样做。

更新您的config.yml中配置的doctrine_mongodb


doctrine_mongodb:
    #... 
    document_managers:
        default:
            auto_mapping: true
            mappings:
                # Disable mapping for cloudinary meta indexer bundle, it has its own document manager.
                KeyteqCloudinaryMetaIndexerBundle:
                    mapping: false

配置

将捆绑包添加到app内核中以启用捆绑包(app/AppKernel.php

new Keyteq\Bundle\CloudinaryMetaIndexer\KeyteqCloudinaryMetaIndexerBundle(),

添加所需配置(请记住将数据库更改为您项目的唯一名称)。

app/config/config.yml

keyteq_cloudinary_meta_indexer:
    cloudinary_api_key: '%cloudinary_key%'
    cloudinary_api_secret: '%cloudinary_secret%'
    cloudinary_cloud_name: '%cloudinary_cloud_name%'
    mongodb:
        server: ~
        database: 'myproject_cloudinary' # Change this to something unique for the project.

并更新parameters.yml.dist

parameters:
    # ....
    cloudinary_cloud_name: ~
    cloudinary_key: ~
    cloudinary_secret: ~
    # ....

运行composer install以添加您的秘密参数。

composer install

测试cloudinary同步

php app/console keyteq:cloudinary-meta-indexer:sync

设置cron作业以运行mongodb同步

设置一个新的cron作业以运行同步作业

注意:根据您的eZ publish/platform版本,将app/console更改为ezpublish/console

以下cron规范将在每晚2:30运行此作业。

30 2 * * * php app/console keyteq:cloudinary-meta-indexer:sync

导入cloudinary_page捆绑包

请参见此捆绑包中的Resources/ezcontentclass/文件夹,其中包含一个可以通过ez管理界面导入的内容类。该捆绑包包含一个名为cloudinary_page的新内容类,并包含一些必需的属性。您可以在导入内容类后自由添加自己的属性。

导入后,创建该特定类的新内容对象。

通过pagelayout扩展模板(对于eZ 5.x必需)

步骤1是eZ 5.X必需的。

步骤1

默认情况下,我们不扩展任何模板,因此布局将为空(没有头部和尾部)。

  • 注意:对于5.x使用控制器keyteq.cloudinary_meta_indexer.controller.full_view:viewCloudinaryPageLocation
  • 注意:如果您正在使用布局,请使用"ngcontent_view"而不是content_view。

yourezbundleconfig.yml中创建自己的覆盖

ezpublish:
    system:
        MY_FRONTPAGE_SITEACCESS:
            content_view:
                full:
                    cloudinary_page:
                        controller: keyteq.cloudinary_meta_indexer.controller.full_view:viewCloudinaryPage
                        template: "AcmeDemoBundle:content/full:cloudinary_page.html.twig"
                        match:
                            Identifier\ContentType: cloudinary_page

控制器自定义

更改默认每页12个资源。

为siteaccess YOUR_FRONT_SITEACCESS设置每页24个资源。

parameters.yml

parameters:
    ezsettings.YOUR_FRONT_SITEACCESS.cloudinary_meta_indexer.resources_per_page: 24

步骤2

并为cloudinary_page创建一个新的模板:AcmeDemoBundle/Resources/views/full/cloudinary_page.html.twig

{% extends "AcmeDemoBundle::pagelayout.html.twig" %}

{% block content %}
    {% include 'KeyteqCloudinaryMetaIndexerBundle:content/full:cloudinary_page.html.twig' %}
{% endblock %}

如果您不想使用内置的标记,您可以在 KeyteqCloudinaryMetaIndexerBundle:content/full:cloudinary_page.html.twig 模板中查看,并使用模板的某些部分来满足您的需求。