Posted 6 августа, 20213 yr comment_171054 Не могу сказать, что перерыл абсолютно весь интернет, но на поиск решения потрачено уже порядка 10 часов В общем, чего хочу добиться, чтобы в активности(https://ipbmafia.ru/discover/) можно было бы помечать темы как прочитанные, частично, мне этого удалось добиться, выводом этого блока предпросмотра над сообщением: И оно вполне себе работает, но на телефонах нет курсора, чтобы его навести на название темы, поэтому решил кнопочку "Mark this topic read" вывести под пост: Но ссылка (идентичная той, что в блоке предпросмотра) содержащаяся в "Mark this topic read" просто перекидывает в тему Собственно вопрос, почему одна и та же ссылка работает по-разному и как это можно исправить Вот код для searchResult с выводом блока предпросмотра и нерабочим "Mark this topic read": Спойлер {{$clv_a = preg_replace('/([\/^](&).+)/', '/&preview=1', $objectUrl);}} {{$clv_b = $objectUrl->setQueryString('do','markRead')->csrf();}} {{$clv_c = preg_replace('/(&comment=)+(\d)+/', '', $clv_b);}} <li class='ipsStreamItem ipsStreamItem_contentBlock ipsStreamItem_{$view} ipsAreaBackground_reset ipsPad {{if isset( $indexData['index_class']::$searchResultClassName )}}{$indexData['index_class']::$searchResultClassName}{{endif}} {{if $indexData['index_hidden']}}ipsModerated{{endif}}' data-role='activityItem' data-timestamp='{$indexData['index_date_created']}'> <div class='ipsStreamItem_container ipsClearfix'> {{if \in_array( 'IPS\Content\Comment', class_parents( $indexData['index_class'] ) )}} {{$itemClass = $indexData['index_class']::$itemClass;}} <div class='ipsStreamItem_header ipsPhotoPanel ipsPhotoPanel_mini'> {{if $indexData['index_title']}} <span class='ipsStreamItem_contentType' data-ipsTooltip title='{lang="$itemClass::$title"}'><i class='fa fa-{$itemClass::$icon}'></i></span> {{else}} <span class='ipsStreamItem_contentType' data-ipsTooltip title='{lang="$indexData['index_class']::$title"}'><i class='fa fa-{$indexData['index_class']::$icon}'></i></span> {{endif}} {template="userPhotoFromData" group="global" app="core" params="$authorData['member_id'], $authorData['name'], $authorData['members_seo_name'], \IPS\Member::photoUrl( $authorData ), ( $view !== 'condensed' ) ? 'mini' : 'tiny'"} <div class='{{if $unread}}ipsStreamItem_unread{{endif}}'> {{if $view == 'condensed' && $snippet}} <div class='ipsPhotoPanel ipsPhotoPanel_small'> {$snippet|raw} <div> {{endif}} <h2 class='ipsType_reset ipsStreamItem_title ipsContained_container {{if !$indexData['index_title'] or $view == 'condensed'}}ipsStreamItem_titleSmall{{endif}}'> {{if $unread}} <span> <a href='{{if member.member_id}}{$objectUrl->stripQueryString( array( 'comment' => 'comment', 'review' => 'review' ) )->setQueryString( 'do', 'getNewComment' )}{{else}}{$objectUrl->stripQueryString( array( 'comment' => 'comment', 'review' => 'review' ) )}{{endif}}' data-linkType="star" {{if $iPostedIn}}data-iPostedIn{{endif}} title='{lang="first_unread_post"}' data-ipsTooltip> <span class='ipsItemStatus {{if $iPostedIn}}ipsItemStatus_posted{{endif}}'><i class="fa fa-{{if $iPostedIn}}star{{else}}circle{{endif}}"></i></span> </a> </span> {{elseif $iPostedIn}} <span><span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span></span> {{endif}} {{if isset( $indexData['index_prefix'] )}} <span>{template="prefix" group="global" app="core" params="rawurlencode($indexData['index_prefix']), $indexData['index_prefix']"}</span> {{endif}} <span class='ipsType_break ipsContained'> <a href='{$objectUrl}' data-linkType="link" data-searchable data-ipsHover data-ipsHover-target='$clv_a' data-ipsHover-timeout='1.5'>{{if ! empty( $itemData['extra']['solved'] ) }}<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="this_is_solved"}'><i class='fa fa-check'></i></span>{{endif}} {$itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['title'] ]}</a> </span> {{if $indexData['index_hidden']}} {{if $indexData['index_hidden'] === -1}} <span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="hidden"}'><i class='fa fa-eye-slash'></i></span></span> {{elseif $indexData['index_hidden'] === 1}} <span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span></span> {{endif}} {{endif}} </h2> {{if $view != 'condensed'}} <p class='ipsType_reset ipsStreamItem_status ipsType_blendLinks'> {expression="$itemClass::searchResultSummaryLanguage( $authorData, $articles, $indexData, $itemData )"} <a href='{$containerUrl}'>{$containerTitle|raw}</a> </p> {{else}} <ul class='ipsList_inline ipsStreamItem_stats ipsType_light ipsType_blendLinks'> <li> <a href='{{if $indexData['index_title']}}{$objectUrl}{{else}}{{if \in_array( 'IPS\Content\Review', class_parents( $indexData['index_class'] ) )}}{$objectUrl->setQueryString( array( 'do' => 'findReview', 'review' => $indexData['index_object_id'] ) )}{{else}}{$objectUrl->setQueryString( array( 'do' => 'findComment', 'comment' => $indexData['index_object_id'] ) )}{{endif}}{{endif}}' class='ipsType_blendLinks'><i class='fa fa-clock-o'></i> {datetime="$indexData['index_date_created']"}</a> </li> {{if isset( $itemClass::$databaseColumnMap['num_comments'] ) and isset( $itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_comments'] ] ) and $itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_comments'] ] > ( $itemClass::$firstCommentRequired ? 1 : 0 )}} <li> <a href='{{if $indexData['index_title']}}{$objectUrl}{{else}}{{if \in_array( 'IPS\Content\Review', class_parents( $indexData['index_class'] ) )}}{$objectUrl->setQueryString( array( 'do' => 'findReview', 'review' => $indexData['index_object_id'] ) )}{{else}}{$objectUrl->setQueryString( array( 'do' => 'findComment', 'comment' => $indexData['index_object_id'] ) )}{{endif}}{{endif}}' class='ipsType_blendLinks'> {{if $itemClass::$firstCommentRequired}} <i class='fa fa-comment'></i> {expression="$itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_comments'] ]-1"} {{else}} <i class='fa fa-comment'></i> {expression="$itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_comments'] ]"} {{endif}} </a> </li> {{endif}} {{if isset( $itemClass::$databaseColumnMap['num_reviews'] ) and isset( $itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_reviews'] ] ) and $itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_reviews'] ]}} <li> <a href='{$itemUrl}#reviews' class='ipsType_blendLinks'><i class='fa fa-star-half-o'></i> {$itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_reviews'] ]}</a> </li> {{endif}} </ul> <p class='ipsStreamItem_status ipsType_reset ipsType_blendLinks'> {expression="$itemClass::searchResultSummaryLanguage( $authorData, $articles, $indexData, $itemData )"} <a href='{$containerUrl}'>{$containerTitle|raw}</a> </p> {{endif}} {{if isset( $indexData['index_tags'] ) and $view == 'condensed'}} <span>{template="tags" group="global" app="core" params="explode( ',', $indexData['index_tags'] ), true, true"}</span> {{endif}} {{if $view == 'condensed' && $snippet}} </div> </div> {{endif}} </div> </div> {{if $view !== 'condensed'}} <div class='ipsStreamItem_snippet ipsType_break'> {{if $canIgnoreComments and isset( $itemData['author'] ) and \IPS\Member::loggedIn()->member_id and isset( $authorData['member_id'] ) and isset ( $authorData['member_group_id'] ) and \IPS\Member::loggedIn()->isIgnoring( $authorData, 'topics' )}} <div class='ipsComment_ignored ipsType_light' id='elIgnoreComment_{$indexData['index_object_id']}' data-ignoreCommentID='elComment_{$indexData['index_object_id']}' data-ignoreUserID='{$authorData['member_id']}'> {lang="ignoring_content" sprintf="$authorData['name']"} <a href='#elIgnoreComment_{$indexData['index_object_id']}_menu' data-ipsMenu data-ipsMenu-menuID='elIgnoreComment_{$indexData['index_object_id']}_menu' data-ipsMenu-appendTo='#elIgnoreComment_{$indexData['index_object_id']}' data-action="ignoreOptions" title='{lang="see_post_ignore_options"}' class='ipsType_blendLinks'>{lang="options"} <i class='fa fa-caret-down'></i></a> <ul class='ipsMenu ipsHide' id='elIgnoreComment_{$indexData['index_object_id']}_menu'> <li class='ipsMenu_item ipsJS_show' data-ipsMenuValue='showPost'><a href='#'>{lang="show_this_post"}</a></li> <li class='ipsMenu_sep ipsJS_show'><hr></li> <li class='ipsMenu_item' data-ipsMenuValue='stopIgnoring'><a href='{url="app=core&module=system&controller=ignore&do=remove&id={$authorData['member_id']}" seoTemplate="ignore"}'>{lang="stop_ignoring_posts_by" sprintf="$authorData['name']"}</a></li> <li class='ipsMenu_item'><a href='{url="app=core&module=system&controller=ignore" seoTemplate="ignore"}'>{lang="change_ignore_preferences"}</a></li> </ul> </div> <div id='elComment_{$indexData['index_object_id']}' class="ipsHide"> {$snippet|raw} </div> {{else}} {$snippet|raw} {{endif}} </div> <ul class='ipsList_inline ipsStreamItem_meta ipsGap:1'> <li class='ipsType_light ipsType_medium'> <a href='{{if $indexData['index_title']}}{$objectUrl}{{else}}{{if \in_array( 'IPS\Content\Review', class_parents( $indexData['index_class'] ) )}}{$objectUrl->setQueryString( array( 'do' => 'findReview', 'review' => $indexData['index_object_id'] ) )}{{else}}{$objectUrl->setQueryString( array( 'do' => 'findComment', 'comment' => $indexData['index_object_id'] ) )}{{endif}}{{endif}}' class='ipsType_blendLinks'><i class='fa fa-clock-o'></i> {datetime="$indexData['index_date_created']"}</a> <p class='ipsType_reset ipsType_light ipsType_blendLinks'>· <a href='{$clv_c}' data-action="markTopicRead"><i class="fa fa-check"></i> Mark this topic read</a></p> </li> {{if isset( $itemClass::$databaseColumnMap['num_comments'] ) and isset( $itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_comments'] ] ) and $itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_comments'] ] > ( $itemClass::$firstCommentRequired ? 1 : 0 )}} <li class='ipsType_light ipsType_medium'> <a href='{{if $indexData['index_title']}}{$objectUrl}{{else}}{{if \in_array( 'IPS\Content\Review', class_parents( $indexData['index_class'] ) )}}{$objectUrl->setQueryString( array( 'do' => 'findReview', 'review' => $indexData['index_object_id'] ) )}{{else}}{$objectUrl->setQueryString( array( 'do' => 'findComment', 'comment' => $indexData['index_object_id'] ) )}{{endif}}{{endif}}' class='ipsType_blendLinks'> {{if $itemClass::$firstCommentRequired}} <i class='fa fa-comment'></i> {lang="num_replies" pluralize="$itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_comments'] ] - 1"} {{else}} <i class='fa fa-comment'></i> {lang="num_comments" pluralize="$itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_comments'] ]"} {{endif}} </a> </li> {{endif}} {{if \IPS\IPS::classUsesTrait( $indexData['index_class'], 'IPS\Content\Reactable' ) and settings.reputation_enabled and \count( $reactions )}} {{if \in_array( 'IPS\Content\Review', class_parents( $indexData['index_class'] ) )}} <li>{template="searchReaction" group="search" app="core" params="$reactions, $itemUrl->setQueryString('do', 'showReactionsReview')->setQueryString('review', $indexData['index_object_id']), $repCount"}</li> {{else}} <li>{template="searchReaction" group="search" app="core" params="$reactions, $itemUrl->setQueryString('do', 'showReactionsComment')->setQueryString('comment', $indexData['index_object_id']), $repCount"}</li> {{endif}} {{endif}} {{if isset( $indexData['index_tags'] )}} <li>{template="tags" group="global" app="core" params="explode( ',', $indexData['index_tags'] ), true"}</li> {{endif}} </ul> {{endif}} {{else}} {{$itemClass = $indexData['index_class'];}} <div class='ipsStreamItem_header {{if isset( $itemClass::$databaseColumnMap['author'] )}}ipsPhotoPanel ipsPhotoPanel_mini{{endif}}'> <span class='ipsStreamItem_contentType {{if !isset( $itemClass::$databaseColumnMap['author'] )}}ipsResponsive_hidePhone{{endif}}' data-ipsTooltip title='{lang="$indexData['index_class']::$title" ucfirst="true"}'><i class='fa fa-{$indexData['index_class']::$icon}'></i></span> {{if isset( $itemClass::$databaseColumnMap['author'] )}} {template="userPhotoFromData" group="global" app="core" params="$authorData['member_id'], $authorData['name'], $authorData['members_seo_name'], \IPS\Member::photoUrl( $authorData ), ( $view !== 'condensed' ) ? 'mini' : 'tiny'"} {{endif}} <div class='{{if $unread}}ipsStreamItem_unread{{endif}}'> {{if $view == 'condensed' && $snippet}} <div class='ipsPhotoPanel ipsPhotoPanel_small'> {$snippet|raw} <div> {{endif}} <h2 class='ipsType_reset ipsContained_container ipsStreamItem_title ipsType_break {{if $view == 'condensed'}}ipsStreamItem_titleSmall{{endif}}'> {{if $unread}} <span><a href='{{if member.member_id}}{$objectUrl->setQueryString( 'do', 'getNewComment' )}{{else}}{$objectUrl}{{endif}}' title='{lang="first_unread_post"}' data-linkType="star" {{if $iPostedIn}}data-iPostedIn{{endif}} data-ipsTooltip> <span class='ipsItemStatus {{if $iPostedIn}}ipsItemStatus_posted{{endif}}'><i class="fa fa-{{if $iPostedIn}}star{{else}}circle{{endif}}"></i></span> </a></span> {{elseif $iPostedIn}} <span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span> {{endif}} {{if isset( $indexData['index_prefix'] )}} <span>{template="prefix" group="global" app="core" params="rawurlencode($indexData['index_prefix']), $indexData['index_prefix']"}</span> {{endif}} <span class='ipsContained ipsType_break'><a href='{$itemUrl}' data-linkType="link" data-searchable>{{if ! empty( $itemData['extra']['solved'] ) }}<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="this_is_solved"}'><i class='fa fa-check'></i></span>{{endif}} {$indexData['index_title']}</a> {{if $indexData['index_hidden']}} <span><span class="ipsBadge ipsBadge_icon ipsBadge_warning ipsBadge_medium " data-ipsTooltip title='{lang="hidden"}'><i class='fa fa-eye-slash'></i></span></span> {{endif}} </span> {{if isset( $indexData['index_tags'] ) and $view == 'condensed'}} {template="tags" group="global" app="core" params="explode( ',', $indexData['index_tags'] ), true, true"} {{endif}} </h2> {{if $view != 'condensed'}} {{if $containerTitle}} <p class='ipsType_reset ipsStreamItem_status ipsType_blendLinks'> {expression="$itemClass::searchResultSummaryLanguage( $authorData, $articles, $indexData, $itemData )"} <a href='{$containerUrl}'>{$containerTitle|raw}</a> </p> {{endif}} {{else}} <ul class='ipsList_inline ipsStreamItem_stats ipsType_light ipsType_blendLinks'> <li> <a href='{$objectUrl}' class='ipsType_blendLinks'><i class='fa fa-clock-o'></i> {datetime="$indexData['index_date_created']"}</a> </li> {{if isset( $indexData['index_class']::$databaseColumnMap['num_comments'] ) and isset( $itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_comments'] ] ) and $itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_comments'] ] > ( $indexData['index_class']::$firstCommentRequired ? 1 : 0 )}} <li> <a href='{{if $indexData['index_title']}}{$objectUrl}{{else}}{{if \in_array( 'IPS\Content\Review', class_parents( $indexData['index_class'] ) )}}{$objectUrl->setQueryString( array( 'do' => 'findReview', 'review' => $indexData['index_object_id'] ) )}{{else}}{$objectUrl->setQueryString( array( 'do' => 'findComment', 'comment' => $indexData['index_object_id'] ) )}{{endif}}{{endif}}' class='ipsType_blendLinks'> {{if $indexData['index_class']::$firstCommentRequired}} <i class='fa fa-comment'></i> {expression="$itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_comments'] ] - 1"} {{else}} <i class='fa fa-comment'></i> {expression="$itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_comments'] ]"} {{endif}} </a> </li> {{endif}} {{if isset( $indexData['index_class']::$databaseColumnMap['num_reviews'] ) and isset( $itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_reviews'] ] ) and $itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_reviews'] ]}} <li> <a href='{$itemUrl}#reviews' class='ipsType_blendLinks'><i class='fa fa-star-half-o'></i> {expression="$itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_reviews'] ]"}</a> </li> {{endif}} </ul> {{if $containerTitle}} <p class='ipsStreamItem_status ipsType_reset ipsType_blendLinks'> {expression="$itemClass::searchResultSummaryLanguage( $authorData, $articles, $indexData, $itemData )"} <a href='{$containerUrl}'>{$containerTitle|raw}</a> </p> {{endif}} {{endif}} {{if $view == 'condensed' && $snippet}} </div> </div> {{endif}} </div> </div> {{if $view !== 'condensed'}} <div class='ipsStreamItem_snippet ipsType_break'> {$snippet|raw} </div> <ul class='ipsList_inline ipsStreamItem_meta ipsGap:1'> {{if isset( $indexData['index_class']::$databaseColumnMap['date'] )}} <li class='ipsType_light ipsType_medium'> <a href='{$objectUrl}' class='ipsType_blendLinks'><i class='fa fa-clock-o'></i> {datetime="$indexData['index_date_created']"}</a> </li> {{endif}} {{if isset( $indexData['index_class']::$databaseColumnMap['num_comments'] ) and isset( $itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_comments'] ] ) and $itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_comments'] ] > ( $indexData['index_class']::$firstCommentRequired ? 1 : 0 )}} <li class='ipsType_light ipsType_medium'> <a href='{{if $indexData['index_title']}}{$objectUrl}{{else}}{{if \in_array( 'IPS\Content\Review', class_parents( $indexData['index_class'] ) )}}{$objectUrl->setQueryString( array( 'do' => 'findReview', 'review' => $indexData['index_object_id'] ) )}{{else}}{$objectUrl->setQueryString( array( 'do' => 'findComment', 'comment' => $indexData['index_object_id'] ) )}{{endif}}{{endif}}' class='ipsType_blendLinks'> {{if $indexData['index_class']::$firstCommentRequired}} <i class='fa fa-comment'></i> {lang="num_replies" pluralize="$itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_comments'] ] - 1"} {{else}} <i class='fa fa-comment'></i> {lang="num_comments" pluralize="$itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_comments'] ]"} {{endif}} </a> </li> {{endif}} {{if isset( $indexData['index_class']::$databaseColumnMap['num_reviews'] ) and isset( $itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_reviews'] ] ) and $itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_reviews'] ]}} <li class='ipsType_light ipsType_medium'> <a href='{$itemUrl}#reviews' class='ipsType_blendLinks'><i class='fa fa-star-half-o'></i> {lang="num_reviews" pluralize="$itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_reviews'] ]"}</a> </li> {{endif}} {{if \IPS\IPS::classUsesTrait( $indexData['index_class'], 'IPS\Content\Reactable' ) and settings.reputation_enabled and \count( $reactions )}} <li>{template="searchReaction" group="search" app="core" params="$reactions, $itemUrl->setQueryString('do', 'showReactions'), $repCount"}</li> {{endif}} {{if isset( $indexData['index_tags'] )}} <li>{template="tags" group="global" app="core" params="explode( ',', $indexData['index_tags'] ), true"}</li> {{endif}} </ul> {{endif}} {{endif}} </div> </li> Я понимаю, что это не очень хороший код, но по другому я не умею Link to comment https://ipbmafia.ru/topic/23383-pometit-temu-prochitannoj-v-aktivnosti-mark-this-topic-read-464/ Share on other sites Больше вариантов
6 августа, 20213 yr Author comment_171075 После нажатия на ссылку в блоке предпросмотра, срабатывает этот js код: Спойлер ;(function($, _, undefined) { "use strict"; ips.controller.register('forums.front.forum.hovercard', { initialize: function() { this.on('click', '[data-action="markTopicRead"]', this.markTopicRead); }, markTopicRead: function(e) { e.preventDefault(); if ($(e.currentTarget).attr('data-disabled')) { return; } this.trigger('markTableRowRead', { tableID: 'topics', rowID: this.scope.attr('data-topicID') }); ips.ui.flashMsg.show(ips.getString('topicMarkedRead')); ips.getAjax()($(e.currentTarget).attr('href'), { bypassRedirect: true }); $(e.currentTarget).addClass('ipsFaded').attr('data-disabled'); } }); }(jQuery, _)); ; Его по идее можно прикрутить к этой кнопке Вот только пока не понимаю как, может кто-то делал что-то подобное? Link to comment https://ipbmafia.ru/topic/23383-pometit-temu-prochitannoj-v-aktivnosti-mark-this-topic-read-464/?&do=findComment&comment=171075 Share on other sites Больше вариантов
6 августа, 20213 yr comment_171076 Для того, чтобы сработал скрипт, вы должны в родительском диве прописать (data-controller=) скрипт, который будет вызываться при нажатии на ссылку и передать в него параметры (например, data-topicid - номер темы). А в ссылке в свойстве data-action прописать название функции, которая должна вызваться. Если не прописать скрипт, будет просто переход по ссылке, что и происходит. <div class="..." data-controller="forums.front.forum.hovercard" data-topicid="3322"> <a href="..." title="Отметить тему прочитанной" data-action="markTopicRead">Отметить тему прочитанной</a> </div> Link to comment https://ipbmafia.ru/topic/23383-pometit-temu-prochitannoj-v-aktivnosti-mark-this-topic-read-464/?&do=findComment&comment=171076 Share on other sites Больше вариантов
6 августа, 20213 yr Author comment_171080 Desti Огромное спасибо, получилось, правда я копировал весь div блока предпросмотра и встраивал в пост которому он принадлежит(через inspector Ctrl+Shift+i) и это не работало, думал, что не в этом дело, возможно data-controller и data-topicid при старте страницы инициализируются как активные или типа того(плюсик поставлю позже, как только наберу необходимое кол-во постов) Link to comment https://ipbmafia.ru/topic/23383-pometit-temu-prochitannoj-v-aktivnosti-mark-this-topic-read-464/?&do=findComment&comment=171080 Share on other sites Больше вариантов
6 августа, 20213 yr comment_171081 topicId должен динамически присваиваться в шаблоне, а controller статичен ...data-topicID='{$topic->tid}'... В предложенном виде это нормально для всплывающего окна, но для больших списков не гут, лучше перенести data-topiciID в ссылку, а в общем диве оставить только controller. Link to comment https://ipbmafia.ru/topic/23383-pometit-temu-prochitannoj-v-aktivnosti-mark-this-topic-read-464/?&do=findComment&comment=171081 Share on other sites Больше вариантов
6 августа, 20213 yr Author comment_171083 Desti Спасибо, поправил, так понимаю, теперь ...data-topicID='{$topic->tid}'... будет определяться только при нажатии на ссылку? Link to comment https://ipbmafia.ru/topic/23383-pometit-temu-prochitannoj-v-aktivnosti-mark-this-topic-read-464/?&do=findComment&comment=171083 Share on other sites Больше вариантов
6 августа, 20213 yr comment_171084 Нет, номер топика будет определяться при генерации страницы. Но если на каждую строку генерить пару data-controller и data-action, то в исходниках будет много лишнего хлама, поэтому data-controller выносят за пределы цикла перебора топиков и получается что-то типа <div class="..." data-controller="forums.front.forum.hovercard"> <a href="..." title="Отметить тему прочитанной" data-action="markTopicRead" data-topicid="3322"">Отметить тему прочитанной</a> <a href="..." title="Отметить тему прочитанной" data-action="markTopicRead" data-topicid="3323">Отметить тему прочитанной</a> <a href="..." title="Отметить тему прочитанной" data-action="markTopicRead" data-topicid="3324">Отметить тему прочитанной</a> <a href="..." title="Отметить тему прочитанной" data-action="markTopicRead" data-topicid="3325">Отметить тему прочитанной</a></div> Обработчик должен понимать, откуда ему брать данные. Если этот атрибут живет в родительском диве, то он доступен в скрипте по this.scope.attr('data-topicID'), а если в ссылке, то по $( e.currentTarget ).attr('data-topicID'), т.е. надо будет немного изменить JS, чтобы он брал нужные данные для работы со списком. Link to comment https://ipbmafia.ru/topic/23383-pometit-temu-prochitannoj-v-aktivnosti-mark-this-topic-read-464/?&do=findComment&comment=171084 Share on other sites Больше вариантов
6 августа, 20213 yr Author comment_171086 Я слишком "прямо" вас изначально понял 6 часов назад, Desti сказал: в родительском диве прописать (data-controller=) Я взял и <a></a> обернул в div -> <div data-controller="forums.front.forum.hovercard"><a href="...">...</a></div> теперь поправил, просто нашёл div в который встраивается ссылка и в него добавил data-controller Спасибо вам ещё раз Link to comment https://ipbmafia.ru/topic/23383-pometit-temu-prochitannoj-v-aktivnosti-mark-this-topic-read-464/?&do=findComment&comment=171086 Share on other sites Больше вариантов
6 августа, 20213 yr comment_171088 Ну и славно. Link to comment https://ipbmafia.ru/topic/23383-pometit-temu-prochitannoj-v-aktivnosti-mark-this-topic-read-464/?&do=findComment&comment=171088 Share on other sites Больше вариантов
25 сентября, 20213 yr comment_172829 Всем привет! Чтобы не поднимать новую тему напишу сюда, так как у меня похожая ситуация. Если кратко, хочу сделать так, чтобы при нажатии на иконку темы (см.скрин) к теме применялась функция "Прочитано", а не пройти к непрочитанным комментариям как сейчас, поскольку такая функция уже имеется по дефолту при нажатии названии самой темы. Подскажите как можно это реализовать? Edited 25 сентября, 20213 yr by deeverbs Link to comment https://ipbmafia.ru/topic/23383-pometit-temu-prochitannoj-v-aktivnosti-mark-this-topic-read-464/?&do=findComment&comment=172829 Share on other sites Больше вариантов
25 сентября, 20213 yr comment_172830 deeverbs откуда скрин? это блок? потому что в списке разделов и так при нажатии на иконки прочитывается всё. если блок, то примеры выше, как это сделать. Link to comment https://ipbmafia.ru/topic/23383-pometit-temu-prochitannoj-v-aktivnosti-mark-this-topic-read-464/?&do=findComment&comment=172830 Share on other sites Больше вариантов
25 сентября, 20213 yr comment_172833 @by_ix Скрин с блока Recent Topics, и в списке разделов, хотелось бы сделать чтобы при нажатии он в тему не провалился, а делал её только прочитанной) Edited 25 сентября, 20213 yr by deeverbs Link to comment https://ipbmafia.ru/topic/23383-pometit-temu-prochitannoj-v-aktivnosti-mark-this-topic-read-464/?&do=findComment&comment=172833 Share on other sites Больше вариантов
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.