所以我希望我的模块首先制作一个页面。但是用户输入的是简单页面的链接。 我在Drupal 7上这样做了。 我在_menu函数中创建了一个设置表单。
$items['admin/config/content/settings'] = array(
'title' => 'Setings',
'description' => 'A form to change settings',
'page callback' => 'drupal_get_form',
'page arguments' => array('settings_form'),
'access arguments' => array('access administration pages'),
'type' => MENU_NORMAL_ITEM,
);
然后我补充说:
function settings_form($form, &$form_state){
$form['locationUrl'] = array(
'#type' => 'textfield',
'#title' => t("URL kādu vēlaties?"),
'#description' => t("Example. about"),
'#required' => true
);
return system_settings_form($form);
}
然后我添加到_menu函数:
$items[variable_get('admin/config/content/settings','locationUrl')] = array( //this creates a URL that will call this form at "examples/form-example"
'title' => '', //page title
'page callback' => 'DGMap', //this is the function that will be called when the page is accessed. for a form, use drupal_get_form
'access arguments' => array('access simple page'),
);
我补充一点:
function page(){
return array('#markup' => '<h1>Hello?</h1>');
}
我把它全部保存起来。清除缓存。然后转到设置并保存locationUrl,例如'about'。然后尝试/ drupal / about它给我页面找不到异常。
有人可以帮我这个吗?我希望我试图制作它是可以理解的。
感谢您的帮助。
我想要做的最终结果是我的模块可以创建一个包含自定义JavaScript的页面。如果有人可以将我链接到一个对此很好的教程,我真的很感激。如果我的模块有一种方法可以在页面中放置自定义创建的JavaScript,那也很好。
答案 0 :(得分:0)
不确定它是否适用于动态路由,但是您在hook_menu()
中的第二个链接的变量是错误的。实际上,您指的是YourDrupal/locationUrl
而不是示例YourDrupal/about
的路线。
将其用于第二个菜单链接(额外检查是否保存设置):
if (!empty($setting = variable_get('locationUrl', ''))) {
$items[$setting] = array(
'title' => '', //page title
'page callback' => 'page', // use the same name as your pagecallback
// 'access arguments' => array('access simple page'),
'access arguments' => array('access content'), // temporarily use this
);
}
您可能还需要检查现有路线。不确定如果用户使用locationUrl
保存您的表单会发生什么情况,例如“admin”会提供已存在的YourDrupal/admin
链接。