Перейти к содержимому


Пользователь месяца
Ixman Ixman 1-й за Октябрь
Очков активности: 693 0 тем, 33 сообщения, 14 баллов репутации
Сайт: o5cat.ru
ТОП самых активных за этот месяц
  • Фотография ShowPrint
    #1

    ShowPrint (ShowPrint.ru)
    Очков активности: 96 Вне конкурса за определение пользователя месяца

  • Фотография Ixman
    #2

    Ixman (o5cat.ru)
    Очков активности: 85.5 Вне конкурса за определение пользователя месяца

  • Фотография yuran
    #3

    yuran (yurbol.ru)
    Очков активности: 82.5 0 тем, 55 сообщений, 1 балл репутации

  • Фотография BLIK
    #4

    BLIK
    Очков активности: 51 Вне конкурса за определение пользователя месяца

  • Фотография Mandarin
    #5

    Mandarin
    Очков активности: 51 0 тем, 34 сообщения, 1 балл репутации

  • Фотография WGN
    #6

    WGN (worldgamenews.com)
    Очков активности: 45 Вне конкурса за определение пользователя месяца

  • Фотография pozitron123
    #7

    pozitron123
    Очков активности: 31.5 2 темы, 15 сообщений, 1 балл репутации

  • Фотография алексс
    #8

    алексс
    Очков активности: 27 2 темы, 12 сообщений, 1 балл репутации

  • Фотография Андрей WPMasterKZ
    #9

    Андрей WPMasterKZ (wpmaster.kz)
    Очков активности: 19.5 0 тем, 13 сообщений, 1 балл репутации

  • Фотография Scool
    #10

    Scool (stostory.ru)
    Очков активности: 19.5 3 темы, 4 сообщения, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 31.10.2018
  • Яндекс выдача: 15.11.2018
Топ 5 участников по репутации


Обработка ссылок опираясь на свойства тега

#1 WebMaster

WebMaster
  • Неактивные
  • 97 сообщений
  • Репутация: 3
0

Отправлено 28 September 2013 - 18:34

Всем привет. Столкнулся с задачей, с которой справиться не могу. В общем...
Есть код:

<span class="hidden-link-comments" data-link="%1$s">%2$s</span>

В параметр %1$s подставляет УРЛ комментатора. В параметр %2$s его ник. Специально не стал реализовывать через тег ссылок. Есть причины, не спрашивайте. Реализовал через спан.

Есть JQuery код-обработчик тега SPAN. Работает всегда одинаково. Вот он:
$('.hidden-link-comments').click(function(){window.open($(this).data('link'));return false;});

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

Вот в чем траблы. Как сделать так, что если параметр data-link пуст, то тогда поменять параметр class, на любой другой, например hidden-link-no-url? Как подобное реализовать на JQ? У меня не получается. Помогите плиз решить момент этот! Надо как то доработать код так, чтобы он был универсальный, и работал, когда нужно, а не всегда, независимо, указал человек УРЛ или нет.

 

 

  • 0

#2 isvetlichniy

isvetlichniy
  • Неактивные
  • 622 сообщений
  • Репутация: 93

Отправлено 28 September 2013 - 19:16

как обрабатывать классы для элемента читаем вот тут

а получить значение любого атрибута можно вот так

var datalink = $('.hidden-link-comments').attr('data-link');
  • 1

#3 WebMaster

WebMaster
    Topic Starter
  • Неактивные
  • 97 сообщений
  • Репутация: 3

Отправлено 28 September 2013 - 19:33

isvetlichniy, спасибо, сейчас буду пробовать!
  • 0

#4 WebMaster

WebMaster
    Topic Starter
  • Неактивные
  • 97 сообщений
  • Репутация: 3

Отправлено 28 September 2013 - 21:21

Я что то делаю не так?
$('.hidden-link-comments').click(function(){window.open($(this).data('link'));return false;});
var className = $('#link-comments').attr('class');
var datalink = $('.hidden-link-comments').attr('data-link');
if (datalink == '') {
  $('#link-comments').toggleClass('hidden-link-no-url');
  }

а ну и соответственно
<span id="link-comments" class="hidden-link-comments" data-link="%1$s">%2$s</span>

