如何在drupal 7中创建具有自定义链接的自定义页面?

时间:2016-04-25 14:13:55

标签: drupal-7 drupal-modules

我想使用模块在管理员端创建页面。我需要使用hook_menu()提及自定义链接页面。从浏览器访问链接后,我想显示一些链接,用于从另一个网站调用另一个静态链接。

例如:

我想创建admin / list-of-links:自定义网址

点击此页面后,在此页面上,结果将类似于表格列表,其中包含用于导航来自其他网站的静态链接的按钮。

我创建了以下内容。

通过使用以下代码,我创建了自定义页面的自定义页面,通过传递静态链接并在自定义模板页面中打印。请注意,我刚在模板页面中打印过数组。格式化仍然存在。

<?php 
    // Created Custom URL for accesing the static links
    function test_menu() {
        $items['admin/list-of-links'] = array(
            'title' => 'List Section',
            'page callback' => 'list_section',
            'access arguments' => array('administrator'),
        );
    }

    // Created Page Callback for assigning the variable for the theme
    function list_section() {
        $static_links = array("www.google.com", "www.facebook.com");
        return theme('test_link', array('static_links' => $static_links));
    }

    // Assigned the template for the page that we have created 
    function test_theme($existing, $type, $theme, $path) {

        return array(
            'test_link' => array(
                'template' => 'static-link-listing',
                'path' => drupal_get_path('theme', 'seven') . "/templates"
            ),
        );
    }

    //Created Template File :  themes/seven/templates/static-link-listing.tpl.php
    // And after that, I am getting the result.
    // Now after that, we will format what output we need.

    echo "<pre>";
    print_r($static_links);

    ?>

1 个答案:

答案 0 :(得分:0)

您将需要使用hook_menu()来执行此操作。

让我们说你的模块名为example,然后你需要在.module文件中添加以下代码:

/**
 * Implements hook_menu().
 */
function example_menu() {
  $items['admin/list-of-links'] = array(
    'description' => 'Load a list lof links',
    'title' => t('List of links'),
    'page callback' => '_example_load_links',
    'access arguments' => array('access content'),
    'type' => MENU_NORMAL_ITEM,
  );

  return $items;
}

要返回所选页面上的链接列表,您需要为页面回调添加一个函数,例如:

/**
 * We load a list of links
 */
function _example_load_links(){
  $content['item'] = array(
    '#type' => 'item',
    '#markup' => t('Hello world, place your links here'),
  );
  return $content;
}

如果您启用模块并清除缓存(使用hook_menu非常重要)

,这应该有效