Модуль Drupal Site Map - PullRequest
       22

Модуль Drupal Site Map

6 голосов
/ 15 апреля 2009

Я ищу модуль, который может создать карту сайта в Drupal, но не смог найти ни одного. Я попробовал модуль Карта сайта , но он может генерировать только страницу карты сайта; он не может создать блок карты сайта в конце каждой страницы. Я также попробовал модуль меню сайта , но он также не может создать блок карты сайта, как показано выше.

Может быть, просто я не знаю, как настроить, но я прочитал каждый файл readme и пробовал несколько дней, но все равно не могу заставить его работать.

У кого-нибудь есть идеи?

Ответы [ 9 ]

11 голосов
/ 20 октября 2009

У меня была такая же проблема, после попытки модуля (карта сайта), но без параметров настройки я написал пользовательский модуль. Потребовалось меньше времени, чем возиться с модулем карты сайта, для получения карты сайта достаточно следующего кода (адаптируйте ваше меню):

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;
}
5 голосов
/ 16 апреля 2009

Существует базовое сравнение модулей карты сайта на http://groups.drupal.org/node/15980

Я использовал sitemenu, и он работал для моих нужд, но реальный ответ зависит от того, как вы структурируете свой сайт с помощью таксономии, типов контента и т. Д.

1 голос
/ 03 февраля 2011

Если установлен модуль Site Map, этот код php распечатает карту сайта.

<?php echo theme('site_map'); ?>

Вы можете создать пустой блок представлений и указать выше для пустого текста, выбрав формат ввода кода PHP.

Возможно, есть лучший способ создать пользовательский блок для отображения php-кода, но я этого не знаю.

1 голос
/ 04 июня 2009

Что-то вроде Авто меню может работать и для вас. Вы можете просто добавить генерируемое меню в блок нижнего колонтитула на первой странице.

0 голосов
/ 10 апреля 2015

Простое решение, которое не зависит от содержимого, включенного в качестве пункта меню, может быть достигнуто следующим образом:

Создание нового вида

Вывод в виде блока

Использование полей:

Заголовок содержимого (настроен для «Связать это поле с исходной частью содержимого» * ​​1009 *

Тип содержимого (настроен на «Исключить из отображения»)

Формат

Неформатированный список с настройками - Поле группировки Nr.1 ​​выберите Содержимое: Тип;

Фильтр Criterea: Содержание: Опубликовано (да) Тип содержимого - выберите типы содержимого, которые вы хотите включить;

Критерии сортировки - настройка в соответствии с вашими предпочтениями

0 голосов
/ 16 апреля 2014

Это небольшой мод лучшего ответа, который использует текущую тему, чтобы показать иерархию

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");
0 голосов
/ 29 января 2014

Вы можете использовать модуль Footer_sitemap, который предоставляет нам настраиваемый блок. https://drupal.org/project/footer_sitemap

0 голосов
/ 09 сентября 2013

Я думаю, что вы можете воспользоваться Блок меню модуль. так как вы можете создавать блоки меню для всех меню, которые вам нужны в нижнем колонтитуле. Затем вы можете добавить их все в нижний колонтитул или в один блок, используя блок минипанелей (из модуля панели ).

0 голосов
/ 16 апреля 2009

Моя идея здесь - использовать модуль Views с настраиваемым типом блока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...