Some of my users dont like this option:
![]()
Some of my users dont like this option:
![]()
Per user, no we do not have this option, you can suppress it globally via CSS.
If hiding it for all users in an option, this would be the CSS to globally suppress the “last seen” user profile stat:
// Hide the "Last Seen" section of the user profile
.user-main .about .secondary dl div:nth-child(3) {
display: none;
}
مرحبًا! أنا أعمل على نسخة من Discourse تهدف إلى استضافة أشخاص من خلفيات متنوعة وتوفير بيئة آمنة وآمنة وموثوقة.
أتساءل عما إذا كنتم تنوون في المستقبل إضافة إعداد يسمح بتعطيل معلومات “تمت رؤيته” (في قوائم المجموعات وفي أي مكان آخر) على مستوى النظام بأكمله؟ نرغب في تقديم ضمان لمستخدمينا بأنه لا يمكن لأي مستخدم آخر معرفة آخر مرة كانوا فيها متصلين (أي أن هذه المعلومات غير متاحة حتى عند فحص كود HTML).
إذا كانت الإجابة بالنفي، هل يمكنكم تقديم نصيحة حول كيفية تنفيذ ما ذكرته أعلاه؟ لا يزال لدي خبرة محدودة في هذا المجال، وأود معرفة ما إذا كان من الأفضل توظيف شخص لتعديل كود المصدر، أم أن إضافة مكون أو ملحق ستكون كافية؟
شكرًا جزيلًا لكم!
لست متأكدًا من سؤالك الفعلي، لكن هذا النقاش يتعلق بمشكلتك:
يُوثّق هذا الإعداد الذي يخفي بطاقة المستخدم:
hide_user_profiles_from_public
شكرًا لك على تعليقك! لقد قمنا بالفعل بإخفاء بطاقات المستخدمين، وأعتقد أن هذه ميزة جيدة. ومع ذلك، أشعر بالقلق من أنه في المستقبل قد يرغب الأشخاص في مجتمعي في إخفاء معلومات “تمت المشاهدة” حتى عن المستخدمين المسجلين. لذا، أردت فقط التحقق من خياراتنا في حال تحقق ذلك.
عذرًا على رفع الموضوع، لكنني لم أتمكن من العثور على أي منشور حديث يتحدث عن هذا. القدرة على إخفاء بعض معلومات “شوهد” و “التواجد” حتى من المستخدمين المسجلين، كوسيلة لتوفير مزيد من الخصوصية للمستخدمين.
هل هناك أي إعدادات جديدة للتحكم في هذا؟ هل يجب علينا فتح طلب ميزة؟
هل من الممكن إضافة فئات CSS للسماح بإخفاء آخر وقت مشاهدة لمستخدمين محددين؟
أريد إخفاءه لملفي الشخصي، لأن الناس يرسلون لي رسائل ثم يتمكنون من رؤية آخر مرة كنت فيها متصلاً بالإنترنت. إنه أمر محرج إذا لم أرد لبضعة أيام (لا يكفي الوقت لي للوصول إلى كل شيء على الفور) ولكن يمكنهم رؤية أنني كنت متصلاً بالإنترنت مؤخرًا حيث يقومون بفحص ملفي الشخصي بشكل متكرر، وأحيانًا لأن لدي علامة تبويب مفتوحة في مكان ما ولكني لا أتحقق من الموقع.
لا ينبغي لأحد أن يتوقع من أي شخص أن يفعل أي شيء بمجرد وجوده. إنها حياتك ولديك واجباتك. لذلك أعتقد أنه سيكون من المفيد وضع حدود، على سبيل المثال عن طريق كتابتها في ملفك الشخصي. مثل “أنا شخص مشغول وأرد عليك في غضون أسبوع”. أو “يرجى توقع مني فقط الإجابة على الأسئلة المتعلقة بـ X و Y، أما الباقي فانتظر المجتمع”.
لذلك أعتقد أنها مشكلة الآخرين. مثل إذا رأوك في مكان ما في الحياة الواقعية وركضوا إليك بشيء مهم جدًا عليك القيام به الآن!
الأمر أكثر تعقيدًا من ذلك، لكنني غير قادر على الشرح بالتفصيل. يمكن أن يكون الضغط هائلاً.
أتفق مع هذا. أحيانًا أكون أنا من يقوم بالتحقق، لذا أشعر بالتوتر عندما أعرف أن هذا المستخدم متصل بالإنترنت، ولكنه لم يرد علي.
غير ممكن باستخدام CSS فقط، لا يمكن لأي مسار عقدة استخدام اسم المستخدم الخاص بك لاستهداف عناصر “آخر ظهور”.
باستخدام جافاسكريبت، يجب أن يعمل هذا:
<script type="text/discourse-plugin" version="1.4.0">
function hideLastSeen() {
if (location.pathname.startsWith("/u/j127")) {
document.querySelectorAll(".last-seen-at").forEach(el => el.remove());
}
}
api.onPageChange(hideLastSeen);
document.addEventListener("DOMContentLoaded", hideLastSeen);
</script>
بإذن من 
للقراء المستقبليين، انظروا إلى النص البرمجي الأفضل أدناه الذي يمنع الاستهداف الخاطئ للمستخدمين (لتجنب استهداف مستخدم اسمه “johndoe” إذا كنت تستخدم “.startsWith("/u/john")”).
هل سيتوقف هذا عن العمل مع تمكين الوضع الآمن؟
نعم. يمكن للمسؤول تعطيل الوضع الآمن لغير الموظفين إذا لزم الأمر ![]()
ولكن يمكن للمستخدم الفضولي أن يقرأ المعلومات من استجابة JSON، أليس كذلك؟
نعم. كإضفاء طابع شخصي على جانب العميل فقط، فهو دائمًا “حاجز ناعم”. قد يكون المستخدمون مصممين (وعلى دراية) بما يكفي لاستغلال هذه الثغرة، وقد لا يكونون كذلك.
شكراً، هذا يعمل.
تعديل: لقد قمت بتغييره إلى هذا لجعله غير حساس لحالة الأحرف:
<script type="text/discourse-plugin" version="1.4.0">
function shouldHideLastSeen() {
const p = location.pathname.toLowerCase();
return p === "/u/username" || p.startsWith("/u/username/");
}
function hideLastSeen() {
if (shouldHideLastSeen()) {
document.querySelectorAll(".last-seen-at").forEach(el => el.remove());
}
}
api.onPageChange(hideLastSeen);
document.addEventListener("DOMContentLoaded", hideLastSeen);
</script>