标签: experience-manager

在XPM编辑中禁用单击事件(Razor)

我一直试图解决这个问题已经有一段时间了,但是我无法想出一些正常的东西.

你看,在我们的网站上有很多可点击的图像或div,提供了覆盖整个图像的组件链接.如果激活XPM并尝试选择组件,它将触发其组件链接单击事件,并将您引导至正确的页面.

我一直在寻找一种快速的解决方案,只有在编辑时才能禁用此行为,到目前为止,我已经提出了几个解决方法,坦率地说这不是我正在寻找的.

例如,您可以使用奇妙的Razor Mediator条件(IsSiteEditEnabled),但是,如果您当前的发布/页面/服务器已启用进行站点编辑,则此函数始终解析为true.这意味着如果您插入特定于模板的代码,例如

@if(!IsSiteEditEnabled){
<a tridion:href="#"> other code, ending in closing of </a>...
}
Run Code Online (Sandbox Code Playgroud)

未激活站点编辑(XPM)时,不会输出链接,但可以激活.简而言之,就是暂存服务器.

除非没有其他选项,否则我将需要一个Live发布服务器来使代码工作,但这会造成编辑人员认为登台服务器上的链接被破坏的问题.

我觉得这里有一些我不知道的东西.我相信像你这样的人可能遇到过这个问题:)

这是其中一个块

<article class="block-2x2 banner">
    <tcdl:ComponentField name="component_link"></tcdl:ComponentField>
    @if(!IsSiteEditEnabled){
        @:<a tridion:href="@Fields.component_link">
        }
        <div class="image-container">
            <tcdl:ComponentField name="image"><img src="@Fields.image" alt="@Fields.image.altText"></tcdl:ComponentField>
        </div>
        <div class="hgroup">
            <h4 class="primary-title">@RenderComponentField("header", 0)</h4>
            <h5 class="secondary-title">@RenderComponentField("title", 0)</h5>
        </div>
    @if(!IsSiteEditEnabled){</a>}
</article>
Run Code Online (Sandbox Code Playgroud)

tridion tridion-2011 experience-manager

9
推荐指数
1
解决办法
381
查看次数

403来自Adobe Experience Manager OAuth 2令牌端点的响应

我正在使用Postman从vanilla AEM安装中测试OAuth 2.

在此输入图像描述

在我授予访问权限后,邮递员可以从/ oauth/authorize成功获取授权码:

在此输入图像描述

但是当它尝试使用代码从/ oauth/token获取令牌时,它会收到以下响应:

HTTP错误:403访问/ oauth/token时出现问题.原因:禁止由Jetty提供支持://

在Fiddler中,它正在对/ oauth/token执行POST,并在正文中使用以下名称/值:

client_id:来自/libs/granite/oauth/content/client.html的客户端ID

client_secret:来自/libs/granite/oauth/content/client.html的客户端密钥

redirect_uri:https: //www.getpostman.com/oauth2/callback

grant_type:authorization_code

code:从先前的oauth/authorize请求返回的代码

我错过了什么吗?

adobe oauth experience-manager aem postman

6
推荐指数
1
解决办法
1131
查看次数

XPM / UI:基于具有复制组件的页面类型创建新页面

我这次关于XPM的问题相对简单。这是关于创建页面类型的,编辑者可以使用该页面类型作为其新网站页面的基础。定义页面类型时,可以使用现有页面将其启用为示例页面,包括其组件。您可以复制这些组件,以使编辑者可以自由编辑这些组件,而又不会破坏使用这些组件的现有页面。在SDL Live内容文档中,他们解释了以下内容:

将设置从“包括此组件演示文稿”更改为“包括包含此组件副本的组件演示文稿”。如果在此页面上的多个组件演示文稿中使用此组件,则保存该页面会使所有这些组件演示文稿具有最后为这些组件演示文稿中的任何一个配置的设置。出现许多新控件。

这意味着每当编辑者单击XPM中的“新页面”时,此页面类型均可用,并且使用用户特定的前缀复制其中定义的组件。您可以在定义为页面类型本身的页面中定义此内容,方法是单击组件演示选项卡,然后单击组件并选择页面类型设置。请注意以下几点:

如您所见,内容的副本是在050-Web-Global中创建的,在我们的蓝图中,该出版物是错误的出版物。但是,在弹出窗口中,您无法选择正确的内容位置,只能选择页面类型所在的位置。