не присваивает(( пытаюсь еще подумать...

if (datalink == "") {
  $('#link-comments').removeClass().toggleClass('hidden-link-no-url');
  }
тоже нет...

Ведь все верно в первый раз, если datalink равна пустоте (пробовал false), то присвоить нужно новый класс. Почему то не пашет... Я плохо разбираюсь...
  • 0

#5 WebMaster

WebMaster
    Topic Starter
  • Неактивные
  • 97 сообщений
  • Репутация: 3

Отправлено 28 September 2013 - 21:45

может надо для прямо в самом цикле PHP где происходит вывод комментариев прям там писать условия, чтобы для каждого комментария data-link имела атрибут?
  • 0

#6 isvetlichniy

isvetlichniy
  • Неактивные
  • 622 сообщений
  • Репутация: 93

Отправлено 28 September 2013 - 21:49

попробуй вывести промежуточные значения для тестирования ну и класс удаляй/добавляй немного по другому
$('.hidden-link-comments').click(function(){window.open($(this).data('link'));return false;});
var className = $('#link-comments').attr('class');
var datalink = $('.hidden-link-comments').attr('data-link');
alert(className);
alert(datalink);
if (datalink == '') {
  $('#link-comments').toggleClass('hidden-link-no-url');
  }

дальше, смотри в консоли ошибок, нету ли каких то ошибок

и еще, что это за элемент с id = link-comments
он вообще существует?
  • 0

#7 WebMaster

WebMaster
    Topic Starter
  • Неактивные
  • 97 сообщений
  • Репутация: 3

Отправлено 28 September 2013 - 22:06

ну да, это строка, тот самый спан, в котором нужно классы поменять.
<span id="link-comments" class="hidden-link-comments" data-link="%1$s">%2$s</span>

Сейчас попробую. Делал уже с даталинк, вывел пустое окно.

alert(className);

это вытащило названия класса, а даталинк как всегда вышел пустой. Точнее в окне был только класс SPAN'a

надо собрать даталинк со всех комментариев!!! Надо впихать в цикл и чтобы распределилось каждое значение, и вывелось с новой строки например. Как это сделать? с for??

я не знаю как..(( поробовал ни че не пашет... я не соображаю в программировании...
  • 0

#8 WebMaster

WebMaster
    Topic Starter
  • Неактивные
  • 97 сообщений
  • Репутация: 3

Отправлено 29 September 2013 - 07:20

Ребят, помогите кто нибудь условие написать, плиз... Я использую вордпресс.
  • 0

#9 isvetlichniy

isvetlichniy
  • Неактивные
  • 622 сообщений
  • Репутация: 93

Отправлено 29 September 2013 - 11:41

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

#10 c0ns0l3

c0ns0l3
  • Неактивные
  • 264 сообщений
  • Репутация: 49

Отправлено 29 September 2013 - 12:19

<!DOCTYPE HTML>
<html>
    <head>
	 <meta http-equiv="content-type" content="text/html" />
	 <meta name="author" content="c0ns0l3" />
	 <title>Untitled 1</title>
	    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
	    <!-- Вариант №1 через jQuery как Вы хотели-->
	    <script>
		    (function($){
			    $(document).ready(function(){
				    $('span.link-comments').each(function(i){
					    el = $(this);
					    el_link = el.attr('data-link');
					    if(el_link && el_link.length>5) {
						    $(this).addClass('visible-link-comments');
					    }else {
						    $(this).addClass('hidden-link-comments');
					    }
				    });
			    });
		    })(jQuery)
	    </script>
	    <!-- Вариант №2 через CSS-->
	    <style>
		    .link-comments[data-link ^= "http"] {background: #39a4ff;}
	    </style>
    </head>
    <body>
	    <style>
		    .hidden-link-comments {background: #ff5a5a}
		    .visible-link-comments {background: #39a4ff;}
	    </style>
	    <span class="link-comments" data-link="">Empty Link</span>
	    <span class="link-comments" data-link="http://masterwebs.ru">http://masterwebs.ru</span>
	    <span class="link-comments" data-link="%1$s">Wrong Link</span>
    </body>
</html>

Вариант №3:
Если вы уже форматируете при помощи РНР, то почему бы вообще не выводить целый SPAN?
  • 1

#11 WebMaster

WebMaster
    Topic Starter
  • Неактивные
  • 97 сообщений
  • Репутация: 3

Отправлено 29 September 2013 - 12:49

Изображение
вот такой код генерируется функцией вывода комментариев в WordPress. Там 3 коммента от админа и 1 от посетителя. .примеры которые выше также не срабатывают, все равно класс не меняется!!! Не понятно почему!! Мозг кипит! должен меняться а не меняется!

В данном случае, где выделена строка я не указывал адрес сайта, т.к. я админ.
  • 0

#12 c0ns0l3

c0ns0l3
  • Неактивные
  • 264 сообщений
  • Репутация: 49

Отправлено 29 September 2013 - 12:51

Неможет такого быть. Ссылку в студию сайта.
  • 0

#13 WebMaster

WebMaster
    Topic Starter
  • Неактивные
  • 97 сообщений
  • Репутация: 3

Отправлено 29 September 2013 - 12:55

Вариант №3:
Если вы уже форматируете при помощи РНР, то почему бы вообще не выводить целый SPAN?


у меня комментарии выводятся вот таким способом. Он вам известен, обычный код стандартной функции ВП. Я немного под себя подшаманил его.

function mytheme_comment($comment, $args, $depth){
	 $GLOBALS['comment'] = $comment; ?>
	 <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
	<div id="comment-<?php comment_ID(); ?>">
	 <div class="comment-author vcard">
	 <?php echo get_avatar($comment,$size='75',$default='http://aftertrade.ru/wp-content/themes/BBlog-GreenMini/images/anonim.jpg' ); ?>
	 </div>
	 <?php if ($comment->comment_approved == '0') : ?>
	 <em><?php _e('Your comment is awaiting moderation.') ?></em>
	 <br />
	 <?php endif; ?>
	   <?php printf(__('<span class="author-comments"><span id="link-comments" class="hidden-link-comments" data-link="%1$s">%2$s</span>,</span>&nbsp;<span class="datetime">%3$s в %4$s</span>'), get_comment_author_url(), get_comment_author(), get_comment_date(),  get_comment_time()) ?>
	 <?php comment_text() ?>
	 <div class="reply">
	 <?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
	 </div>
	</div>
  <?php
  }
?>

Неможет такого быть. Ссылку в студию сайта.


Это мой тестовый сайт, где я верстаю шаблоны, точнее учусь. Дам сразу на статью. Еще не все оформлено, т.к. возникли траблы с сылками.

http://aftertrade.ru...sobennosti.html

Сейчас тип курсора поменяю, а то не понятно что ник это ссылка...
  • 0

#14 c0ns0l3

c0ns0l3
  • Неактивные
  • 264 сообщений
  • Репутация: 49

Отправлено 29 September 2013 - 13:04

Вместо
<?php printf(__('<span class="author-comments"><span id="link-comments" class="hidden-link-comments" data-link="%1$s">%2$s</span>,</span>&nbsp;<span class="datetime">%3$s в %4$s</span>'), get_comment_author_url(), get_comment_author(), get_comment_date(),  get_comment_time()) ?>

Особенно использования функции __() которая является обработчиком l10n в WP (переводчик).
Впиши:
<span class="author-comments">
		<?php if(get_comment_author_url()): ?>
			<a href="<?=get_comment_author_url()?>" id="link-comments"><?=get_comment_author()?></a>,
		<?php else: ?>
			<span id="link-comments"><?=get_comment_author()?></span>,
		<?php endif; ?>
		</span>&nbsp;
		<span class="datetime"><?=get_comment_date()?> в <?=get_comment_time()?></span>

И будет тебе счастье :)

Сообщение отредактировал c0ns0l3: 29 September 2013 - 13:08

  • 0

#15 WebMaster

WebMaster
    Topic Starter
  • Неактивные
  • 97 сообщений
  • Репутация: 3

Отправлено 29 September 2013 - 13:10

И не мучайся.


Спасибо огромное, чуток докрутил код:

<?php if(get_comment_author_url()): ?>
	 <span class="author-comments">
	 <span id="link-comments" class="hidden-link-comments" data-link="<?=get_comment_author_url()?>"><?=get_comment_author()?></span>,
	 </span><span class="datetime"><?=get_comment_date()?> в <?=get_comment_time()?></span>
	 <?php else : ?>
	 <?php printf(__('<span class="author-comments">%1$s,</span>&nbsp;<span class="datetime">%2$s в %3$s</span>'), get_comment_author(), get_comment_date(),  get_comment_time()) ?>
	 <?php endif; ?>

СПАСИБО ВСЕМ БОЛЬШОЕ!!!
  • 0

robot

robot
  • Пользователь PRO
  • 2652 сообщений
  • Репутация: 85


Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru