Вопрос новичка

Автор Barcas23, 29 марта 2010, 10:55:39

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Barcas23

Доброе утро всем.
Можно ли сделать так, чтобы пользователи при нажатии на ник другого не переходили сразу в профиль, а выскакивало меню: вставить ник в сообщение это первое и перейти в профиль это второе.
Ну и можно ли сделать что-то подобное. Мод какой-нибудь.
Спасиб.

Pirate Rat

Ява скрипт тебе в помощь!



Макар

Barcas23   поиск - клик на ник ник в ответ
Если Вы здесь недавно, не обольщайтесь тоном некоторых дискуссий.
Все чаще слова - юзай поиск, приобретают смысл - иди в ж..........  Приобретение смысла автоматизированно - Ответы на любой вопрос по SMF
Не пишите несколько сообщений подряд - тут вам не Twitter  >:( в остальных ситуациях мы не сильно зверствуем 2funny

Bugo

#3
Цитата: Barcas23 от 29 марта 2010, 10:55:39
Доброе утро всем.
Можно ли сделать так, чтобы пользователи при нажатии на ник другого не переходили сразу в профиль, а выскакивало меню: вставить ник в сообщение это первое и перейти в профиль это второе.
Ну и можно ли сделать что-то подобное. Мод какой-нибудь.
Спасиб.
Пошаговая инструкция (простенький вариант, с использованием библиотеки jquery)
1. В файле index.template.php находим блок:
// Show all the relative links, such as help, search, contents, and the like.
echo '
<link rel="help" href="', $scripturl, '?action=help" />
<link rel="search" href="', $scripturl, '?action=search" />
<link rel="contents" href="', $scripturl, '" />';

и сразу ПОСЛЕ него вставляем:
echo '
<script src="', $settings['default_theme_url'], '/scripts/jquery-1.3.2.min.js" type="text/javascript"></script>

<script type="text/javascript">
$(document).ready(function(){
    $(\'.topmenu ul li\').hover(
        function() {
            $(this).addClass("active");
            $(this).find(\'ul\').stop(true, true);
            $(this).find(\'ul\').slideDown();
        },
        function() {
            $(this).removeClass("active");
            $(this).find(\'ul\').slideUp(\'slow\');
        }
    );
});

$(document).ready(function(){

$("ul.subnav").parent().append("<span></span>"); //Only shows drop down trigger when js is enabled - Adds empty span tag after ul.subnav

$("ul.topnav li span").click(function() { //When trigger is clicked...

//Following events are applied to the subnav itself (moving subnav up and down)
$(this).parent().find("ul.subnav").slideDown(\'fast\').show(); //Drop down the subnav on click

$(this).parent().hover(function() {
}, function(){
$(this).parent().find("ul.subnav").slideUp(\'slow\'); //When the mouse hovers out of the subnav, move it back up
});

//Following events are applied to the trigger (Hover events for the trigger)
}).hover(function() {
$(this).addClass("subhover"); //On hover over, add class "subhover"
}, function(){ //On Hover Out
$(this).removeClass("subhover"); //On hover out, remove class "subhover"
});

});
</script>


2. В файл css/index.css вставляем куда-нибудь в конец блок:
.topmenu {font: 75%/120% Arial, Helvetica, sans-serif;}
a:focus {outline: none;}
.topmenu ul, .topmenu ul li{
margin: 0;
padding: 0;
display: inline;
margin-right:2px;
}
.topmenu ul li {
float: left;
position:relative;
width:400px;
}
.topmenu ul li a{
display: block;
padding:5px 5px 10px 10px;
margin:1px 1px;
color: #0000FF;
text-decoration: none;
border:1px solid #999;
    white-space: nowrap;
}
.topmenu ul li a:HOVER{
color: #0000CC;
}

.topmenu ul li ul {
    display: none;
    position:absolute;
    top:16px;
}

.topmenu ul li ul li {
    display:block;   
    border-top:0px;
}
.active li {
    background-color:#E7EAEF;
font-size: 20px;
}
.active li:hover {background: orange}


3. В файле Display.template.php находим блок:
// Show avatars, images, etc.?
if (!empty($settings['show_user_images']) && empty($options['show_no_avatars']) && !empty($message['member']['avatar']['image']))
echo '
<li class="avatar" style="overflow: auto;">
<a href="', $scripturl, '?action=profile;u=', $message['member']['id'], '">
', $message['member']['avatar']['image'], '
</a>
</li>';

и сразу ПОСЛЕ него вставляем следующее:
echo '<div class="topmenu">
<ul>
<li>
',$txt['user_actions'],'
<ul>
<li><a style="cursor:pointer;" onclick="PrepareForm(\'[b]', $message['member']['name'],'[/b], \');">',$txt['nick_user'],'</a></li>
<script>
function PrepareForm(text) {
document.postmodify.message.value += text;
document.postmodify.message.focus();
}
</script>
<li><a href="',$message['member']['href'],'">',$txt['user_profile_go'],'</a></li>
</ul>
</li>
</ul>       
</div>';


4. В папке languages открываем файл Modifications.russian.php (или Modifications.russian-utf8.php — в зависимости от используемой Вами русификации) и вставляем туда 2 строчки:
$txt['user_profile_go'] = 'Перейти в профиль пользователя';
$txt['nick_user'] = 'Вставить ник в форму быстрого ответа';
$txt['user_actions'] = 'Действия';


5. И, наконец, копируем файл jquery-1.3.2.min.js (во вложении) в папку scripts. Очищаем кеш в админке форума и наблюдаем результат (см. скриншот).

Barcas23

Bugo
Очень благодарен.

Макар

О у Bugo, сколько у тебя еще интересных заморочек :)

а вообще, по дефолту, клик на ник, клик на аватару, и клик на значек профиля, все ведут в профиль , это уж слишком , что бы париться и переделывать так ник
Если Вы здесь недавно, не обольщайтесь тоном некоторых дискуссий.
Все чаще слова - юзай поиск, приобретают смысл - иди в ж..........  Приобретение смысла автоматизированно - Ответы на любой вопрос по SMF
Не пишите несколько сообщений подряд - тут вам не Twitter  >:( в остальных ситуациях мы не сильно зверствуем 2funny