我已经使用特定于UI的蓝图上下文设置对此进行了测试,您在其中定义在何处创建内容和页面。但是,在创建新页面时,将组件复制到050-web-global内部;错误的出版物。在我们进行培训时,我想像这样动态创建的组件可能会将CMS的内容放在错误的位置,从而使CMS无法用于其他出版物。是否有这种行为的原因,如果是,是否有使其正常工作的方法?

tridion tridion-2011 experience-manager

4
推荐指数
1
解决办法
315
查看次数

使用Tridion UI/XM添加链接的组件

我们目前正在实施一个支持新UI/XM(体验管理器)的新站点.目前虽然似乎无法在我们的"文章"组件中添加"段落"(这是一个多值的嵌入式架构).我想这样的基本功能是可行的.

此外,我们有一个组件链接到多值组件链接字段中的多个其他组件.这些单独的链接组件是可编辑的(它们使用渲染RenderComponentPresentation()),但我们无法将新组件链接添加到多值字段.

任何人都知道如何让这个工作?

亲切的问候

编辑:这将在2013 SP1中修复!

tridion tridion-2011 experience-manager

4
推荐指数
1
解决办法
755
查看次数

Razor:从页面模板上的组件模板中检索变量


大家好,我一直在研究一套Razor模板,这些模板既可以使用体验管理器进行站点编辑,也可以使用Twitter引导程序完全响应多个屏幕宽度.因此,我需要根据Experience Manager编辑器添加或删除的内容动态操作DOM输出,但仍然保持响应式设计.这种结构的一部分是遵守twitter bootstrap规定的规则.

twitter引导程序通过使用类引入动态计算的div宽度,可实现出色的响应式设计.例如,A <div class="span12>使用包装器的整个宽度."span6"有效地使用了一半,并且还计算了一定的余量以允许另一个具有"span6"的div.但是,这只有在调用前面的类时才有效<div class="row-fluid">,并且只要跨度<numbers>实际上恰好合计为12.当我需要关闭<div class="row-fluid">实际达到此数字时出现问题.

澄清一下:它必须像这样输出

<div class="row-fluid">
    <div class="span6">..code</div>
    <div class="span4">..code</div>
    <div class="span2">..code</div>
</div>
Run Code Online (Sandbox Code Playgroud)

<div class="span[#]">呈现与一个分量模板中,以便允许内的多个组件<div class="row-fluid>,其中所述页面模板呈现.

但是,从组件模板级别来看,我似乎无法检索到该页面本身实际存在的该模板的实际组件数量.我根据组件本身的模式选项计算所用组件的宽度.我使用以下组件模板代码来正确呈现它:

@{
var spanClass = String.Empty;
if (Fields.HasField("component_width") && Fields.component_width != null) {
    if (Fields.component_width.ToLower() == "full") {
        spanClass = "span12";
    } else if (Fields.component_width.ToLower() == "half") {
        spanClass = "span6";
    } else if (Fields.component_width == "40%") { …
Run Code Online (Sandbox Code Playgroud)

razor tridion experience-manager

3
推荐指数
1
解决办法
598
查看次数

Tridion Experience Manager(XPM)实施

我试图了解实现Tridion XPM的不同工件.不幸的是,我没有找到任何回答我问题的文章.

例如,内容交付服务器(在WebSphere上)可以有四个不同的应用程序,一个用于内容交付(处理发布),一个用于Web服务(oData实现),一个用于XPM(带有会话预览)和实际预览应用程序.我假设我们可以将一个或多个这些应用程序合并为一个用于简单实现(具有一个或两个消费网站).

我的问题是:

  1. 我们如何简化应用程序(WAR)的数量?虽然我总是喜欢将预览应用程序与Tridion的框架分开.Content Delivery会话预览Web服务作为独立的Java/JSP Web应用程序与将其添加到现有应用程序有什么好处?
  2. 如何将webservice(oData)与XPM或其他常见的基本功能(如组件链接)关联/集成?

例如,如果我发布一个没有启用oData的页面,它将拆分tridion:ComponentLink标签,就好像我启用它将拆分tcdl:Link标签.所以我需要提出自定义类来阅读这些标签?最终需要在预览应用程序中添加Tridion框架.(假设我在预览中没有包含任何Tridion框架以获得干净的应用程序依赖性)

我查看了Tridion的实时网站以获取更多信息,但我找不到有用的信息.

tridion tridion-content-delivery experience-manager

2
推荐指数
1
解决办法
959
查看次数