Hide Thread Content from Guest 2.x

-re0

Active member
Registered
Joined
Mar 25, 2020
Messages
37
Points
18

Reputation:

I don't know if I'm not using the permission correctly, or maybe it's actually working as intended. I seem to recall vbulletin having an option that allowed guests to click the what's new button and it'd list all of the threads that were recent. So, guests could read the thread titles and whatnot, but if they clicked into those threads it'd give the alert that you needed to be registered.

I've tried it at the usergroup level, and at the node permission level. I've been messing with it for hours and I've had no luck.

guests -
view threads by others - allow
view thread content - revoke

If a guest navigates to a specific forum category it's working as intended. It'll show the list of threads, but it blocks the actual thread content from being seen. That's fine.

If you click "what's new", or "recent activity", or " in AJAX Advanced Forum Stats , or member profile latest activity ..... it is always turning up zero results. The only way I can get it to show results is by putting view thread content to allow. That will show results when clicking recent activity or what's new. That is obviously also allowing guests to read the content.

Is there a setting/permission setup that will actually show guests a list of "what's new"/"recent activity" threads, but then alert them to register if they try to access those threads?

Alternatively, if that is the way it's intended to function, can someone provide me with info on how to just remove "what's new"/"recent activity" AJAX Advanced Forum Stats , or member profile latest activity .....for guests, or make it so clicking either gives them an alert or whatever that they need to register?
 

MesterPerfect

Well-known member
Registered
Joined
Feb 1, 2019
Messages
94
Points
43

Reputation:

I think simple code can be written to hide topic content from guests
 

-re0

Active member
Registered
Joined
Mar 25, 2020
Messages
37
Points
18

Reputation:

do you know code and where to place it ?
 

MesterPerfect

Well-known member
Registered
Joined
Feb 1, 2019
Messages
94
Points
43

Reputation:

Go To admin cp -==> Appearance -==> Templates
find template post_macros

find CODE

HTML:
                            <article class="message-body js-selectToQuote">
                                <xf:ad position="post_above_content" arg-post="{$post}" />
                                {{ bb_code($post.message, 'post', $post) }}
                                <div class="js-selectToQuoteEnd">&nbsp;</div>
                                <xf:ad position="post_below_content" arg-post="{$post}" />
                            </article>


Replace with:

HTML:
                            <article class="message-body js-selectToQuote">
                                <xf:ad position="post_above_content" arg-post="{$post}" />
                                <xf:if is="!$xf.visitor.user_id">
                                    <xf:set var="$snippetPost" value="{{ snippet($post.message, 300) }}" />
                                    {{  bb_code($snippetPost, 'post', $post)  }}
                                    <div class="blockMessage blockMessage--important blockMessage--iconic">
                                       To view hidden content please, <a href="{{ link('login') }}" data-xf-click="overlay">{{ phrase('log_in_or_register_now') }}</a>
                                    </div>
                                <xf:else/>
                                    {{ bb_code($post.message, 'post', $post) }}
                                </xf:if>
                                <div class="js-selectToQuoteEnd">&nbsp;</div>
                                <xf:ad position="post_below_content" arg-post="{$post}" />
                            </article>
You can control the number of characters you want the guest to see before registering by changing the number 300 in this code
Code:
($post.message, 300) }}" />
 

-re0

Active member
Registered
Joined
Mar 25, 2020
Messages
37
Points
18

Reputation:

Thanks for replying bro but i can't find the code into post_macros templete.

SToFZp2.png
 

MesterPerfect

Well-known member
Registered
Joined
Feb 1, 2019
Messages
94
Points
43

Reputation:

find CODE

Code:
<article class="message-body js-selectToQuote">
After this code you will find what you want
 

MesterPerfect

Well-known member
Registered
Joined
Feb 1, 2019
Messages
94
Points
43

Reputation:

I have modified the template for you

Code:
<xf:macro name="post" arg-post="!" arg-thread="!">
	<xf:css src="message.less" />
	<xf:set var="$isIgnored" value="{{ $post.isIgnored() }}" />
	<article class="message message--post js-post js-inlineModContainer {{ $isIgnored ? 'is-ignored' : '' }} {{ $post.isUnread() ? ' is-unread' : '' }}"
		data-author="{{ $post.User.username ?: $post.username }}"
		data-content="post-{$post.post_id}"
		id="js-post-{$post.post_id}">

		<span class="u-anchorTarget" id="post-{$post.post_id}"></span>

		<div class="message-inner">
			<div class="message-cell message-cell--user">
				<xf:macro template="message_macros" name="user_info" arg-user="{$post.User}"
					arg-fallbackName="{$post.username}"/>
			</div>
			<div class="message-cell message-cell--main">
				<div class="message-main js-quickEditTarget">

					<header class="message-attribution message-attribution--split">
						<div class="message-attribution-main">
							<a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" class="u-concealed"
								rel="nofollow">
								<xf:date time="{$post.post_date}"/>
							</a>
						</div>

						<ul class="message-attribution-opposite message-attribution-opposite--list">
							<xf:if is="$post.isUnread()">
								<li><span class="message-newIndicator">{{ phrase('new') }}</span></li>
							</xf:if>
							<li>
								<a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}"
									data-xf-init="share-tooltip" data-href="{{ link('posts/share', $post) }}"
									rel="nofollow">
									<xf:fa icon="fa-share-alt"/>
								</a>
							</li>
							<xf:if contentcheck="true">
								<li>
									<xf:contentcheck>
										<xf:macro template="bookmark_macros" name="link"
											arg-content="{$post}"
											arg-class="bookmarkLink--highlightable"
											arg-confirmUrl="{{ link('posts/bookmark', $post) }}"
											arg-showText="{{ false }}"/>
									</xf:contentcheck>
								</li>
							</xf:if>
							<xf:if is="!$hidePosition">
								<li>
									<a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" rel="nofollow">
										#{{ number($post.position + 1) }}
									</a>
								</li>
							</xf:if>
						</ul>
					</header>

					<div class="message-content js-messageContent">

						<xf:if is="$post.message_state == 'deleted'">
							<div class="messageNotice messageNotice--deleted">
								<xf:macro template="deletion_macros" name="notice" arg-log="{$post.DeletionLog}" />
							</div>
						<xf:elseif is="$post.message_state == 'moderated'" />
							<div class="messageNotice messageNotice--moderated">
								{{ phrase('this_message_is_awaiting_moderator_approval_and_is_invisible_to_normal') }}
							</div>
						</xf:if>
						<xf:if is="$post.warning_message">
							<div class="messageNotice messageNotice--warning">
								{$post.warning_message}
							</div>
						</xf:if>
						<xf:if is="$isIgnored">
							<div class="messageNotice messageNotice--ignored">
								{{ phrase('you_are_ignoring_content_by_this_member') }}
								<xf:showignored />
							</div>
						</xf:if>

						<div class="message-userContent lbContainer js-lbContainer {{ $isIgnored ? 'is-ignored' : '' }}"
							data-lb-id="post-{$post.post_id}"
							data-lb-caption-desc="{{ $post.User ? $post.User.username : $post.username }} &middot; {{ date_time($post.post_date) }}">

							<xf:if is="$post.isFirstPost()">
								<xf:macro template="custom_fields_macros" name="custom_fields_view"
									arg-type="threads"
									arg-group="before"
									arg-onlyInclude="{$thread.Forum.field_cache}"
									arg-set="{$thread.custom_fields}"
									arg-wrapperClass="message-fields message-fields--before" />
							</xf:if>

							                            <article class="message-body js-selectToQuote">
                                <xf:ad position="post_above_content" arg-post="{$post}" />
                                <xf:if is="!$xf.visitor.user_id">
                                    <xf:set var="$snippetPost" value="{{ snippet($post.message, 300) }}" />
                                    {{  bb_code($snippetPost, 'post', $post)  }}
                                    <div class="blockMessage blockMessage--important blockMessage--iconic">
                                       To view hidden content please, <a href="{{ link('login') }}" data-xf-click="overlay">{{ phrase('log_in_or_register_now') }}</a>
                                    </div>
                                <xf:else/>
                                    {{ bb_code($post.message, 'post', $post) }}
                                </xf:if>
                                <div class="js-selectToQuoteEnd">&nbsp;</div>
                                <xf:ad position="post_below_content" arg-post="{$post}" />
                            </article>

							<xf:if is="$post.isFirstPost()">
								<xf:macro template="custom_fields_macros" name="custom_fields_view"
									arg-type="threads"
									arg-group="after"
									arg-onlyInclude="{$thread.Forum.field_cache}"
									arg-set="{$thread.custom_fields}"
									arg-wrapperClass="message-fields message-fields--after" />
							</xf:if>

							<xf:if is="$post.attach_count">
								<xf:macro template="message_macros" name="attachments"
									arg-attachments="{$post.Attachments}"
									arg-message="{$post}"
									arg-canView="{{ $thread.canViewAttachments() }}" />
							</xf:if>
						</div>

						<xf:if is="$post.last_edit_date">
							<div class="message-lastEdit">
								<xf:if is="$post.user_id == $post.last_edit_user_id">
									{{ phrase('last_edited:') }} <xf:date time="{$post.last_edit_date}" />
								<xf:else />
									{{ phrase('last_edited_by_moderator:') }} <xf:date time="{$post.last_edit_date}" />
								</xf:if>
							</div>
						</xf:if>

						<xf:macro template="message_macros" name="signature" arg-user="{$post.User}" />
					</div>

					<footer class="message-footer">
						<xf:if contentcheck="true">
							<div class="message-actionBar actionBar">
								<xf:contentcheck>
									<xf:if contentcheck="true">
										<div class="actionBar-set actionBar-set--external">
										<xf:contentcheck>
											<xf:react content="{$post}" link="posts/react" list="< .js-post | .js-reactionsList" />

											<xf:if is="$thread.canReply()">
												<xf:set var="$quoteLink">{{ link('threads/reply', $thread, {'quote': $post.post_id}) }}</xf:set>

												<xf:if is="$xf.options.multiQuote">
													<a href="{$quoteLink}"
														class="actionBar-action actionBar-action--mq u-jsOnly js-multiQuote"
														title="{{ phrase('toggle_multi_quote_tooltip')|for_attr }}"
														data-message-id="{$post.post_id}"
														data-mq-action="add">{{ phrase('quote') }}</a>
												</xf:if>

												<a href="{$quoteLink}"
													class="actionBar-action actionBar-action--reply"
													title="{{ phrase('reply_quoting_this_message')|for_attr }}"
													data-xf-click="quote"
													data-quote-href="{{ link('posts/quote', $post) }}">{{ phrase('reply') }}</a>
											</xf:if>
										</xf:contentcheck>
										</div>
									</xf:if>

									<xf:if contentcheck="true">
										<div class="actionBar-set actionBar-set--internal">
										<xf:contentcheck>
											<xf:if is="$post.canUseInlineModeration()">
												<span class="actionBar-action actionBar-action--inlineMod">
													<xf:checkbox standalone="true">
														<xf:option value="{$post.post_id}" class="js-inlineModToggle"
															data-xf-init="tooltip"
															title="{{ phrase('select_for_moderation') }}"
															label="{{ phrase('select_for_moderation') }}"
															hiddenlabel="true" />
													</xf:checkbox>
												</span>
											</xf:if>

											<xf:if is="$post.canReport()">
												<a href="{{ link('posts/report', $post) }}"
													class="actionBar-action actionBar-action--report"
													data-xf-click="overlay">{{ phrase('report_verb') }}</a>
											</xf:if>

											<xf:set var="$hasActionBarMenu" value="{{ false }}" />
											<xf:if is="$post.canEdit()">
												<xf:js src="xf/message.js" min="1" />
												<a href="{{ link('posts/edit', $post) }}"
													class="actionBar-action actionBar-action--edit actionBar-action--menuItem"
													data-xf-click="quick-edit"
													data-editor-target="#js-post-{$post.post_id} .js-quickEditTarget"
													data-menu-closer="true">{{ phrase('edit') }}</a>

												<xf:set var="$hasActionBarMenu" value="{{ true }}" />
											</xf:if>
											<xf:if is="$post.edit_count && $post.canViewHistory()">
												<a href="{{ link('posts/history', $post) }}"
													class="actionBar-action actionBar-action--history actionBar-action--menuItem"
													data-xf-click="toggle"
													data-target="#js-post-{$post.post_id} .js-historyTarget"
													data-menu-closer="true">{{ phrase('history') }}</a>

												<xf:set var="$hasActionBarMenu" value="{{ true }}" />
											</xf:if>
											<xf:if is="$post.canDelete('soft')">
												<a href="{{ link('posts/delete', $post) }}"
													class="actionBar-action actionBar-action--delete actionBar-action--menuItem"
													data-xf-click="overlay">{{ phrase('delete') }}</a>

												<xf:set var="$hasActionBarMenu" value="{{ true }}" />
											</xf:if>
											<xf:if is="$post.message_state == 'deleted' AND $post.canUndelete()">
												<a href="{{ link('posts/undelete', $post) }}"
													class="actionBar-action actionBar-action--undelete actionBar-action--menuItem"
													data-xf-click="overlay">{{ phrase('undelete') }}</a>

												<xf:set var="$hasActionBarMenu" value="{{ true }}" />
											</xf:if>
											<xf:if is="$post.canCleanSpam()">
												<a href="{{ link('spam-cleaner', $post) }}"
													class="actionBar-action actionBar-action--spam actionBar-action--menuItem"
													data-xf-click="overlay">{{ phrase('spam') }}</a>

												<xf:set var="$hasActionBarMenu" value="{{ true }}" />
											</xf:if>
											<xf:if is="$xf.visitor.canViewIps() && $post.ip_id">
												<a href="{{ link('posts/ip', $post) }}"
													class="actionBar-action actionBar-action--ip actionBar-action--menuItem"
													data-xf-click="overlay">{{ phrase('ip') }}</a>

												<xf:set var="$hasActionBarMenu" value="{{ true }}" />
											</xf:if>
											<xf:if is="$post.canWarn()">

												<a href="{{ link('posts/warn', $post) }}"
													class="actionBar-action actionBar-action--warn actionBar-action--menuItem">{{ phrase('warn') }}</a>

												<xf:set var="$hasActionBarMenu" value="{{ true }}" />
											<xf:elseif is="$post.warning_id && $xf.visitor.canViewWarnings()" />
												<a href="{{ link('warnings', {'warning_id': $post.warning_id}) }}"
													class="actionBar-action actionBar-action--warn actionBar-action--menuItem"
													data-xf-click="overlay">{{ phrase('view_warning') }}</a>
												<xf:set var="$hasActionBarMenu" value="{{ true }}" />
											</xf:if>

											<xf:if is="$hasActionBarMenu">
												<a class="actionBar-action actionBar-action--menuTrigger"
													data-xf-click="menu"
													title="{{ phrase('more_options')|for_attr }}"
													role="button"
													tabindex="0"
													aria-expanded="false"
													aria-haspopup="true">&#8226;&#8226;&#8226;</a>

												<div class="menu" data-menu="menu" aria-hidden="true" data-menu-builder="actionBar">
													<div class="menu-content">
														<h4 class="menu-header">{{ phrase('more_options') }}</h4>
														<div class="js-menuBuilderTarget"></div>
													</div>
												</div>
											</xf:if>
										</xf:contentcheck>
										</div>
									</xf:if>

								</xf:contentcheck>
							</div>
						</xf:if>

						<div class="reactionsBar js-reactionsList {{ $post.reactions ? 'is-active' : '' }}">
							<xf:reactions content="{$post}" link="posts/reactions" />
						</div>

						<div class="js-historyTarget message-historyTarget toggleTarget" data-href="trigger-href"></div>
					</footer>
				</div>
			</div>
			{$extraAfterMessage|raw}
		</div>
	</article>

	<xf:ad position="post_below_container" arg-post="{$post}" />
