keyteq / cloudinary-metaindexer
将cloudinary账户索引到mongodb数据库中,并根据选定的标签在前端列表中使其可用。
Requires
- cloudinary/cloudinary_php: ^1.0
- doctrine/mongodb-odm: ^1.0
- doctrine/orm: ~2.4
- ezsystems/ezpublish-kernel: *
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 模板中查看,并使用模板的某些部分来满足您的需求。