• أعضاء وزوار معهد زين العربية، نود أن نعلمكم أن المعهد سيشهد في الفترة القادمة الكثير من التغيرات سواءا على المستوى الاداري او مستوى الاقسام، لذا نرجو منكم التعاون، وأي ملاحظات او استفسارات يرجى التواصل معنا عبر قسم الشكاوي و الإقتراحات و الطلبات ونشكركم على حسن تفهمكم وتعاونكم ،مع خالص الشكر والتقدير والاحترام من إدارة زين العربية.

طريقة إضافة زر أضف رد أعلى الموضوع كما في منتديات vb

MesterPerfect

:: مراقب زين العربية ::
طاقم الإدارة
28 يناير 2019
2,238
61
1,544
113
25
sohag, Egypt
mx-blind.org
بسم الله الرحمن الرحيم
أهلا بكم في شرح جديد وإن شاء الله يكون مفيد
شرحنا اليوم يتمثل في طريقة إضافة زر أضف رد أعلى الموضوع كما في منتديات vb
المعلومات
اسم الشرح: طريقة إضافة زر أضف رد أعلى الموضوع كما في منتديات vb
توافق الشرح: xf2.0/xf2.1
موقع مقدم الشرح: mx-blind.com
مقدم الشرح: أحمد بكر @MesterPerfect

الشرح
ندخل إلى لوحة التحكم -==> المظهر -==> القوالب

نختار الستايل الذي نريد تعديله

ثم نبحث عن قالب thread_view
ونبحث داخله عن الكود التالي
كود:
<xf:breadcrumb source="$forum.getBreadcrumbs()" />

ونضيف أسفله الكود التالي

كود:
<xf:pageaction>
	<xf:if is="$thread.canReply()">
		<xf:button href="{{ link('threads/reply', $thread) }}" class="button--cta uix_quickReply--button" icon="write">{{ phrase('reply') }}</xf:button>
	</xf:if>
</xf:pageaction>

نتيجة العمل

قبل التعديل

RpykCBt.png


بعد التعديل

ZP9rqWu.png


myNQUz3.png


وبهذا ينتهي شرحنا لهذا اليوم
ونلقاكم قريبا إن شاء الله
والسَلام عليكم ورحمة الله وبركاته
 
هلا
للأسف لم اجد کود
<xf:breadcrumb source="$forum.getBreadcrumbs()" />

فی قالب thread_view

. استخدم اصدار 2.1.11
احتمال الکود امغیرینه او ماشابه.
ممکن ترشدني ؟
 
هلا
للأسف لم اجد کود
<xf:breadcrumb source="$forum.getBreadcrumbs()" />

فی قالب thread_view

. استخدم اصدار 2.1.11
احتمال الکود امغیرینه او ماشابه.
ممکن ترشدني ؟
هلا بك
الكود موجود لأن الاستغناء عنه غير ممكن تقريبا
يريت لو تضع لنا محتوى القالب
 
محتویاب قالب thread_view

لإستایل Dimension

كود:
<xf:title page="{$page}">{{ prefix('thread', $thread, 'escaped') }}{$thread.title}</xf:title>
<xf:h1>{{ prefix('thread', $thread) }}{$thread.title}</xf:h1>

<xf:description meta="false">
    <ul class="listInline listInline--bullet">
        <li>
            <xf:fa icon="fa-user" title="{{ phrase('thread_starter')|for_attr }}" />
            <span class="u-srOnly">{{ phrase('thread_starter') }}</span>

            <xf:username user="{$thread.User}" defaultname="{$thread.username}" class="u-concealed" />
        </li>
        <li>
            <xf:fa icon="fa-clock" title="{{ phrase('start_date')|for_attr }}" />
            <span class="u-srOnly">{{ phrase('start_date') }}</span>

            <a href="{{ link('threads', $thread) }}" class="u-concealed"><xf:date time="{$thread.post_date}" /></a>
        </li>
        <xf:if is="$xf.options.enableTagging AND ($thread.canEditTags() OR $thread.tags)">
            <li>
                <xf:macro template="tag_macros" name="list"
                    arg-tags="{$thread.tags}"
                    arg-tagList="tagList--thread-{$thread.thread_id}"
                    arg-editLink="{{ $thread.canEditTags() ? link('threads/tags', $thread) : '' }}" />
            </li>
        </xf:if>
    </ul>
</xf:description>

<xf:set var="$fpSnippet" value="{{ snippet($firstPost.message, 0, {'stripBbCode': true}) }}" />

<xf:macro template="metadata_macros" name="metadata"
    arg-description="{$fpSnippet}"
    arg-shareUrl="{{ link('canonical:threads', $thread) }}"
    arg-canonicalUrl="{{ link('canonical:threads', $thread, {'page': $page}) }}" />

<xf:page option="ldJsonHtml">
    <xf:if is="$thread.User.avatar_highdpi">
        <xf:set var="$image">{$thread.User.getAvatarUrl('h', null, true)}</xf:set>
    <xf:elseif is="$thread.User.avatar_date" />
        <xf:set var="$image">{$thread.User.getAvatarUrl('l', null, true)}</xf:set>
    <xf:elseif is="property('publicMetadataLogoUrl')" />
        <xf:set var="$image">{{ base_url(property('publicMetadataLogoUrl'), true) }}</xf:set>
    </xf:if>
    <xf:if is="$image AND property('publicMetadataLogoUrl')">
        <script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "DiscussionForumPosting",
            "@id": "{{ link('canonical:threads', $thread)|escape('json') }}",
            "headline": "{$thread.title|escape('json')}",
            "articleBody": "{$fpSnippet|escape('json')}",
            "articleSection": "{$thread.Forum.Node.title|escape('json')}",
            "author": {
                "@type": "Person",
                "name": "{{ ($thread.User ? $thread.User.username : $thread.username)|escape('json') }}"
            },
            "datePublished": "{{ date($thread.post_date, 'Y-m-d')|escape('json') }}",
            "dateModified": "{{ date($thread.last_post_date, 'Y-m-d')|escape('json') }}",
            "image": "{$image|escape('json')}",
            "interactionStatistic": {
                "@type": "InteractionCounter",
                "interactionType": "https://schema.org/ReplyAction",
                "userInteractionCount": {$thread.reply_count}
            },
            "publisher": {
                "@type": "Organization",
                "name": "{$xf.options.boardTitle|escape('json')}",
                "logo": {
                    "@type": "ImageObject",
                    "url": "{{ base_url(property('publicMetadataLogoUrl'), true)|escape('json') }}"
                }
            },
            "mainEntityOfPage": {
                "@type": "WebPage",
                "@id": "{$xf.options.boardUrl}"
            }
        }
        </script>
    </xf:if>
</xf:page>

<!--[XF:content_top]-->

<xf:if is="$pendingApproval">
    <div class="blockMessage blockMessage--important">{{ phrase('content_submitted_displayed_pending_approval') }}</div>
</xf:if>

<xf:macro template="forum_macros" name="forum_page_options" arg-forum="{$forum}" arg-thread="{$thread}" />

<xf:breadcrumb source="$forum.getBreadcrumbs()" />

<xf:if is="$canInlineMod OR $thread.canUseInlineModeration()">
    <xf:js src="xf/inline_mod.js" min="1" />
</xf:if>

<xf:macro template="lightbox_macros" name="setup" arg-canViewAttachments="{$thread.canViewAttachments()}" />

<xf:if is="$poll">
    <xf:macro template="poll_macros" name="poll_block" arg-poll="{$poll}" />
</xf:if>

<xf:ad position="thread_view_above_messages" arg-thread="{$thread}" />

