如何隐藏引用段落组件中的路径

时间:2014-10-27 14:12:04

标签: cq5

使用rference paragraph component我可以通过浏览到其路径来显示其他段落系统中的内容。如何为content/paths隐藏某些reference paragraph?在附图中,如何隐藏Productsenter image description here

1 个答案:

答案 0 :(得分:2)

我希望我的回答是相关的。 所以要做到这一点,你需要:

  1. 创建谓词以过滤要在对话中显示的页面。
  2. 创建自己的小部件以选择页面(基于默认页面)
  3. 创建您自己的参考组件(基于默认组件)
  4. 所以你的谓词看起来像这样:

    import com.day.cq.commons.predicate.AbstractNodePredicate;
    import org.apache.commons.collections.Predicate;
    import org.apache.felix.scr.annotations.Component;
    import org.apache.felix.scr.annotations.Property;
    import org.apache.felix.scr.annotations.Service;
    import javax.jcr.Node;
    import javax.jcr.RepositoryException;
    
    @Component
    @Service
    @Property(name = "predicate.name", value = "myPredicate")
    public class MyPredicate extends AbstractNodePredicate implements Predicate {
    
        @Override
        public boolean evaluate(final Node node) throws RepositoryException {
            return node.isNodeType("nt:hierarchyNode") 
                && !node.getPath().startsWith("/content/geometrixx/en/products");
        }
    }
    

    return node.isNodeType("nt:hierarchyNode")取自CQ提供的另一个谓词,称为IsHierarchyNodePredicate。我们添加了另一个声明 - 按路径过滤。

    然后我们需要创建自己的小部件,我们将使用我们的谓词。为此,请复制" /libs/cq/ui/widgets/source/widgets/form/ParagraphReference.js"进入你的项目,然后以下一个方式编辑它:

    1. 将小部件从ParagraphReference(CQ.form.ParagraphReference)重命名为MyParagraphReference(CQ.form.MyParagraphReference)并将其注册为新的xtype - myparagraphreference。
    2. 将其添加到cq.widgets类别,因此它将以作者模式提供。
    3. 在此文件中,您将找到下一行:

      var loader = new CQ.Ext.tree.TreeLoader({
          "url":           CQ.HTTP.externalize("/content.ext.json"),
          "requestMethod": "GET",
          "baseParams":    { "predicate": "hierarchy", "depth": 0 },
          "baseAttrs":     { "iconCls": "page" }
      });
      
    4. "predicate": "hierarchy"更改为"predicate": "myPredicate"

    5. 下一步将是我们的组件。复制" / libs / foundation / components / reference"组件到您的项目并编辑它对话框 - 将参考节点的xtype更改为" myparagraphreference"。

      因此,从这一刻起,您可以在伙伴中找到您的组件,并且不会有节点"产品"。

      enter image description here

      P.S。:您也可以只使用您的默认组件覆盖默认组件并覆盖默认小组件,而不是创建新组件。

      如果您有任何疑问 - 请不要犹豫,问我。 祝你好运。

      <强>已更新