Модуль Карты Сайта Drupal
Я ищу модуль, который может создать sitemap в Drupal, но не смог найти его. Я пытался!--1-->Карта Сайта модуль, но он может генерировать только страницу sitemap; он не может создать блок sitemap в конце каждой страницы. Я также пытался меню сайта модуль, но он не может создать блок sitemap, как показано выше.
может быть, это просто, что я не знаю, как настроить, но я читал каждый файл readme и пытался в течение нескольких дней, все еще не могу получить его работа.
кто-нибудь знает?
9 ответов
У меня была та же проблема, после попытки модуля (Карта сайта), но отсутствующие параметры настройки я написал пользовательский модуль. Потребовалось меньше времени, чем возиться с модулем site-map, для получения карты сайта достаточно следующего кода (адаптировать ваше-меню):
function 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 sitemap_content () {
$output = "<h1>Sitemap</h1>";
$output .= "<span id=\"sitemap\">";
$output .= sitemap_render_menu(menu_tree_all_data("your-menu"));
$output .= "</span>";
return $output;
}
function sitemap_menu () {
$items = array();
$items["sitemap"] = array (
"title" => "Sitemap",
"page callback" => "sitemap_content",
"access arguments" => array("access content"),
"type" => MENU_CALLBACK);
return $items;
}
существует базовое сравнение модулей sitemap в http://groups.drupal.org/node/15980
Я использовал sitemenu, и он работал для моих нужд, но реальный ответ зависит от того, как вы структурируете свой сайт с помощью таксономии, типов контента и т. д.
что-то вроде Автоматическое Меню может работать и для вас здесь. Вы можете просто добавить меню, которое он генерирует, в нижний колонтитул на вашей первой странице.
с установленным модулем карты сайта этот php-код будет печатать карту сайта.
<?php echo theme('site_map'); ?>
вы можете создать пустой блок представлений и указать выше для пустого текста, выбрав формат ввода кода PHP.
может быть лучший способ создать пользовательский блок для отображения php-кода, но я этого не знаю.
вы можете использовать модуль Footer_sitemap, который предоставляет нам настраиваемый блок. https://drupal.org/project/footer_sitemap
Это маленький мод лучший ответ, он использует текущую тему, чтобы показать иерархию
function sitemap_render_menu ($menu) {
$output = "<ul class='menu'>";
foreach ($menu as $item) {
$link = $item["link"];
if ($link["hidden"]) {
continue;
}
$cc=($item["below"]) ? "class='collapsed'" : '';
$output .= "<li $cc><a href=\"" . check_url(url($link["href"], $link["options"])) . "\">" . $link["title"] . "</a>";
if ($item["below"]) {
$output .= sitemap_render_menu($item["below"]);
}
$output .= "</li>";
}
$output .= "</ul>";
return $output;
}
function sitemap_content ($title,$menu) {
$output = "<h1>$title</h1>";
$output .= "<span id=\"sitemap\">";
$output .= sitemap_render_menu(menu_tree_all_data($menu));
$output .= "</span>";
return $output;
}
function sitemap_menu () {
$items = array();
$items["sitemap"] = array (
"title" => "Sitemap",
"page callback" => "sitemap_content",
"access arguments" => array("access content"),
"type" => MENU_CALLBACK);
return $items;
}
print sitemap_content("Navigational menu","Navigation");
простое решение, которое не зависит от контента, включаемого в качестве пункта меню, может быть достигнуто :
создание нового представления
вывод в виде блока
С Использованием Полей:
название контента (настроено на "связать это поле с исходным фрагментом контента"
тип контента (настроен на "исключить из отображения")
формат as
Неформатированный список с настройками-поле группировки NR. 1 Выбрать Содержание: Тип;
Фильтр Criterea: Содержание: Опубликовано (Да) Тип контента-настройка для выбора типов контента, которые вы хотите включить;
критерии сортировки-настройка в соответствии с вашими предпочтениями