问题标签 [tridion-content-delivery]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
656 浏览

tridion - 在 Tridion 2011 SP1 中实现存储扩展时未定义命名的 bean

我正在尝试使用以下示例实现存储扩展,

http://www.sdltridionworld.com/articles/sdltridion2011/tutorials/extending-content-delivery-storage-sdltridion-2011-1.aspx

我创建了与上面示例中使用的名称相同的 DAO 和其他文件。创建这些文件后,我使用 eclipse 构建我的代码并将其转换为 .JAR 文件名 (cd_search_Indexer)。

1) 我将我的 jar 文件复制到我的演示文稿 tridion_home/lib 文件夹

2) 我创建了名为 search_dao_bundle.xml 的捆绑 xml,如下所示,并放置在我的 cd_storage_xml 所在的相同位置,即 tridion_home/config。

3) 之后,我将捆绑条目添加到我的 cd_storage_conf.xml 中,如下所示:

在下面我创建了我的新存储类型,如下所示:

在那之后,我在下面做了项目映射

4)我重新启动了我的部署服务,在我的核心日志中出现了以下异常

编辑:以下是我创建 DAO、实体和接口类所遵循的步骤。

1) 打开日食 helios

2) 创建了一个名为“Storage Extension”的项目

3) 创建新文件夹“lib”并添加所有 tridion_home/lib

4)创建新包“com.tridion.storage.extension.search”

5) 添加了我的 DAO、Entity 和 Interface java 类

6) 在参考中添加了“lib”罐子

7)构建转换为jar的包(cd_storage_indexer)

8) 将构建 jar 复制到 tridion_home/lib

9)按照米海的建议休息。

0 投票
3 回答
329 浏览

tridion - 无法查看发布队列中的项目

我们正在使用 Tridion 2011 SP1。我们有一个用户可以访问 2 个出版物,他可以发布这些出版物的页面,但是当他检查发布队列中的已发布项目时,他看不到发布队列中的任何项目(尽管他发布了项目数量)。谁能告诉我们出了什么问题?

附上运输日志的一小部分。

0 投票
3 回答
611 浏览

tridion - 在 Tridion 2011 SP1 的存储扩展中未调用 DAO 类中的已实现方法

我实现的方法没有从 DAO 类中调用。

我创建了名为 search_dao_bundle.xml 的捆绑 xml,如下所示,并放置在相同的位置,即我的 cd_storage_xml 所在的 tridion_home/config。

之后,我将捆绑条目添加到我的 cd_storage_conf.xml 中,如下所示:

在下面我创建了我的新存储类型,如下所示:

在那之后,我在下面做了项目映射

我重新启动了我的部署服务在我的核心日志中出现了以下异常

下面是我从 Mihai Code 中获取的示例 DAO 类:

我能够看到我的构造函数被调用,即我在我的核心文件日志中获取这些日志

但是我没有得到任何用其他方法写的日志,比如方法public PublishAction store log.debug("JPAPublishActionDAO store");

log.debug("JPAPublishActionDAO findByPrimaryKey");

log.debug("JPAPublishActionDAO 更新");

可能是什么原因,我有与给出的示例代码相同的名称(PublishAction.java)和接口类(PublishActionDAO.java)的实体类。

0 投票
2 回答
289 浏览

tridion - 发布失败

我们正在使用 Tridion 2011 SP1。某些页面/组件在发布时出现以下错误。

组件/页面在 stage 下失败Preparing Deployment,我们应该如何修复它?

0 投票
3 回答
715 浏览

tridion - 无法持久化数据实体,提交事务时出错

我成功地编写了部署程序扩展和存储扩展。

以下是我从核心日志中获取的日志,显示所有内容都已完美加载!!

现在,当我尝试将数据存储在我的表中时,我收到“发生异常 com.tridion.broker.StorageException:无法持久化数据实体,提交事务时出错,提交事务时出错”

这是我的实体类的任何问题还是我缺少的东西。

编辑:在 logback xml 中启用记录器级别“ON”之后。

我在核心文件中遇到以下异常:

谢谢

0 投票
1 回答
74 浏览

tridion - 仅在门户服务器中管理页面时的 SiteEdit 自定义

页面仅在 Portal 服务器中进行管理。业务用户在创建新内容时将没有上下文。组件表示是通过 Web 服务直接检索的,而不是通过 SDL Tridion 页面。

