为什么我的Share标头自定义在搜索页面上不起作用

时间:2016-05-04 09:08:54

标签: alfresco alfresco-share aikau

这个问题在Alfresco JIRA,论坛和Alfresco IRC中被反复询问,所以我想我会在这里提出并回答,因为这是人们最有可能找到解决方案的地方,这个问题是这个......

  

我已经为Alfresco Share标题创建了一个自定义项   此blog post中描述的步骤可删除菜单项。

     

但是,当我登录Alfresco时,定制工作正常   除了搜索页面以外的所有内容 - 我做错了什么?

1 个答案:

答案 0 :(得分:6)

Alfresco Share中的搜索页面是应用程序中为数不多的完整Aikau页面之一。 Share中的大多数页面都是在创建Aikau之前编写的,并且由多个Surf Components组成 - 其中标题是自4.2版以来Aikau呈现的。

搜索页面在5.0中更新为完整的Aikau页面,并且不使用相同的Surf Component来呈现标题。

这意味着标准标题自定义仅针对Surf Component WebScript而不是整页WebScript。

要使其工作,您需要利用模块配置中的alwaysApply元素。

因此,例如,用于定位标头的典型扩展模块可能如下所示:

<extension>
  <modules>
    <module>
      <id>Extension Module</id>
      <auto-deploy>true</auto-deploy>
      <evaluator type="default.extensibility.evaluator"/>
        <customizations>   
          <customization>
            <targetPackageRoot>org.alfresco</targetPackageRoot>
            <sourcePackageRoot>org.alfresco.share.pages.customizations</sourcePackageRoot>
          </customization>
        </customizations>
      </evaluator>
    </module>
  </modules>
</extension>

这将针对org.alfresco包中的所有WebScripts,并会在org.alfresco.share.pages.customizations包中查找匹配的文件。

因此,Share标头由share-header.get.js WebScript定义,如果您的扩展文件位于org.alfresco.share.pages.customizations.share-header.get.js

但是,搜索页面上未使用org.alfresco.share-header.get.js WebScript,这就是自定义无法生效的原因。

相反,您应该添加一个customization块以确保您的扩展已应用,它应该类似于:

<customization>    
  <targetPackageRoot>org.alfresco.share.pages</targetPackageRoot>
  <sourcePackageRoot>org.alfresco.share.pages.customizations.share.header</sourcePackageRoot>
  <alwaysApply>
    <webscript>share-header</webscript>
  </alwaysApply>
</customization>

这表示对于org.alfresco.share.pages包中的所有WebScripts(定义了所有完整的Aikau页面)。您应该始终应用名为&#34; share-header&#34;的扩展文件。 (所以.get.js,.get.html.ftl和.get.properties文件也会匹配)。

请注意,sourcePackageRoot确切地定义了应该找到扩展文件的位置。