2013-06-23 3 views
0

С Drupal 7 у меня есть тип контента с несколькими полями. Затем у меня есть страница просмотра, которая использует этот тип контента и отображает на нем весь контент.Drupal Change Menu url

Так что подумайте об этом, как в блоге, а затем о главной странице отображения блога.

У меня он установлен так, что пункт меню автоматически создается в нужном месте.

Я также Pathauto настроить таким образом, что он создает ссылку www.site.com/blog_anchor_node-title

Индивид содержание страницы не будут доступны, так что я не волнуюсь по поводу странного URL, однако, поскольку Хештег не поддерживается Pathauto, я использовал якорь

мне нужен каждый экземпляр якоря быть заменен # через файл template.php.

Это позволит автоматически привязывать метки привязки к моему главному меню, нижнему колонтитулу, а также переходить на страницу «блог».

до сих пор, ближе всего у меня есть:

function bartik_theme_links($variables) { 
    $links = $variables['links']; 
    if (!(strpos($links, "_anchor_") === false)) { 
     $links = str_replace("http://", '', $links); 
     $links = str_replace("_anchor_","#",$links); 
    } } 

Это не работает.

ответ

0

Во-первых, ваш theme_linksimplementation не должен включать тему в название своей функции. И во-вторых, чтобы указать ссылку на страницу документации, связанную ранее, `$ variables ['links'] is ...

Ассоциативный массив ссылок для тематических. Ключ для каждой ссылки используется в качестве своего класса CSS. Каждая ссылка должна быть сама собой, со следующими элементами:

Ваша замена не работает, потому что вы используете strpos на массиве.

Для того, чтобы эта работа перейти к API documentation page, скопируйте код (да код дырка) и просто вставить что-то вроде следующего в начале:

function bartik_links($variables) { 
    $links = $variables['links']; 
    foreach($links as $key => $l) { 
    // do your replacements here. 
    // You may want to print out $l here to make sure 
    // what you need to replace. 
    } 
    //... 
} 

сделать также, что функция называется правильно.

0

Чтобы разрешить мне использовать символ # в URL-адресе, то, что сработало для меня, было добавление следующего в мой файл template.php (перед функцией выше, которую вы хотите вызвать). Вам не нужно ничего менять, кроме YOURTHEMENAME, на имя вашей темы:

function YOURTHEMENAME_url_outbound_alter(&$path, &$options, $original_path) { 
    $alias = drupal_get_path_alias($original_path); 
    $url = parse_url($alias); 

    if (isset($url['fragment'])){ 
     //set path without the fragment 
     $path = $url['path']; 

     //prevent URL from re-aliasing 
     $options['alias'] = TRUE; 

     //set fragment 
     $options['fragment'] = $url['fragment']; 
    } 
}