请让我们知道如果页面仅通过 portlet 在门户服务器中管理,我们如何自定义?

0 投票
2 回答
258 浏览

tridion - Tridion 和 REL:在页面的 PublishedUrl 属性中更新页面文件名

我们有一个页面的 url 需要本地化/翻译的要求。我们现有的机制依赖于实际发布的 url 来通过 oData 检索页面。用一个简化的例子来澄清一下:我们在前端有一些逻辑,它接受请求 url(它没有文件扩展名,附加一个 .html 扩展名,例如:

现在变成

然后,该逻辑使用查询从 oData 中提取页面

我们有更多的逻辑来解析这个 SEO 友好的 url 并获取 MVC 控制器函数参数和其他诸如此类的东西,但这与这里无关。

我们的要求是我们不能对页面进行本地化以为其提供翻译后的 url,因为这意味着整个页面无法在父 Web 出版物中进行管理。

为了获得通向页面文件名的本地化路径,我们只需本地化 SG。困难在于页面文件名。在页面的元数据上,我们有一个链接的“可本地化元数据”组件,其中包含一个用于提供本地化页面文件名的字段。

我们要做的是在发布/部署过程中更新页面的 URL 属性,以使用来自此链接元数据组件的本地化页面文件名更新页面的已发布 url(假设我们在任何阶段都可以访问本地化文件名字段的值在开始发布到承诺部署之间)。

我已经尝试通过自定义解析器执行此操作,但是,在此级别上,CM 已建立 page.PublishedUrl 属性并且无法覆盖。所以更新 page.FileName 属性并没有做任何有用的事情。

我还尝试将 Broker DB 中 PAGE 表中的 URL 列直接更新为不同的名称,似乎一切都在继续工作,包括动态链接和取消发布页面。显然写一个存储扩展或者一个部署扩展来通过jdbc直接更新数据库是不可接受的。

以下是我正在考虑的选项: 1) 尝试部署程序扩展并使用 Tridion API 更新 url 属性 2) 尝试编写自定义渲染器来执行 url 替换逻辑而不实际更新代理中的 url。我不赞成这样做,因为每次都需要请求时间处理。

我的问题是:更新页面 url 属性的最合适方法是什么?使用 Tridion API 编写自定义部署程序来更新 URL 属性是否会像 Resolver 那样导致我陷入死胡同?

0 投票
1 回答
622 浏览

tridion - 如何在取消发布 Tridion 页面时使用 Hibernate 从表中获取主键 ID 以更新表

我已经成功地使用我的自定义部署程序填充了我的存储扩展表,现在我可以看到如果用户发布任何页面,我的记录就会完美无缺。

现在我要处理Unpublishing部分,所以我写了Custom page undeployer,请看下面的示例代码:

在上面的代码中,您可以看到我正在尝试更新我的新存储扩展“PublishAction”,但是当我尝试从要修改的记录的表中获取 ID 时,我总是将 ID 设为 0,因为我不是能够从表中获取 ID。

请建议在我的 DAO 中需要实现什么来从表中获取需要更新的记录的 ID。

谢谢。

0 投票
2 回答
231 浏览

tridion - 如何在 tridion 2011 中编写部署程序扩展的组件取消部署和二进制取消部署功能

我只是想编写小型部署程序扩展,如果用户从 tridion 发布/取消发布页面/组件/二进制文件,它的记录将使用存储扩展进入特定表。

存储扩展部分已经完成!!

好吧,我可以轻松编写PageDeploy/ComponentDeploy 和 BinaryDeploy,因为我在 com.tridion.deployer.modules 中有这些类。

我也可以轻松编写自定义页面取消部署程序类,但是很难编写组件,二进制取消部署,因为我们没有任何类。

请建议是否可能,如果是的话,请指出我编写类或方法来获取它。

谢谢。

0 投票
1 回答
364 浏览

java - 如何在组件表示存储扩展中获取组件对象

我正在尝试在 Tridion 2011 中编写存储扩展,我将在其中扩展JPAComponentPresentationDAO和实现ComponentPresentationDAO.

在上面的示例代码中,我想使用itemToCreate.getComponentId()获取组件 ID 的位置创建 Component 对象,这样我就可以将一些有用的细节传递给我的实体类,该实体类会将这些数据存储在我的数据库表中。