</xf:macro>

<xf:macro name="post_deleted" arg-post="!" arg-thread="!">
	<xf:css src="message.less" />
	<div class="message message--deleted message--post{{ $post.isIgnored() ? ' is-ignored' : '' }}{{ $post.isUnread() ? ' is-unread' : '' }} js-post js-inlineModContainer"
		data-author="{{ $post.User.username ?: $post.username }}"
		data-content="post-{$post.post_id}">

		<span class="u-anchorTarget" id="post-{$post.post_id}"></span>
		<div class="message-inner">
			<div class="message-cell message-cell--user">
				<xf:macro template="message_macros" name="user_info" arg-user="{$post.User}" arg-fallbackName="{$post.username}" />
			</div>
			<div class="message-cell message-cell--main">
				<div class="message-attribution">
					<ul class="listInline listInline--bullet message-attribution-main">
						<li><a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" class="u-concealed" rel="nofollow"><xf:date time="{$post.post_date}" /></a></li>
						<li><xf:username user="{$post.User}" defaultname="{$post.username}" class="u-concealed" /></li>
					</ul>
				</div>

				<div class="messageNotice messageNotice--deleted">
					<xf:macro template="deletion_macros" name="notice" arg-log="{$post.DeletionLog}" />

					<a href="{{ link('posts/show', $post) }}" class="u-jsOnly" data-xf-click="inserter" data-replace="[data-content=post-{$post.post_id}]">{{ phrase('show...') }}</a>

					<xf:if is="$post.canUseInlineModeration()">
						<span style="display: none">
							<!-- this can be actioned on the full post -->
							<xf:checkbox standalone="true">
								<xf:option value="{$post.post_id}" class="js-inlineModToggle"
									hiddenlabel="true" />
							</xf:checkbox>
						</span>
					</xf:if>
				</div>
			</div>
		</div>
	</div>

	<xf:ad position="post_below_container" arg-post="{$post}" />
</xf:macro>
 

-re0

Active member
Registered
Joined
Mar 25, 2020
Messages
37
Points
18

Reputation:

@MesterPerfect One more thing bro, i am trying to hide content of specific node for " Unregistered / Unconfirmed " user group permission but when i click " view thread content to [no] " and click save then i receive this error below.

8IOLXht.png
 

Mystic

Member
Registered
Joined
Mar 16, 2021
Messages
17
Points
13

Reputation:

I used the same code but the message post still shows and under it it says
To view hidden content please ,Log in or register now.
Its still showing the post above this!
 
Top