Замена ссылки профиля юзера на свою

Главные вкладки

Аватар пользователя Paldru Paldru 1 сентября 2009 в 20:59

Поставил vbdrupal, и теперь мне нужно поменять все ссылки в друпале с /user/* на forum.site.ru/member.php?id=*. В первую очередь интересуют замена ссылок для коментариев и "автора ноды".Pathauto не работает для этого случая. Функция function custom_url_rewrite_outbound тоже криво работает. Что не так в моем коде?

<?php
function custom_url_rewrite_outbound(&$path, &$options$original_path) {
  global 
$user;

  if (

$path == 'user/'$user->uid .'') {
    
$path 'http://forums.site.ru/member.php?u='$user->uid .'';
  }
}
?>

Комментарии

Аватар пользователя alexweb alexweb 2 сентября 2009 в 1:07

нужно сравнивать не path а original_path. path будет user/id только в том случае, если алиас отсутствует.


<?php
function custom_url_rewrite_outbound(&$path, &$options$original_path) {
  global 
$user;

  if (

$original_path == 'user/'$user->uid .'') {
    
$path 'http://forums.site.ru/member.php?u='$user->uid .'';
  }
}
?>
Аватар пользователя alexweb alexweb 2 сентября 2009 в 1:14

нормальный вариант

<?php
function custom_url_rewrite_outbound(&$path, &$options$original_path) {
  global 
$user;

  if (

preg_match('|^user(/.*)|'$original_path$matches)) {
    
$path 'http://forums.site.ru/member.php?u='$matches[1];
    
$options['absolute'] = true;
  }
}
?>
Аватар пользователя Paldru Paldru 2 сентября 2009 в 2:34

Попробывал, неработает не первый и не второй код. Замена происходит, но опять криво.
Ссылка получается относительной

Quote:

http://site.ru/http%3A/%252Fforums.site.ru/member.php%3Fu%3D/1

Да и почему в данном случае знаки ?,/ и двоеточие заменяется на %3F и т.д. Как это поправить?

Аватар пользователя kosilko kosilko 2 сентября 2009 в 13:01
<?php    
if (arg(0$original_path) == 'user' && is_numeric(arg(1$original_path)) && !arg(2)) {
    
$path '/forum.site.ru/member.php';
    
$options['absolute'] = TRUE;
    
$options['query'] = 'id='.arg(1$original_path);
    
$options['base_url'] = '';        
}
?>
Аватар пользователя kosilko kosilko 2 сентября 2009 в 19:26

не за што, тем более что ошибочка вышла Smile

"kosilko" wrote:
if (arg(0, $original_path) == 'user' && is_numeric(arg(1, $original_path)) && !arg(2))

заменить на

<?php

if (arg(0$original_path) == 'user' && is_numeric(arg(1$original_path)) && !arg(2$original_path))

?>