Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Plone&x27;标题图片来源?_Javascript_Jquery_Plone - Fatal编程技术网

Javascript Plone&x27;标题图片来源?

Javascript Plone&x27;标题图片来源?,javascript,jquery,plone,Javascript,Jquery,Plone,我使用其中一个jQuery库,使图像以模式弹出样式显示在文本顶部。然而,这在大多数情况下都适用!在TinyMCE中放置图像并选择“标题”,然后将图像设置为链接时,Plone生成的代码最终具有两个相同的链接,这导致相同图像的奇怪“Fancybox gallery幻灯片”重复两次。原因如下- TinyMCE中的HTML: <p><a class="internal-link" href="resolveuid/af2954f5af084d5aa359a480b33c5368" ta

我使用其中一个jQuery库,使图像以模式弹出样式显示在文本顶部。然而,这在大多数情况下都适用!在TinyMCE中放置图像并选择“标题”,然后将图像设置为链接时,Plone生成的代码最终具有两个相同的链接,这导致相同图像的奇怪“Fancybox gallery幻灯片”重复两次。原因如下-

TinyMCE中的HTML:

<p><a class="internal-link" href="resolveuid/af2954f5af084d5aa359a480b33c5368" target="_self" title="Test test test"><img class="image-left captioned" src="resolveuid/af2954f5af084d5aa359a480b33c5368/@@images/image/med" /></a>

查看页面时生成的HTML:

<dl class="image-left captioned" style="width:300px;">
<dt>
<a class="internal-link" target="_self" href="http://127.0.0.1:8081/CAES/images/alison-king.jpg" title="Test test test" rel="gallery"><img width="300" height="200" title="alison king" alt="alison king" src="http://127.0.0.1:8081/CAES/images/alison-king.jpg/@@images/98443898-0834-45ea-b724-8f40a0c92e0c.jpeg"></a>
</dt>
<a class="internal-link" target="_self" href="http://127.0.0.1:8081/CAES/images/alison-king.jpg" title="Test test test" rel="gallery"><dd class="image-caption" style="width:300px;">test</dd>

测试

我明白为什么会发生这种情况,这很聪明,但不符合我的目的。有人知道这个代码是在ZMI中生成的吗?或者,有没有关于jQuery解决方案的想法,除了第二个链接之外,可以针对所有链接?以下是我现有的Fancybox代码:

<script type="text/javascript">
  $(document).ready(function() {
    /* Simple image gallery. Uses default settings */
    $("a[href$='.jpg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox();
  });
</script>

$(文档).ready(函数(){
/*简单图像库。使用默认设置*/
$(“a[href$='.jpg']、a[href$='.png']、a[href$='.gif'])attr('rel','gallery').fancybox();
});
它将与下面的代码一起工作,但是它只将Fancybox应用于标题图像的第一个图像链接,而不会应用于任何其他非标题图像

<script type="text/javascript">
  $(document).ready(function() {
    $("dl.captioned dt a").attr('rel', 'gallery').fancybox();
  });
</script>

$(文档).ready(函数(){
$(“dl.capted dt a”).attr('rel','gallery').fancybox();
});
最后,我尝试将Fancybox应用于所有内容,然后将其从jQuery的第二个dl.captited链接中删除,但无法完全获得它,这仍然会导致:

<script type="text/javascript">
  $(document).ready(function() {
    $("a[href$='.jpg'],a[href$='.png'],a[href$='.gif'],a[href$='/image']").attr('rel', 'gallery'); 
    $("dl.captioned > a").attr('rel', '');
    $("a[rel$='gallery']").fancybox();
  });
</script>

$(文档).ready(函数(){
$([href$='.jpg']、a[href$='.png']、a[href$='.gif']、a[href$='/image'].attr('rel','gallery');
$(“dl.captited>a”).attr('rel','');
$([rel$='gallery']);
});

谢谢

我无法准确复制您获得的输出,但是可以在库中复制加倍的图像

加倍的结果是,因为当您启用字幕时,插入的图像将自动包装在指向图像文件的链接中(另一个JS,假设由TinyMCE应用)

因此,为了解决您的请求,在使用字幕时,不手动将图像标记为链接就足够了

注:当您使用
-标记时,似乎您在模板中插入了JS,但建议通过JS注册将其作为链接嵌入到标题中,特别是如果您希望这种情况在全局范围内发生。或者,在注册中添加表达式属性,以限制脚本应在何时交付。如果您有特殊的理由只在某个模板中使用此选项,建议使用javascript插槽。通过文档底部的
-标记插入JS,以便在加载DOM后执行它,不再需要了,我们可以使用document.ready(或window.onload)代替

我复制的步骤:创建一个站点,通过TinyMCE的控制面板启用字幕,安装collective.fancybox,使用注册的Javascript安装我自己的产品,并插入:

(function($) {
    $(document).ready(function() {
        // Look for all links in content-area, 
        // add rel-attribute to make it a gallery.
        // Skipped distinction of whether it's an image or not, 'cause I'm
        // louzy lazy and you know how to DIY anyway ;)
        $("#content-core a").attr('rel', 'gallery').fancybox();
    });
})(jQuery);

你只是在“a”标签后面加上图像吗?然后$('a>img').parent()应该进行选择。基本上,您有一个由多个JS组成的螺旋标记,它们相互干扰。第二个链接没有结束标记,定义列表缺少定义标记(dd)。如果在很多文档中出现这种情况,您可能需要通过编程方式操作标记。在JS转换完成之前,您是否可以发布保存在文档中的标记(在编辑模式下点击HTML按钮)?你们在用集体电脑吗?嗨,你们两个!所以,我用parent()尝试了SteveM的方法,但奇怪的是,它不再触发Fancybox$('a>img').parent().attr('rel','gallery').fancybox();它确实添加了rel=“gallery”,但点击链接只会进入图像,没有模式弹出窗口。我也尝试了这一行,没有parent(),只是为了查看,它工作了一次,但在关闭弹出窗口时,整个图像消失了。奇怪的另外,我的错误是,生成的HTML输出中确实有结束标记,但我一定是在上面写的时候错了。哦!您完全正确,删除附加链接(即使图像成为链接)是不必要的步骤。我原以为这一功能在以前版本的Plone中被删除了,在图像上加上标题不再使其成为链接,但显然我错了。谢谢另外,我们设置标签etc主要是为了测试,但我在使用内部门户网站js注册表时总是遇到问题,所以我倾向于从我们的CDN服务我们的js,然后直接将它们附加到我们的Diazo主题中。如果我添加“image\u view\u fullscreen”,这对我来说是有效的,它是新闻项模板中URL的结尾。在您的示例中,url仅以“image”结尾,您是否对
新闻项目_视图
进行过任何自定义?顺便说一句,我用P-4.1.6进行了测试。Steve的建议同样有效,如果你为原始prob(字幕和手动链接相结合)添加了一个合适的选择器(包括“dd”、“dl”或任何东西)。我制作了你的示例的本地副本,并将类“fancybox.image”添加到新闻项目的链接中,那就有效了。引用文档:“脚本使用匹配元素的
href
data fancybox href
属性来获取内容的位置并计算出要显示的内容类型。您可以通过添加类名(fancybox.image、fancybox.iframe等)直接指定类型”说明:无法识别MIME类型,您可能希望通过“fancybox media”类实现这一点。我尝试使用“fancybox.media”,然后覆盖会弹出,但没有内容,这证实了MIME类型的问题。保持一切不变,只对链接应用类“fancybox.image”。如果这不起作用,我想是时候开始新的探索了;)[注:类名中的点违反命名约定。]