Sitemap自定义模块

时间:2015-03-31 06:06:19

标签: drupal-7 sitemap

我正在为drupal 7中的站点地图编写一个自定义模块。我在下面做了什么。

function escorts_sitemap_render_menu ($menu) 
  {
   $output = "<ul>";
   foreach ($menu as $item) 
   {
   $link = $item["link"];
   if ($link["hidden"])
     {
     continue;
     }
   $output .= "<li><a href=\"" . check_url(url($link["href"], $link["options"])) . "\">" . $link["title"] . "</a></li>";
   if ($item["below"]) 
     {
     $output .= sitemap_render_menu($item["below"]);
     }
   }
   $output .= "</ul>";
   return $output;
  }
function escorts_sitemap_content () 
  {
   $output = "<h1>Escorts Sitemap</h1>";
   $output .= "<ul class=\"site_map_list\">";
   $output .= sitemap_render_menu(menu_tree_all_data("main-menu"));
   return $output;
  }
function escorts_sitemap_menu () 
  {
   $items = array();
   $items["sitemap"] = array (
   "title" => "Escorts Sitemap",
   "page callback" => "escorts_sitemap_content",
   "access arguments" => array("access content"),
   "type" => MENU_CALLBACK);
    return $items;
  }

然后在template.php中我实现了hook_theme,下面是代码:

 function escorts_theme() {
 return array(
'escorts_sitemap_content' => array(
   'render element' => 'content',
    'template' => 'page--sitemap',
    'path' => drupal_get_path('theme', 'escorts') . '/templates'
 ),
 );
 }

但由于我的自定义模板文件page--sitemap.tpl.php没有出现,任何人都可以引导我。但是现在我应该在page--sitemap.tpl.php写什么才能呈现我的站点地图

1 个答案:

答案 0 :(得分:0)

也许你应该尝试下一个:

  function escorts_theme() {
    return array(
      'escorts_sitemap_content' => array(
         'variables' => array('content' => NULL)
         /**
          * I would not call template like this, cause it looks like 
          * pattern page--[node-type]
          */
         'template' => 'page--sitemap',
      )
    );
  }

在菜单回调函数内部

function escorts_sitemap_content () {
  $output = "<h1>Escorts Sitemap</h1>";
  $output .= "<ul class=\"site_map_list\">";
  $output .= sitemap_render_menu(menu_tree_all_data("main-menu"));
  return theme('escorts_sitemap_content', $output);
}

这是方法之一。另请参阅预处理函数和Drupal主题图层。也许准备好的模块XML站点地图将是有用的。如果文件确实位于那里,也要小心。

在模板文件中粘贴

<?php print $content; ?>

此致