Поставил 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 .'';
}
}?>
Комментарии
нужно сравнивать не 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 .'';
}
}?>
нормальный вариант
<?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;
}
}
?>
Попробывал, неработает не первый и не второй код. Замена происходит, но опять криво.
Ссылка получается относительной
Да и почему в данном случае знаки ?,/ и двоеточие заменяется на %3F и т.д. Как это поправить?
<?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, спасибо большое! Теперь все работает
не за што, тем более что ошибочка вышла
заменить на
<?php if (arg(0, $original_path) == 'user' && is_numeric(arg(1, $original_path)) && !arg(2, $original_path)) ?>
Я бы просто переписал [ru-api=theme_username][/ru-api].