如何使用动态值填写Hippo CMS中的动态下拉列表?

时间:2015-09-06 16:55:19

标签: dynamic plugins content-management-system selection hippocms

我的文档类型包含“动态下拉”字段,我想用一些动态数据填充它。我无法弄清楚如何做到这一点(找不到任何足够的信息,文档,关于此的例子)。从我发现的链接中我能够做到以下事情:

1)我在 / hippo:configuration / hippo:frontend / cms / cms-services 中创建了名为 SitemapValueListProvider 的服务,具有以下属性:
plugin.class = com.test.cms.components.SitemapService
valuelist.provider = service.valuelist.custom

2)在CMS项目中创建了类com.test.cms.components.SitemapService

public class SitemapService extends Plugin implements IValueListProvider {

  private final static String CONFIG_SOURCE = "source";

  public SitemapService(IPluginContext context, IPluginConfig config) {
    super(context, config);

    String name = config.getString(IValueListProvider.SERVICE, "service.valuelist.custom");
    context.registerService(this, name);
  }

  @Override
  public ValueList getValueList(String name, Locale locale) {
    ValueList valuelist = new ValueList();

    if ((name == null) || (name.equals(""))) {
        System.out.println("No node name (uuid or path) configured, returning empty value list");
    } else {
        valuelist.add(new ListItem("custom4", "Custom Value 4"));
        valuelist.add(new ListItem("custom5", "Custom Value 5"));
        valuelist.add(new ListItem("custom6", "Custom Value 6"));
    }

    return valuelist;
  }

  @Override
  public List<String> getValueListNames() {
    List<String> list = new ArrayList<>(1);
    list.add("values");
    return list;
  }

  @Override
  public ValueList getValueList(IPluginConfig config) {
    if (config == null) {
        throw new IllegalArgumentException("Argument 'config' may not be null");
    }
    return getValueList(config.getString(CONFIG_SOURCE));
  }

  @Override
  public ValueList getValueList(String name) {
    return getValueList(name, null/*locale*/);
  }
}

3)在CMS项目中创建了类com.test.cms.components.TestPlugin

public class TestPlugin extends Plugin{

  public TestPlugin(IPluginContext context, IPluginConfig config) {
    super(context, config);
    context.registerService(this, "service.valuelist.custom");
  }    
} 

4)对于提供以下属性的字段 / hippo:namespaces / cms / TestItem / editor:templates / _default_ / dynamicdropdown 文件类型:(使用控制台)
plugin.class = com.test.cms.components.TestPlugin

但仍然无法动态获取数据。什么都没发生。
我正在使用HippoCMS 10社区版

1 个答案:

答案 0 :(得分:0)

你完全走在正确的轨道上,我无法发现任何明显的原因导致这种情况无效。你能仔细检查一下吗?

  • 在日志中查找错误,可能是在CMS的早期开始。也许在引导过程中出现错误。
  • 激活CMS中的开发模式:这会在CMS中添加额外的日志记录。 http://www.onehippo.org/library/development/debug-wicket-ajax-in-the-cms.html
  • 您还可以尝试通过输入错误的类名来破坏配置:如果您没有ClassNotFound,那么您就知道您的配置错误和/或没有被提取。

HTH。