<div class="block block--messages" data-xf-init="{{ $canInlineMod ? 'inline-mod' : '' }}" data-type="post" data-href="{{ link('inline-mod') }}">

    <xf:macro name="thread_status" arg-thread="{$thread}" arg-wrapperClass="block-outer" />

    <div class="block-outer"><xf:trim>
        <xf:pagenav
            page="{$page}" perpage="{$perPage}" total="{{ $thread.reply_count + 1 }}"
            link="threads" data="{$thread}"
            wrapperclass="block-outer-main" />
        <xf:if contentcheck="true">
            <div class="block-outer-opposite">
                <div class="buttonGroup">
                <xf:contentcheck>
                    <xf:if is="$canInlineMod">
                        <xf:macro template="inline_mod_macros" name="button" />
                    </xf:if>
                    <xf:if is="$thread.discussion_state == 'deleted' AND $thread.canUndelete()">
                        <xf:button href="{{ link('threads/undelete', $thread) }}" class="button--link" overlay="true">
                            {{ phrase('undelete') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$thread.canApproveUnapprove() AND $thread.discussion_state == 'moderated'">
                        <xf:button href="{{ link('threads/approve', $thread) }}" class="button--link" overlay="true">
                            {{ phrase('approve') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$xf.visitor.user_id AND $thread.isUnread()">
                        <xf:button href="{{ $firstUnread ? ('#post-' . $firstUnread.post_id) : link('threads/unread', $thread, {'new': 1}) }}"
                            class="button--link"
                            data-xf-click="scroll-to"
                            data-silent="true">
                                {{ phrase('jump_to_new') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$thread.canWatch()">
                        <xf:button href="{{ link('threads/watch', $thread) }}" class="button--link"
                            data-xf-click="switch-overlay"
                            data-sk-watch="{{ phrase('watch') }}"
                            data-sk-unwatch="{{ phrase('unwatch') }}">
                            <xf:if is="{$thread.Watch.{$xf.visitor.user_id}}">
                                {{ phrase('unwatch') }}
                            <xf:else />
                                {{ phrase('watch') }}
                            </xf:if>
                        </xf:button>
                    </xf:if>

                    <xf:if contentcheck="true">
                        <div class="buttonGroup-buttonWrapper">
                            <xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true" title="{{ phrase('more_options') }}">&#8226;&#8226;&#8226;</xf:button>
                            <div class="menu" data-menu="menu" aria-hidden="true">
                                <div class="menu-content">
                                    <h4 class="menu-header">{{ phrase('more_options') }}</h4>
                                    <xf:contentcheck>
                                        <!--[XF:thread_tools_menu:top]-->
                                        <xf:if is="$thread.canEdit()">
                                            <a href="{{ link('threads/edit', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('edit_thread') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canLockUnlock()">
                                            <a href="{{ link('threads/quick-close', $thread) }}"
                                                class="menu-linkRow"
                                                data-xf-click="switch"
                                                data-menu-closer="true">

                                                <xf:if is="$thread.discussion_open">
                                                    {{ phrase('lock_thread') }}
                                                <xf:else />
                                                    {{ phrase('unlock_thread') }}
                                                </xf:if>
                                            </a>
                                        </xf:if>
                                        <xf:if is="$thread.canStickUnstick()">
                                            <a href="{{ link('threads/quick-stick', $thread) }}"
                                                class="menu-linkRow"
                                                data-xf-click="switch"
                                                data-menu-closer="true">

                                                <xf:if is="$thread.sticky">
                                                    {{ phrase('unstick_thread') }}
                                                <xf:else />
                                                    {{ phrase('stick_thread') }}
                                                </xf:if>
                                            </a>
                                        </xf:if>
                                        <xf:if is="$thread.canCreatePoll()">
                                            <a href="{{ link('threads/poll/create', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('create_poll') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canDelete('soft')">
                                            <a href="{{ link('threads/delete', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('delete_thread') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canMove()">
                                            <a href="{{ link('threads/move', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('move_thread') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canReplyBan()">
                                            <a href="{{ link('threads/reply-bans', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('manage_reply_bans') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canViewModeratorLogs()">
                                            <a href="{{ link('threads/moderator-actions', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('moderator_actions') }}</a>
                                        </xf:if>
                                        <!--[XF:thread_tools_menu:before_footer]-->
                                        <xf:if is="$thread.canUseInlineModeration()">
                                            <div class="menu-footer"
                                                data-xf-init="inline-mod"
                                                data-type="thread"
                                                data-href="{{ link('inline-mod') }}"
                                                data-toggle=".js-threadInlineModToggle">
                                                <xf:checkbox>
                                                    <xf:option class="js-threadInlineModToggle" value="{$thread.thread_id}">{{ phrase('select_for_moderation') }}</xf:option>
                                                </xf:checkbox>
                                            </div>
                                        </xf:if>
                                        <!--[XF:thread_tools_menu:bottom]-->
                                    </xf:contentcheck>
                                </div>
                            </div>
                        </div>
                    </xf:if>
                </xf:contentcheck>
                </div>
            </div>
        </xf:if>
    </xf:trim></div>

    <div class="block-outer js-threadStatusField"><xf:trim>
        <xf:if contentcheck="true">
            <div class="blockStatus blockStatus--info">
                <xf:contentcheck>
                    <xf:macro template="custom_fields_macros" name="custom_fields_view"
                        arg-type="threads"
                        arg-group="thread_status"
                        arg-onlyInclude="{$forum.field_cache}"
                        arg-set="{$thread.custom_fields}"
                        arg-wrapperClass="blockStatus-message" />
                </xf:contentcheck>
            </div>
        </xf:if>
    </xf:trim></div>

    <div class="block-container lbContainer"
        data-xf-init="lightbox{{ $xf.options.selectQuotable ? ' select-to-quote' : '' }}"
        data-message-selector=".js-post"
        data-lb-id="thread-{$thread.thread_id}"
        data-lb-universal="{$xf.options.lightBoxUniversal}">

        <div class="block-body js-replyNewMessageContainer">
            <xf:foreach loop="$posts" value="$post">
                <xf:if is="$post.message_state == 'deleted'">
                    <xf:macro template="post_macros" name="post_deleted"
                        arg-post="{$post}"
                        arg-thread="{$thread}" />
                <xf:else />
                    <xf:macro template="post_macros" name="post"
                        arg-post="{$post}"
                        arg-thread="{$thread}" />
                </xf:if>
            </xf:foreach>
        </div>
    </div>

    <xf:if contentcheck="true">
        <div class="block-outer block-outer--after">
            <xf:contentcheck>
                <xf:pagenav
                    page="{$page}" perpage="{$perPage}" total="{{ $thread.reply_count + 1 }}"
                    link="threads" data="{$thread}"
                    wrapperclass="block-outer-main" />
                <xf:showignored wrapperclass="block-outer-opposite" />
                <xf:if is="!$thread.canReply() AND $thread.discussion_state == 'visible' AND $thread.discussion_open">
                    <div class="block-outer-opposite">
                        <xf:if is="$xf.visitor.user_id">
                            <span class="button button--wrap is-disabled">
                                {{ phrase('no_permission_to_reply') }}
                                <!-- this is not interactive so shouldn't be a button element -->
                            </span>
                        <xf:else />
                            <xf:button href="{{ link('login') }}" class="button--link" overlay="true">
                                {{ phrase('log_in_or_register_to_reply') }}
                            </xf:button>
                        </xf:if>
                    </div>
                </xf:if>
            </xf:contentcheck>
        </div>
    </xf:if>

    <xf:macro name="thread_status" arg-thread="{$thread}" arg-wrapperClass="block-outer block-outer--after" />
</div>

<xf:ad position="thread_view_below_messages" arg-thread="{$thread}" />

<xf:if is="$thread.canReply()">
    <xf:form action="{{ link('threads/add-reply', $thread) }}"
        ajax="true"
        draft="{{ link('threads/draft', $thread) }}"
        class="block js-quickReply"
        data-xf-init="attachment-manager quick-reply{{ $xf.visitor.isShownCaptcha() ? ' guest-captcha' : '' }}"
        data-message-container="div[data-type='post'] .js-replyNewMessageContainer"
        data-preview-url="{{ link('threads/reply-preview', $thread, {'quick_reply': 1}) }}">

        <xf:js src="xf/message.js" min="1" />
        <xf:set var="$lastPost" value="{$posts|last}" />

        <div class="block-container">
            <div class="block-body">
                <xf:macro template="quick_reply_macros" name="body"
                    arg-message="{$thread.draft_reply.message}"
                    arg-attachmentData="{$attachmentData}"
                    arg-forceHash="{$thread.draft_reply.attachment_hash}"
                    arg-messageSelector=".js-post"
                    arg-multiQuoteHref="{{ link('threads/multi-quote', $thread) }}"
                    arg-multiQuoteStorageKey="multiQuoteThread"
                    arg-lastDate="{$lastPost.post_date}"
                    arg-lastKnownDate="{$thread.last_post_date}" />
            </div>
        </div>
    </xf:form>
</xf:if>

<div class="blockMessage blockMessage--none">
    <xf:macro template="share_page_macros" name="buttons" arg-iconic="{{ true }}" arg-label="{{ phrase('share:') }}" />
</div>

<xf:macro name="thread_status" arg-thread="!" arg-wrapperClass="">
    <xf:if contentcheck="true">
        <div class="{$wrapperClass}">
            <dl class="blockStatus">
                <dt>{{ phrase('status') }}</dt>
                <xf:contentcheck>
                    <xf:if is="$thread.discussion_state == 'deleted'">
                        <dd class="blockStatus-message blockStatus-message--deleted">
                            <xf:macro template="deletion_macros" name="notice" arg-log="{$thread.DeletionLog}" />
                        </dd>
                    <xf:elseif is="$thread.discussion_state == 'moderated'" />
                        <dd class="blockStatus-message blockStatus-message--moderated">
                            {{ phrase('awaiting_approval_before_being_displayed_publicly') }}
                        </dd>
                    </xf:if>
                    <xf:if is="!$thread.discussion_open">
                        <dd class="blockStatus-message blockStatus-message--locked">
                            {{ phrase('not_open_for_further_replies') }}
                        </dd>
                    </xf:if>
                </xf:contentcheck>
            </dl>
        </div>
    </xf:if>
</xf:macro>

<xf:widgetpos id="thread_view_sidebar" context-thread="{$thread}" position="sidebar" />


لإستایل الافتراضی:

كود:
<xf:title page="{$page}">{{ prefix('thread', $thread, 'escaped') }}{$thread.title}</xf:title>
<xf:h1>{{ prefix('thread', $thread) }}{$thread.title}</xf:h1>

<xf:description meta="false">
    <ul class="listInline listInline--bullet">
        <li>
            <xf:fa icon="fa-user" title="{{ phrase('thread_starter')|for_attr }}" />
            <span class="u-srOnly">{{ phrase('thread_starter') }}</span>

            <xf:username user="{$thread.User}" defaultname="{$thread.username}" class="u-concealed" />
        </li>
        <li>
            <xf:fa icon="fa-clock" title="{{ phrase('start_date')|for_attr }}" />
            <span class="u-srOnly">{{ phrase('start_date') }}</span>

            <a href="{{ link('threads', $thread) }}" class="u-concealed"><xf:date time="{$thread.post_date}" /></a>
        </li>
        <xf:if is="$xf.options.enableTagging AND ($thread.canEditTags() OR $thread.tags)">
            <li>
                <xf:macro template="tag_macros" name="list"
                    arg-tags="{$thread.tags}"
                    arg-tagList="tagList--thread-{$thread.thread_id}"
                    arg-editLink="{{ $thread.canEditTags() ? link('threads/tags', $thread) : '' }}" />
            </li>
        </xf:if>
    </ul>
</xf:description>

<xf:set var="$fpSnippet" value="{{ snippet($firstPost.message, 0, {'stripBbCode': true}) }}" />

<xf:macro template="metadata_macros" name="metadata"
    arg-description="{$fpSnippet}"
    arg-shareUrl="{{ link('canonical:threads', $thread) }}"
    arg-canonicalUrl="{{ link('canonical:threads', $thread, {'page': $page}) }}" />

<xf:page option="ldJsonHtml">
    <xf:if is="$thread.User.avatar_highdpi">
        <xf:set var="$image">{$thread.User.getAvatarUrl('h', null, true)}</xf:set>
    <xf:elseif is="$thread.User.avatar_date" />
        <xf:set var="$image">{$thread.User.getAvatarUrl('l', null, true)}</xf:set>
    <xf:elseif is="property('publicMetadataLogoUrl')" />
        <xf:set var="$image">{{ base_url(property('publicMetadataLogoUrl'), true) }}</xf:set>
    </xf:if>
    <xf:if is="$image AND property('publicMetadataLogoUrl')">
        <script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "DiscussionForumPosting",
            "@id": "{{ link('canonical:threads', $thread)|escape('json') }}",
            "headline": "{$thread.title|escape('json')}",
            "articleBody": "{$fpSnippet|escape('json')}",
            "articleSection": "{$thread.Forum.Node.title|escape('json')}",
            "author": {
                "@type": "Person",
                "name": "{{ ($thread.User ? $thread.User.username : $thread.username)|escape('json') }}"
            },
            "datePublished": "{{ date($thread.post_date, 'Y-m-d')|escape('json') }}",
            "dateModified": "{{ date($thread.last_post_date, 'Y-m-d')|escape('json') }}",
            "image": "{$image|escape('json')}",
            "interactionStatistic": {
                "@type": "InteractionCounter",
                "interactionType": "https://schema.org/ReplyAction",
                "userInteractionCount": {$thread.reply_count}
            },
            "publisher": {
                "@type": "Organization",
                "name": "{$xf.options.boardTitle|escape('json')}",
                "logo": {
                    "@type": "ImageObject",
                    "url": "{{ base_url(property('publicMetadataLogoUrl'), true)|escape('json') }}"
                }
            },
            "mainEntityOfPage": {
                "@type": "WebPage",
                "@id": "{$xf.options.boardUrl}"
            }
        }
        </script>
    </xf:if>
</xf:page>

<!--[XF:content_top]-->

<xf:if is="$pendingApproval">
    <div class="blockMessage blockMessage--important">{{ phrase('content_submitted_displayed_pending_approval') }}</div>
</xf:if>

<xf:macro template="forum_macros" name="forum_page_options" arg-forum="{$forum}" arg-thread="{$thread}" />

<xf:breadcrumb source="$forum.getBreadcrumbs()" />

<xf:if is="$canInlineMod OR $thread.canUseInlineModeration()">
    <xf:js src="xf/inline_mod.js" min="1" />
</xf:if>

<xf:macro template="lightbox_macros" name="setup" arg-canViewAttachments="{$thread.canViewAttachments()}" />

<xf:if is="$poll">
    <xf:macro template="poll_macros" name="poll_block" arg-poll="{$poll}" />
</xf:if>

<xf:ad position="thread_view_above_messages" arg-thread="{$thread}" />

<div class="block block--messages" data-xf-init="{{ $canInlineMod ? 'inline-mod' : '' }}" data-type="post" data-href="{{ link('inline-mod') }}">

    <xf:macro name="thread_status" arg-thread="{$thread}" arg-wrapperClass="block-outer" />

    <div class="block-outer"><xf:trim>
        <xf:pagenav
            page="{$page}" perpage="{$perPage}" total="{{ $thread.reply_count + 1 }}"
            link="threads" data="{$thread}"
            wrapperclass="block-outer-main" />
        <xf:if contentcheck="true">
            <div class="block-outer-opposite">
                <div class="buttonGroup">
                <xf:contentcheck>
                    <xf:if is="$canInlineMod">
                        <xf:macro template="inline_mod_macros" name="button" />
                    </xf:if>
                    <xf:if is="$thread.discussion_state == 'deleted' AND $thread.canUndelete()">
                        <xf:button href="{{ link('threads/undelete', $thread) }}" class="button--link" overlay="true">
                            {{ phrase('undelete') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$thread.canApproveUnapprove() AND $thread.discussion_state == 'moderated'">
                        <xf:button href="{{ link('threads/approve', $thread) }}" class="button--link" overlay="true">
                            {{ phrase('approve') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$xf.visitor.user_id AND $thread.isUnread()">
                        <xf:button href="{{ $firstUnread ? ('#post-' . $firstUnread.post_id) : link('threads/unread', $thread, {'new': 1}) }}"
                            class="button--link"
                            data-xf-click="scroll-to"
                            data-silent="true">
                                {{ phrase('jump_to_new') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$thread.canWatch()">
                        <xf:button href="{{ link('threads/watch', $thread) }}" class="button--link"
                            data-xf-click="switch-overlay"
                            data-sk-watch="{{ phrase('watch') }}"
                            data-sk-unwatch="{{ phrase('unwatch') }}">
                            <xf:if is="{$thread.Watch.{$xf.visitor.user_id}}">
                                {{ phrase('unwatch') }}
                            <xf:else />
                                {{ phrase('watch') }}
                            </xf:if>
                        </xf:button>
                    </xf:if>

                    <xf:if contentcheck="true">
                        <div class="buttonGroup-buttonWrapper">
                            <xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true" title="{{ phrase('more_options') }}">&#8226;&#8226;&#8226;</xf:button>
                            <div class="menu" data-menu="menu" aria-hidden="true">
                                <div class="menu-content">
                                    <h4 class="menu-header">{{ phrase('more_options') }}</h4>
                                    <xf:contentcheck>
                                        <!--[XF:thread_tools_menu:top]-->
                                        <xf:if is="$thread.canEdit()">
                                            <a href="{{ link('threads/edit', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('edit_thread') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canLockUnlock()">
                                            <a href="{{ link('threads/quick-close', $thread) }}"
                                                class="menu-linkRow"
                                                data-xf-click="switch"
                                                data-menu-closer="true">

                                                <xf:if is="$thread.discussion_open">
                                                    {{ phrase('lock_thread') }}
                                                <xf:else />
                                                    {{ phrase('unlock_thread') }}
                                                </xf:if>
                                            </a>
                                        </xf:if>
                                        <xf:if is="$thread.canStickUnstick()">
                                            <a href="{{ link('threads/quick-stick', $thread) }}"
                                                class="menu-linkRow"
                                                data-xf-click="switch"
                                                data-menu-closer="true">

                                                <xf:if is="$thread.sticky">
                                                    {{ phrase('unstick_thread') }}
                                                <xf:else />
                                                    {{ phrase('stick_thread') }}
                                                </xf:if>
                                            </a>
                                        </xf:if>
                                        <xf:if is="$thread.canCreatePoll()">
                                            <a href="{{ link('threads/poll/create', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('create_poll') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canDelete('soft')">
                                            <a href="{{ link('threads/delete', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('delete_thread') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canMove()">
                                            <a href="{{ link('threads/move', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('move_thread') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canReplyBan()">
                                            <a href="{{ link('threads/reply-bans', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('manage_reply_bans') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canViewModeratorLogs()">
                                            <a href="{{ link('threads/moderator-actions', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('moderator_actions') }}</a>
                                        </xf:if>
                                        <!--[XF:thread_tools_menu:before_footer]-->
                                        <xf:if is="$thread.canUseInlineModeration()">
                                            <div class="menu-footer"
                                                data-xf-init="inline-mod"
                                                data-type="thread"
                                                data-href="{{ link('inline-mod') }}"
                                                data-toggle=".js-threadInlineModToggle">
                                                <xf:checkbox>
                                                    <xf:option class="js-threadInlineModToggle" value="{$thread.thread_id}">{{ phrase('select_for_moderation') }}</xf:option>
                                                </xf:checkbox>
                                            </div>
                                        </xf:if>
                                        <!--[XF:thread_tools_menu:bottom]-->
                                    </xf:contentcheck>
                                </div>
                            </div>
                        </div>
                    </xf:if>
                </xf:contentcheck>
                </div>
            </div>
        </xf:if>
    </xf:trim></div>

    <div class="block-outer js-threadStatusField"><xf:trim>
        <xf:if contentcheck="true">
            <div class="blockStatus blockStatus--info">
                <xf:contentcheck>
                    <xf:macro template="custom_fields_macros" name="custom_fields_view"
                        arg-type="threads"
                        arg-group="thread_status"
                        arg-onlyInclude="{$forum.field_cache}"
                        arg-set="{$thread.custom_fields}"
                        arg-wrapperClass="blockStatus-message" />
                </xf:contentcheck>
            </div>
        </xf:if>
    </xf:trim></div>

    <div class="block-container lbContainer"
        data-xf-init="lightbox{{ $xf.options.selectQuotable ? ' select-to-quote' : '' }}"
        data-message-selector=".js-post"
        data-lb-id="thread-{$thread.thread_id}"
        data-lb-universal="{$xf.options.lightBoxUniversal}">

        <div class="block-body js-replyNewMessageContainer">
            <xf:foreach loop="$posts" value="$post">
                <xf:if is="$post.message_state == 'deleted'">
                    <xf:macro template="post_macros" name="post_deleted"
                        arg-post="{$post}"
                        arg-thread="{$thread}" />
                <xf:else />
                    <xf:macro template="post_macros" name="post"
                        arg-post="{$post}"
                        arg-thread="{$thread}" />
                </xf:if>
            </xf:foreach>
        </div>
    </div>

    <xf:if contentcheck="true">
        <div class="block-outer block-outer--after">
            <xf:contentcheck>
                <xf:pagenav
                    page="{$page}" perpage="{$perPage}" total="{{ $thread.reply_count + 1 }}"
                    link="threads" data="{$thread}"
                    wrapperclass="block-outer-main" />
                <xf:showignored wrapperclass="block-outer-opposite" />
                <xf:if is="!$thread.canReply() AND $thread.discussion_state == 'visible' AND $thread.discussion_open">
                    <div class="block-outer-opposite">
                        <xf:if is="$xf.visitor.user_id">
                            <span class="button button--wrap is-disabled">
                                {{ phrase('no_permission_to_reply') }}
                                <!-- this is not interactive so shouldn't be a button element -->
                            </span>
                        <xf:else />
                            <xf:button href="{{ link('login') }}" class="button--link" overlay="true">
                                {{ phrase('log_in_or_register_to_reply') }}
                            </xf:button>
                        </xf:if>
                    </div>
                </xf:if>
            </xf:contentcheck>
        </div>
    </xf:if>

    <xf:macro name="thread_status" arg-thread="{$thread}" arg-wrapperClass="block-outer block-outer--after" />
</div>

<xf:ad position="thread_view_below_messages" arg-thread="{$thread}" />

<xf:if is="$thread.canReply()">
    <xf:form action="{{ link('threads/add-reply', $thread) }}"
        ajax="true"
        draft="{{ link('threads/draft', $thread) }}"
        class="block js-quickReply"
        data-xf-init="attachment-manager quick-reply{{ $xf.visitor.isShownCaptcha() ? ' guest-captcha' : '' }}"
        data-message-container="div[data-type='post'] .js-replyNewMessageContainer"
        data-preview-url="{{ link('threads/reply-preview', $thread, {'quick_reply': 1}) }}">

        <xf:js src="xf/message.js" min="1" />
        <xf:set var="$lastPost" value="{$posts|last}" />

        <div class="block-container">
            <div class="block-body">
                <xf:macro template="quick_reply_macros" name="body"
                    arg-message="{$thread.draft_reply.message}"
                    arg-attachmentData="{$attachmentData}"
                    arg-forceHash="{$thread.draft_reply.attachment_hash}"
                    arg-messageSelector=".js-post"
                    arg-multiQuoteHref="{{ link('threads/multi-quote', $thread) }}"
                    arg-multiQuoteStorageKey="multiQuoteThread"
                    arg-lastDate="{$lastPost.post_date}"
                    arg-lastKnownDate="{$thread.last_post_date}" />
            </div>
        </div>
    </xf:form>
</xf:if>

<div class="blockMessage blockMessage--none">
    <xf:macro template="share_page_macros" name="buttons" arg-iconic="{{ true }}" arg-label="{{ phrase('share:') }}" />
</div>

<xf:macro name="thread_status" arg-thread="!" arg-wrapperClass="">
    <xf:if contentcheck="true">
        <div class="{$wrapperClass}">
            <dl class="blockStatus">
                <dt>{{ phrase('status') }}</dt>
                <xf:contentcheck>
                    <xf:if is="$thread.discussion_state == 'deleted'">
                        <dd class="blockStatus-message blockStatus-message--deleted">
                            <xf:macro template="deletion_macros" name="notice" arg-log="{$thread.DeletionLog}" />
                        </dd>
                    <xf:elseif is="$thread.discussion_state == 'moderated'" />
                        <dd class="blockStatus-message blockStatus-message--moderated">
                            {{ phrase('awaiting_approval_before_being_displayed_publicly') }}
                        </dd>
                    </xf:if>
                    <xf:if is="!$thread.discussion_open">
                        <dd class="blockStatus-message blockStatus-message--locked">
                            {{ phrase('not_open_for_further_replies') }}
                        </dd>
                    </xf:if>
                </xf:contentcheck>
            </dl>
        </div>
    </xf:if>
</xf:macro>

<xf:widgetpos id="thread_view_sidebar" context-thread="{$thread}" position="sidebar" />
 
محتویاب قالب thread_view

لإستایل Dimension

كود:
<xf:title page="{$page}">{{ prefix('thread', $thread, 'escaped') }}{$thread.title}</xf:title>
<xf:h1>{{ prefix('thread', $thread) }}{$thread.title}</xf:h1>

<xf:description meta="false">
    <ul class="listInline listInline--bullet">
        <li>
            <xf:fa icon="fa-user" title="{{ phrase('thread_starter')|for_attr }}" />
            <span class="u-srOnly">{{ phrase('thread_starter') }}</span>

            <xf:username user="{$thread.User}" defaultname="{$thread.username}" class="u-concealed" />
        </li>
        <li>
            <xf:fa icon="fa-clock" title="{{ phrase('start_date')|for_attr }}" />
            <span class="u-srOnly">{{ phrase('start_date') }}</span>

            <a href="{{ link('threads', $thread) }}" class="u-concealed"><xf:date time="{$thread.post_date}" /></a>
        </li>
        <xf:if is="$xf.options.enableTagging AND ($thread.canEditTags() OR $thread.tags)">
            <li>
                <xf:macro template="tag_macros" name="list"
                    arg-tags="{$thread.tags}"
                    arg-tagList="tagList--thread-{$thread.thread_id}"
                    arg-editLink="{{ $thread.canEditTags() ? link('threads/tags', $thread) : '' }}" />
            </li>
        </xf:if>
    </ul>
</xf:description>

<xf:set var="$fpSnippet" value="{{ snippet($firstPost.message, 0, {'stripBbCode': true}) }}" />

<xf:macro template="metadata_macros" name="metadata"
    arg-description="{$fpSnippet}"
    arg-shareUrl="{{ link('canonical:threads', $thread) }}"
    arg-canonicalUrl="{{ link('canonical:threads', $thread, {'page': $page}) }}" />

<xf:page option="ldJsonHtml">
    <xf:if is="$thread.User.avatar_highdpi">
        <xf:set var="$image">{$thread.User.getAvatarUrl('h', null, true)}</xf:set>
    <xf:elseif is="$thread.User.avatar_date" />
        <xf:set var="$image">{$thread.User.getAvatarUrl('l', null, true)}</xf:set>
    <xf:elseif is="property('publicMetadataLogoUrl')" />
        <xf:set var="$image">{{ base_url(property('publicMetadataLogoUrl'), true) }}</xf:set>
    </xf:if>
    <xf:if is="$image AND property('publicMetadataLogoUrl')">
        <script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "DiscussionForumPosting",
            "@id": "{{ link('canonical:threads', $thread)|escape('json') }}",
            "headline": "{$thread.title|escape('json')}",
            "articleBody": "{$fpSnippet|escape('json')}",
            "articleSection": "{$thread.Forum.Node.title|escape('json')}",
            "author": {
                "@type": "Person",
                "name": "{{ ($thread.User ? $thread.User.username : $thread.username)|escape('json') }}"
            },
            "datePublished": "{{ date($thread.post_date, 'Y-m-d')|escape('json') }}",
            "dateModified": "{{ date($thread.last_post_date, 'Y-m-d')|escape('json') }}",
            "image": "{$image|escape('json')}",
            "interactionStatistic": {
                "@type": "InteractionCounter",
                "interactionType": "https://schema.org/ReplyAction",
                "userInteractionCount": {$thread.reply_count}
            },
            "publisher": {
                "@type": "Organization",
                "name": "{$xf.options.boardTitle|escape('json')}",
                "logo": {
                    "@type": "ImageObject",
                    "url": "{{ base_url(property('publicMetadataLogoUrl'), true)|escape('json') }}"
                }
            },
            "mainEntityOfPage": {
                "@type": "WebPage",
                "@id": "{$xf.options.boardUrl}"
            }
        }
        </script>
    </xf:if>
</xf:page>

<!--[XF:content_top]-->

<xf:if is="$pendingApproval">
    <div class="blockMessage blockMessage--important">{{ phrase('content_submitted_displayed_pending_approval') }}</div>
</xf:if>

<xf:macro template="forum_macros" name="forum_page_options" arg-forum="{$forum}" arg-thread="{$thread}" />

<xf:breadcrumb source="$forum.getBreadcrumbs()" />

<xf:if is="$canInlineMod OR $thread.canUseInlineModeration()">
    <xf:js src="xf/inline_mod.js" min="1" />
</xf:if>

<xf:macro template="lightbox_macros" name="setup" arg-canViewAttachments="{$thread.canViewAttachments()}" />

<xf:if is="$poll">
    <xf:macro template="poll_macros" name="poll_block" arg-poll="{$poll}" />
</xf:if>

<xf:ad position="thread_view_above_messages" arg-thread="{$thread}" />

<div class="block block--messages" data-xf-init="{{ $canInlineMod ? 'inline-mod' : '' }}" data-type="post" data-href="{{ link('inline-mod') }}">

    <xf:macro name="thread_status" arg-thread="{$thread}" arg-wrapperClass="block-outer" />

    <div class="block-outer"><xf:trim>
        <xf:pagenav
            page="{$page}" perpage="{$perPage}" total="{{ $thread.reply_count + 1 }}"
            link="threads" data="{$thread}"
            wrapperclass="block-outer-main" />
        <xf:if contentcheck="true">
            <div class="block-outer-opposite">
                <div class="buttonGroup">
                <xf:contentcheck>
                    <xf:if is="$canInlineMod">
                        <xf:macro template="inline_mod_macros" name="button" />
                    </xf:if>
                    <xf:if is="$thread.discussion_state == 'deleted' AND $thread.canUndelete()">
                        <xf:button href="{{ link('threads/undelete', $thread) }}" class="button--link" overlay="true">
                            {{ phrase('undelete') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$thread.canApproveUnapprove() AND $thread.discussion_state == 'moderated'">
                        <xf:button href="{{ link('threads/approve', $thread) }}" class="button--link" overlay="true">
                            {{ phrase('approve') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$xf.visitor.user_id AND $thread.isUnread()">
                        <xf:button href="{{ $firstUnread ? ('#post-' . $firstUnread.post_id) : link('threads/unread', $thread, {'new': 1}) }}"
                            class="button--link"
                            data-xf-click="scroll-to"
                            data-silent="true">
                                {{ phrase('jump_to_new') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$thread.canWatch()">
                        <xf:button href="{{ link('threads/watch', $thread) }}" class="button--link"
                            data-xf-click="switch-overlay"
                            data-sk-watch="{{ phrase('watch') }}"
                            data-sk-unwatch="{{ phrase('unwatch') }}">
                            <xf:if is="{$thread.Watch.{$xf.visitor.user_id}}">
                                {{ phrase('unwatch') }}
                            <xf:else />
                                {{ phrase('watch') }}
                            </xf:if>
                        </xf:button>
                    </xf:if>

                    <xf:if contentcheck="true">
                        <div class="buttonGroup-buttonWrapper">
                            <xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true" title="{{ phrase('more_options') }}">&#8226;&#8226;&#8226;</xf:button>
                            <div class="menu" data-menu="menu" aria-hidden="true">
                                <div class="menu-content">
                                    <h4 class="menu-header">{{ phrase('more_options') }}</h4>
                                    <xf:contentcheck>
                                        <!--[XF:thread_tools_menu:top]-->
                                        <xf:if is="$thread.canEdit()">
                                            <a href="{{ link('threads/edit', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('edit_thread') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canLockUnlock()">
                                            <a href="{{ link('threads/quick-close', $thread) }}"
                                                class="menu-linkRow"
                                                data-xf-click="switch"
                                                data-menu-closer="true">

                                                <xf:if is="$thread.discussion_open">
                                                    {{ phrase('lock_thread') }}
                                                <xf:else />
                                                    {{ phrase('unlock_thread') }}
                                                </xf:if>
                                            </a>
                                        </xf:if>
                                        <xf:if is="$thread.canStickUnstick()">
                                            <a href="{{ link('threads/quick-stick', $thread) }}"
                                                class="menu-linkRow"
                                                data-xf-click="switch"
                                                data-menu-closer="true">

                                                <xf:if is="$thread.sticky">
                                                    {{ phrase('unstick_thread') }}
                                                <xf:else />
                                                    {{ phrase('stick_thread') }}
                                                </xf:if>
                                            </a>
                                        </xf:if>
                                        <xf:if is="$thread.canCreatePoll()">
                                            <a href="{{ link('threads/poll/create', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('create_poll') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canDelete('soft')">
                                            <a href="{{ link('threads/delete', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('delete_thread') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canMove()">
                                            <a href="{{ link('threads/move', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('move_thread') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canReplyBan()">
                                            <a href="{{ link('threads/reply-bans', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('manage_reply_bans') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canViewModeratorLogs()">
                                            <a href="{{ link('threads/moderator-actions', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('moderator_actions') }}</a>
                                        </xf:if>
                                        <!--[XF:thread_tools_menu:before_footer]-->
                                        <xf:if is="$thread.canUseInlineModeration()">
                                            <div class="menu-footer"
                                                data-xf-init="inline-mod"
                                                data-type="thread"
                                                data-href="{{ link('inline-mod') }}"
                                                data-toggle=".js-threadInlineModToggle">
                                                <xf:checkbox>
                                                    <xf:option class="js-threadInlineModToggle" value="{$thread.thread_id}">{{ phrase('select_for_moderation') }}</xf:option>
                                                </xf:checkbox>
                                            </div>
                                        </xf:if>
                                        <!--[XF:thread_tools_menu:bottom]-->
                                    </xf:contentcheck>
                                </div>
                            </div>
                        </div>
                    </xf:if>
                </xf:contentcheck>
                </div>
            </div>
        </xf:if>
    </xf:trim></div>

    <div class="block-outer js-threadStatusField"><xf:trim>
        <xf:if contentcheck="true">
            <div class="blockStatus blockStatus--info">
                <xf:contentcheck>
                    <xf:macro template="custom_fields_macros" name="custom_fields_view"
                        arg-type="threads"
                        arg-group="thread_status"
                        arg-onlyInclude="{$forum.field_cache}"
                        arg-set="{$thread.custom_fields}"
                        arg-wrapperClass="blockStatus-message" />
                </xf:contentcheck>
            </div>
        </xf:if>
    </xf:trim></div>

    <div class="block-container lbContainer"
        data-xf-init="lightbox{{ $xf.options.selectQuotable ? ' select-to-quote' : '' }}"
        data-message-selector=".js-post"
        data-lb-id="thread-{$thread.thread_id}"
        data-lb-universal="{$xf.options.lightBoxUniversal}">

        <div class="block-body js-replyNewMessageContainer">
            <xf:foreach loop="$posts" value="$post">
                <xf:if is="$post.message_state == 'deleted'">
                    <xf:macro template="post_macros" name="post_deleted"
                        arg-post="{$post}"
                        arg-thread="{$thread}" />
                <xf:else />
                    <xf:macro template="post_macros" name="post"
                        arg-post="{$post}"
                        arg-thread="{$thread}" />
                </xf:if>
            </xf:foreach>
        </div>
    </div>

    <xf:if contentcheck="true">
        <div class="block-outer block-outer--after">
            <xf:contentcheck>
                <xf:pagenav
                    page="{$page}" perpage="{$perPage}" total="{{ $thread.reply_count + 1 }}"
                    link="threads" data="{$thread}"
                    wrapperclass="block-outer-main" />
                <xf:showignored wrapperclass="block-outer-opposite" />
                <xf:if is="!$thread.canReply() AND $thread.discussion_state == 'visible' AND $thread.discussion_open">
                    <div class="block-outer-opposite">
                        <xf:if is="$xf.visitor.user_id">
                            <span class="button button--wrap is-disabled">
                                {{ phrase('no_permission_to_reply') }}
                                <!-- this is not interactive so shouldn't be a button element -->
                            </span>
                        <xf:else />
                            <xf:button href="{{ link('login') }}" class="button--link" overlay="true">
                                {{ phrase('log_in_or_register_to_reply') }}
                            </xf:button>
                        </xf:if>
                    </div>
                </xf:if>
            </xf:contentcheck>
        </div>
    </xf:if>

    <xf:macro name="thread_status" arg-thread="{$thread}" arg-wrapperClass="block-outer block-outer--after" />
</div>

<xf:ad position="thread_view_below_messages" arg-thread="{$thread}" />

<xf:if is="$thread.canReply()">
    <xf:form action="{{ link('threads/add-reply', $thread) }}"
        ajax="true"
        draft="{{ link('threads/draft', $thread) }}"
        class="block js-quickReply"
        data-xf-init="attachment-manager quick-reply{{ $xf.visitor.isShownCaptcha() ? ' guest-captcha' : '' }}"
        data-message-container="div[data-type='post'] .js-replyNewMessageContainer"
        data-preview-url="{{ link('threads/reply-preview', $thread, {'quick_reply': 1}) }}">

        <xf:js src="xf/message.js" min="1" />
        <xf:set var="$lastPost" value="{$posts|last}" />

        <div class="block-container">
            <div class="block-body">
                <xf:macro template="quick_reply_macros" name="body"
                    arg-message="{$thread.draft_reply.message}"
                    arg-attachmentData="{$attachmentData}"
                    arg-forceHash="{$thread.draft_reply.attachment_hash}"
                    arg-messageSelector=".js-post"
                    arg-multiQuoteHref="{{ link('threads/multi-quote', $thread) }}"
                    arg-multiQuoteStorageKey="multiQuoteThread"
                    arg-lastDate="{$lastPost.post_date}"
                    arg-lastKnownDate="{$thread.last_post_date}" />
            </div>
        </div>
    </xf:form>
</xf:if>

<div class="blockMessage blockMessage--none">
    <xf:macro template="share_page_macros" name="buttons" arg-iconic="{{ true }}" arg-label="{{ phrase('share:') }}" />
</div>

<xf:macro name="thread_status" arg-thread="!" arg-wrapperClass="">
    <xf:if contentcheck="true">
        <div class="{$wrapperClass}">
            <dl class="blockStatus">
                <dt>{{ phrase('status') }}</dt>
                <xf:contentcheck>
                    <xf:if is="$thread.discussion_state == 'deleted'">
                        <dd class="blockStatus-message blockStatus-message--deleted">
                            <xf:macro template="deletion_macros" name="notice" arg-log="{$thread.DeletionLog}" />
                        </dd>
                    <xf:elseif is="$thread.discussion_state == 'moderated'" />
                        <dd class="blockStatus-message blockStatus-message--moderated">
                            {{ phrase('awaiting_approval_before_being_displayed_publicly') }}
                        </dd>
                    </xf:if>
                    <xf:if is="!$thread.discussion_open">
                        <dd class="blockStatus-message blockStatus-message--locked">
                            {{ phrase('not_open_for_further_replies') }}
                        </dd>
                    </xf:if>
                </xf:contentcheck>
            </dl>
        </div>
    </xf:if>
</xf:macro>

<xf:widgetpos id="thread_view_sidebar" context-thread="{$thread}" position="sidebar" />


لإستایل الافتراضی:

كود:
<xf:title page="{$page}">{{ prefix('thread', $thread, 'escaped') }}{$thread.title}</xf:title>
<xf:h1>{{ prefix('thread', $thread) }}{$thread.title}</xf:h1>

<xf:description meta="false">
    <ul class="listInline listInline--bullet">
        <li>
            <xf:fa icon="fa-user" title="{{ phrase('thread_starter')|for_attr }}" />
            <span class="u-srOnly">{{ phrase('thread_starter') }}</span>

            <xf:username user="{$thread.User}" defaultname="{$thread.username}" class="u-concealed" />
        </li>
        <li>
            <xf:fa icon="fa-clock" title="{{ phrase('start_date')|for_attr }}" />
            <span class="u-srOnly">{{ phrase('start_date') }}</span>

            <a href="{{ link('threads', $thread) }}" class="u-concealed"><xf:date time="{$thread.post_date}" /></a>
        </li>
        <xf:if is="$xf.options.enableTagging AND ($thread.canEditTags() OR $thread.tags)">
            <li>
                <xf:macro template="tag_macros" name="list"
                    arg-tags="{$thread.tags}"
                    arg-tagList="tagList--thread-{$thread.thread_id}"
                    arg-editLink="{{ $thread.canEditTags() ? link('threads/tags', $thread) : '' }}" />
            </li>
        </xf:if>
    </ul>
</xf:description>

<xf:set var="$fpSnippet" value="{{ snippet($firstPost.message, 0, {'stripBbCode': true}) }}" />

<xf:macro template="metadata_macros" name="metadata"
    arg-description="{$fpSnippet}"
    arg-shareUrl="{{ link('canonical:threads', $thread) }}"
    arg-canonicalUrl="{{ link('canonical:threads', $thread, {'page': $page}) }}" />

<xf:page option="ldJsonHtml">
    <xf:if is="$thread.User.avatar_highdpi">
        <xf:set var="$image">{$thread.User.getAvatarUrl('h', null, true)}</xf:set>
    <xf:elseif is="$thread.User.avatar_date" />
        <xf:set var="$image">{$thread.User.getAvatarUrl('l', null, true)}</xf:set>
    <xf:elseif is="property('publicMetadataLogoUrl')" />
        <xf:set var="$image">{{ base_url(property('publicMetadataLogoUrl'), true) }}</xf:set>
    </xf:if>
    <xf:if is="$image AND property('publicMetadataLogoUrl')">
        <script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "DiscussionForumPosting",
            "@id": "{{ link('canonical:threads', $thread)|escape('json') }}",
            "headline": "{$thread.title|escape('json')}",
            "articleBody": "{$fpSnippet|escape('json')}",
            "articleSection": "{$thread.Forum.Node.title|escape('json')}",
            "author": {
                "@type": "Person",
                "name": "{{ ($thread.User ? $thread.User.username : $thread.username)|escape('json') }}"
            },
            "datePublished": "{{ date($thread.post_date, 'Y-m-d')|escape('json') }}",
            "dateModified": "{{ date($thread.last_post_date, 'Y-m-d')|escape('json') }}",
            "image": "{$image|escape('json')}",
            "interactionStatistic": {
                "@type": "InteractionCounter",
                "interactionType": "https://schema.org/ReplyAction",
                "userInteractionCount": {$thread.reply_count}
            },
            "publisher": {
                "@type": "Organization",
                "name": "{$xf.options.boardTitle|escape('json')}",
                "logo": {
                    "@type": "ImageObject",
                    "url": "{{ base_url(property('publicMetadataLogoUrl'), true)|escape('json') }}"
                }
            },
            "mainEntityOfPage": {
                "@type": "WebPage",
                "@id": "{$xf.options.boardUrl}"
            }
        }
        </script>
    </xf:if>
</xf:page>

<!--[XF:content_top]-->

<xf:if is="$pendingApproval">
    <div class="blockMessage blockMessage--important">{{ phrase('content_submitted_displayed_pending_approval') }}</div>
</xf:if>

<xf:macro template="forum_macros" name="forum_page_options" arg-forum="{$forum}" arg-thread="{$thread}" />

<xf:breadcrumb source="$forum.getBreadcrumbs()" />

<xf:if is="$canInlineMod OR $thread.canUseInlineModeration()">
    <xf:js src="xf/inline_mod.js" min="1" />
</xf:if>

<xf:macro template="lightbox_macros" name="setup" arg-canViewAttachments="{$thread.canViewAttachments()}" />

<xf:if is="$poll">
    <xf:macro template="poll_macros" name="poll_block" arg-poll="{$poll}" />
</xf:if>

<xf:ad position="thread_view_above_messages" arg-thread="{$thread}" />

<div class="block block--messages" data-xf-init="{{ $canInlineMod ? 'inline-mod' : '' }}" data-type="post" data-href="{{ link('inline-mod') }}">

    <xf:macro name="thread_status" arg-thread="{$thread}" arg-wrapperClass="block-outer" />

    <div class="block-outer"><xf:trim>
        <xf:pagenav
            page="{$page}" perpage="{$perPage}" total="{{ $thread.reply_count + 1 }}"
            link="threads" data="{$thread}"
            wrapperclass="block-outer-main" />
        <xf:if contentcheck="true">
            <div class="block-outer-opposite">
                <div class="buttonGroup">
                <xf:contentcheck>
                    <xf:if is="$canInlineMod">
                        <xf:macro template="inline_mod_macros" name="button" />
                    </xf:if>
                    <xf:if is="$thread.discussion_state == 'deleted' AND $thread.canUndelete()">
                        <xf:button href="{{ link('threads/undelete', $thread) }}" class="button--link" overlay="true">
                            {{ phrase('undelete') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$thread.canApproveUnapprove() AND $thread.discussion_state == 'moderated'">
                        <xf:button href="{{ link('threads/approve', $thread) }}" class="button--link" overlay="true">
                            {{ phrase('approve') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$xf.visitor.user_id AND $thread.isUnread()">
                        <xf:button href="{{ $firstUnread ? ('#post-' . $firstUnread.post_id) : link('threads/unread', $thread, {'new': 1}) }}"
                            class="button--link"
                            data-xf-click="scroll-to"
                            data-silent="true">
                                {{ phrase('jump_to_new') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$thread.canWatch()">
                        <xf:button href="{{ link('threads/watch', $thread) }}" class="button--link"
                            data-xf-click="switch-overlay"
                            data-sk-watch="{{ phrase('watch') }}"
                            data-sk-unwatch="{{ phrase('unwatch') }}">
                            <xf:if is="{$thread.Watch.{$xf.visitor.user_id}}">
                                {{ phrase('unwatch') }}
                            <xf:else />
                                {{ phrase('watch') }}
                            </xf:if>
                        </xf:button>
                    </xf:if>

                    <xf:if contentcheck="true">
                        <div class="buttonGroup-buttonWrapper">
                            <xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true" title="{{ phrase('more_options') }}">&#8226;&#8226;&#8226;</xf:button>
                            <div class="menu" data-menu="menu" aria-hidden="true">
                                <div class="menu-content">
                                    <h4 class="menu-header">{{ phrase('more_options') }}</h4>
                                    <xf:contentcheck>
                                        <!--[XF:thread_tools_menu:top]-->
                                        <xf:if is="$thread.canEdit()">
                                            <a href="{{ link('threads/edit', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('edit_thread') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canLockUnlock()">
                                            <a href="{{ link('threads/quick-close', $thread) }}"
                                                class="menu-linkRow"
                                                data-xf-click="switch"
                                                data-menu-closer="true">

                                                <xf:if is="$thread.discussion_open">
                                                    {{ phrase('lock_thread') }}
                                                <xf:else />
                                                    {{ phrase('unlock_thread') }}
                                                </xf:if>
                                            </a>
                                        </xf:if>
                                        <xf:if is="$thread.canStickUnstick()">
                                            <a href="{{ link('threads/quick-stick', $thread) }}"
                                                class="menu-linkRow"
                                                data-xf-click="switch"
                                                data-menu-closer="true">

                                                <xf:if is="$thread.sticky">
                                                    {{ phrase('unstick_thread') }}
                                                <xf:else />
                                                    {{ phrase('stick_thread') }}
                                                </xf:if>
                                            </a>
                                        </xf:if>
                                        <xf:if is="$thread.canCreatePoll()">
                                            <a href="{{ link('threads/poll/create', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('create_poll') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canDelete('soft')">
                                            <a href="{{ link('threads/delete', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('delete_thread') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canMove()">
                                            <a href="{{ link('threads/move', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('move_thread') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canReplyBan()">
                                            <a href="{{ link('threads/reply-bans', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('manage_reply_bans') }}</a>
                                        </xf:if>
                                        <xf:if is="$thread.canViewModeratorLogs()">
                                            <a href="{{ link('threads/moderator-actions', $thread) }}" data-xf-click="overlay" class="menu-linkRow">{{ phrase('moderator_actions') }}</a>
                                        </xf:if>
                                        <!--[XF:thread_tools_menu:before_footer]-->
                                        <xf:if is="$thread.canUseInlineModeration()">
                                            <div class="menu-footer"
                                                data-xf-init="inline-mod"
                                                data-type="thread"
                                                data-href="{{ link('inline-mod') }}"
                                                data-toggle=".js-threadInlineModToggle">
                                                <xf:checkbox>
                                                    <xf:option class="js-threadInlineModToggle" value="{$thread.thread_id}">{{ phrase('select_for_moderation') }}</xf:option>
                                                </xf:checkbox>
                                            </div>
                                        </xf:if>
                                        <!--[XF:thread_tools_menu:bottom]-->
                                    </xf:contentcheck>
                                </div>
                            </div>
                        </div>
                    </xf:if>
                </xf:contentcheck>
                </div>
            </div>
        </xf:if>
    </xf:trim></div>

    <div class="block-outer js-threadStatusField"><xf:trim>
        <xf:if contentcheck="true">
            <div class="blockStatus blockStatus--info">
                <xf:contentcheck>
                    <xf:macro template="custom_fields_macros" name="custom_fields_view"
                        arg-type="threads"
                        arg-group="thread_status"
                        arg-onlyInclude="{$forum.field_cache}"
                        arg-set="{$thread.custom_fields}"
                        arg-wrapperClass="blockStatus-message" />
                </xf:contentcheck>
            </div>
        </xf:if>
    </xf:trim></div>

    <div class="block-container lbContainer"
        data-xf-init="lightbox{{ $xf.options.selectQuotable ? ' select-to-quote' : '' }}"
        data-message-selector=".js-post"
        data-lb-id="thread-{$thread.thread_id}"
        data-lb-universal="{$xf.options.lightBoxUniversal}">

        <div class="block-body js-replyNewMessageContainer">
            <xf:foreach loop="$posts" value="$post">
                <xf:if is="$post.message_state == 'deleted'">
                    <xf:macro template="post_macros" name="post_deleted"
                        arg-post="{$post}"
                        arg-thread="{$thread}" />
                <xf:else />
                    <xf:macro template="post_macros" name="post"
                        arg-post="{$post}"
                        arg-thread="{$thread}" />
                </xf:if>
            </xf:foreach>
        </div>
    </div>

    <xf:if contentcheck="true">
        <div class="block-outer block-outer--after">
            <xf:contentcheck>
                <xf:pagenav
                    page="{$page}" perpage="{$perPage}" total="{{ $thread.reply_count + 1 }}"
                    link="threads" data="{$thread}"
                    wrapperclass="block-outer-main" />
                <xf:showignored wrapperclass="block-outer-opposite" />
                <xf:if is="!$thread.canReply() AND $thread.discussion_state == 'visible' AND $thread.discussion_open">
                    <div class="block-outer-opposite">
                        <xf:if is="$xf.visitor.user_id">
                            <span class="button button--wrap is-disabled">
                                {{ phrase('no_permission_to_reply') }}
                                <!-- this is not interactive so shouldn't be a button element -->
                            </span>
                        <xf:else />
                            <xf:button href="{{ link('login') }}" class="button--link" overlay="true">
                                {{ phrase('log_in_or_register_to_reply') }}
                            </xf:button>
                        </xf:if>
                    </div>
                </xf:if>
            </xf:contentcheck>
        </div>
    </xf:if>

    <xf:macro name="thread_status" arg-thread="{$thread}" arg-wrapperClass="block-outer block-outer--after" />
</div>

<xf:ad position="thread_view_below_messages" arg-thread="{$thread}" />

<xf:if is="$thread.canReply()">
    <xf:form action="{{ link('threads/add-reply', $thread) }}"
        ajax="true"
        draft="{{ link('threads/draft', $thread) }}"
        class="block js-quickReply"
        data-xf-init="attachment-manager quick-reply{{ $xf.visitor.isShownCaptcha() ? ' guest-captcha' : '' }}"
        data-message-container="div[data-type='post'] .js-replyNewMessageContainer"
        data-preview-url="{{ link('threads/reply-preview', $thread, {'quick_reply': 1}) }}">

        <xf:js src="xf/message.js" min="1" />
        <xf:set var="$lastPost" value="{$posts|last}" />

        <div class="block-container">
            <div class="block-body">
                <xf:macro template="quick_reply_macros" name="body"
                    arg-message="{$thread.draft_reply.message}"
                    arg-attachmentData="{$attachmentData}"
                    arg-forceHash="{$thread.draft_reply.attachment_hash}"
                    arg-messageSelector=".js-post"
                    arg-multiQuoteHref="{{ link('threads/multi-quote', $thread) }}"
                    arg-multiQuoteStorageKey="multiQuoteThread"
                    arg-lastDate="{$lastPost.post_date}"
                    arg-lastKnownDate="{$thread.last_post_date}" />
            </div>
        </div>
    </xf:form>
</xf:if>

<div class="blockMessage blockMessage--none">
    <xf:macro template="share_page_macros" name="buttons" arg-iconic="{{ true }}" arg-label="{{ phrase('share:') }}" />
</div>

<xf:macro name="thread_status" arg-thread="!" arg-wrapperClass="">
    <xf:if contentcheck="true">
        <div class="{$wrapperClass}">
            <dl class="blockStatus">
                <dt>{{ phrase('status') }}</dt>
                <xf:contentcheck>
                    <xf:if is="$thread.discussion_state == 'deleted'">
                        <dd class="blockStatus-message blockStatus-message--deleted">
                            <xf:macro template="deletion_macros" name="notice" arg-log="{$thread.DeletionLog}" />
                        </dd>
                    <xf:elseif is="$thread.discussion_state == 'moderated'" />
                        <dd class="blockStatus-message blockStatus-message--moderated">
                            {{ phrase('awaiting_approval_before_being_displayed_publicly') }}
                        </dd>
                    </xf:if>
                    <xf:if is="!$thread.discussion_open">
                        <dd class="blockStatus-message blockStatus-message--locked">
                            {{ phrase('not_open_for_further_replies') }}
                        </dd>
                    </xf:if>
                </xf:contentcheck>
            </dl>
        </div>
    </xf:if>
</xf:macro>

<xf:widgetpos id="thread_view_sidebar" context-thread="{$thread}" position="sidebar" />
موجود في كليهما أخي
ضع القالب في الnotpad وابحث فيه بهذا الكود مثلا

كود:
<xf:breadcrumb source="$forum
ستجده فوق هذا الكود
كود:
<xf:if is="$canInlineMod OR $thread.canUseInlineModeration()">
    <xf:js src="xf/inline_mod.js" min="1" />
</xf:if>
لو لم تجده أخبرني وسأقوم بتعديله لك
 

إحصائيات المنتدى

المواضيع
1,610
المشاركات
18,050
الأعضاء
1,176
آخر عضو مسجل
lamaindia
أعلى