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

Tridion 在XPM编辑(Razor)中禁用单击事件,tridion,tridion-2011,experience-manager,Tridion,Tridion 2011,Experience Manager,我已经尝试解决这个问题一段时间了,但是我想不出一个合适的方法 你看,在我们的网站上有很多可点击的图片或div,提供了覆盖整个图片的组件链接。如果您激活XPM并尝试选择组件,它将触发其组件链接单击事件,并将您发送到正确的页面 我一直在寻找一个快速的解决方案,只有在编辑时才能禁用这种行为,到目前为止,我已经找到了一些解决方法,坦率地说,这不是我想要的 例如,您可以使用fantastic Razor Mediator条件(IssitedItemEnabled),但是,如果您当前的发布/页面/服务器已启

我已经尝试解决这个问题一段时间了,但是我想不出一个合适的方法

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

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

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

@if(!IsSiteEditEnabled){
<a tridion:href="#"> other code, ending in closing of </a>...
}
@if(!issiteedetenabled){
...
}
当站点编辑(XPM)未激活但可以激活时,不会输出链接。简言之,临时服务器

除非没有其他选择,否则我将需要一个实时发布服务器来使代码正常工作,但这将带来一个问题,即编辑器会认为暂存服务器上的链接已断开

我有种感觉,我在这里遗漏了一些东西。我相信像你这样的人可能遇到过这个问题:)

这是其中一个街区

<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>
}

> p>你可以考虑只加入这样的其他形式:

@if(!IsSiteEditEnabled){
   <a tridion:href="#"> other code, ending in closing of </a>...
}else{
   <a href="#" onclick="alert('Image links not supported in XPM');"></a>
}
@if(!issiteedetenabled){
...
}否则{
}
这至少可以解释为什么这些链接不适用于您的编辑器。虽然我还没有测试这是否真的解决了你的问题


只需添加一个
class=“NoClickImageLink”
属性,并在页面加载时向该类的所有标记添加一个JavaScript操作,将onclic事件与标记关联起来,这样会更简洁。

使用JQuery时,可以使用以下代码阻止锚定链接工作:

$('a')。单击(函数(事件){
event.preventDefault();
});
$(此)
将引用单击的元素,您可以在需要一些锚链接以保持工作时验证该元素

在使用XPM进行编辑时,可以插入此代码,这将大大简化模板


另外,我没有测试这个建议。

因为XPM纯粹是客户端。。。我猜你一定是用了一些我在上节所描述的技巧


这篇文章是根据我在Tridion 2013上使用XPM的经验编写的,但无论如何都可以作为一个很好的起点。一旦你有了这样的方法来检测页面是在编辑模式的时候,你就可以像JavaScript一样描述一些JavaScript技巧。

看起来这个问题可能需要一个赏金……我想你可能需要更多的赏金——我真的被你的问题弄糊涂了——也许考虑重新措辞吧。为什么要禁用链接?这是不是因为它阻止你编辑组件?整个组件就是一个巨大的点击横幅。所以这意味着,为了在网站上编辑它,你需要通过点击“是”来聚焦所述组件。因为它有一个链接,你将被重定向到另一个页面,编辑是不可能的。这基本上是正确的做法,但问题是临时站点将没有活动的链接。这也意味着可以启用SiteEdit,但此时不处于活动状态。编辑需要通过地址栏url导航到他们想要查看的页面。我认为您唯一的选择是在SiteEdit模式下添加文本链接以允许导航,或者添加特殊的div/标记以允许编辑组件。同时实现这两个目标似乎是不可能的。这种方法需要更改模板,这使得它不是一个更好的解决方案。由于XPM主要是客户端代码,您也可以在那里找到解决方案。tcm4lex.wordpress.com不再可用。作者已经删除了这个网站。