我有包含“动态下拉”字段的文档类型,我想用一些动态数据填充它。我不知道该怎么做(找不到任何足够的信息、文档和示例)。从我发现的链接中,我能够做以下事情:
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 社区版