By admin |

对于有洁癖的人来说,eck的添加路径是不完美的,一般是如下形式:

admin/structure/entity-type/ENTITY_TYPE/BUNDLE/add

这种形式的菜单,一般会调用默认的后台主题进行渲染。


下面的代码,对eck生成的entity,使用自定义的路径,这会带来诸多好处。

代码比较短,复制粘贴到自定义模块即可。

ENTITY_TYPE/BUNDLE/add
/**
 * Implements hook_menu().
 * define custom path for eck entity add form.
 */
function HOOK_menu() {
  $items = array();
  foreach (EntityType::loadAll() as $entity_type) {
    foreach (Bundle::loadByEntityType($entity_type) as $bundle) {
      $items[$entity_type->name . '/' . $bundle->name .'/add'] = array(
        'title' => 'Add ' . $bundle->label,
        'page callback' => 'eck__entity__add',
        'page arguments' => array($entity_type->name, $bundle->name),
        'load arguments' => array($entity_type->name),
        'access callback' => 'eck__entity_menu_access',
        'access arguments' => array('add', $entity_type->name, $bundle->name),
        'file path' => drupal_get_path('module', 'eck'),
        'file' => 'eck.entity.inc',
      );
    }
  }
  return $items;
}