رابط ملف شخصي مخصص

:discourse2: الملخص إضافة رابط مخصص لملف تعريف المستخدم
:hammer_and_wrench: المستودع GitHub - chapoi/discourse-profile-custom-link
:question: دليل التثبيت كيفية تثبيت سمة أو مكون سمة
:open_book: جديد في سمات Discourse؟ دليل المبتدئين لاستخدام سمات Discourse

Install this theme component

مكون صغير لإضافة رابط قابل للتخصيص في ملف تعريف المستخدم.

يظهر في…

  1. ملف تعريف المستخدم الموسع

  2. بطاقة المستخدم

الإعدادات

إذا تركت profile custom link field فارغًا، فسيتم استخدام اسم المستخدم افتراضيًا، لذا في المثال المعروض سيذهب إلى
http://github.com/charlie

إذا كنت ترغب في استخدام حقل إدخال مخصص للمستخدم، فيجب عليك تعيين القيمة إلى الاسم الدقيق لحقل المستخدم، مثال:

  1. إنشاء حقل المستخدم

  2. تعيين الإعداد لاسم حقل المستخدم

  3. اطلب من المستخدمين ملء الحقل
    /u/[username]/preferences/profile

الآن سيذهب إلى http://github.com/MyRealGithubName


للحصول على تطبيق أكثر تقدمًا، ألقِ نظرة على مكون روابط ملفات تعريف متعددة

23 إعجابًا

هل سيحصل هذا على “nofollow”؟ هل سيتم إرساله إلى Akismet؟
من المؤكد أن هذا سيتم استخدامه من قبل المتسللين!

إعجاب واحد (1)

مجرد ملاحظة سريعة، يجب أن تكون http://github.com/، صحيح؟

أيضًا، هل هناك سبب معين لاقتراح GitHub عبر HTTP بدلاً من HTTPS؟

4 إعجابات

هاها نعم، هذا خطأ إملائي. شكراً لك. أنا لا أعيد اختراع هياكل عناوين URL هنا :winking_face_with_tongue:

لا على الإطلاق

4 إعجابات

مرحباً @chapoi! يسعدني جداً أنني وجدت هذا المكون. لقد أضفته للتو إلى منتدانا، شكراً لك! قد أقوم حتى بالتبديل إلى إصدار “الروابط المتعددة”.

ملاحظة سريعة: هناك كلمة “the” إضافية في نص الوصف أسفل حقل “أيقونة رابط الملف الشخصي المخصص” :slight_smile:

هل هناك سبب محدد لاضطراري لإضافة مكون لهذا، بدلاً من إضافة نوع حقل آخر لحقول المستخدم؟

تحياتي

إعجابَين (2)

اكتشاف رائع. :+1: هذا يجب أن ينظمه:

4 إعجابات

لست متأكدًا من أنني أتبع السؤال. لا يتم عرض جميع حقول المستخدم تلقائيًا في الملف الشخصي أو بطاقة المستخدم.

إعجابَين (2)

مرحباً تشارلي،
آسف لعدم الوضوح. سيكون من الرائع لو كان هناك نوع حقل لحقول المستخدم، يسمح بالروابط بدلاً من النص فقط.

أم أننا نستخدم حقول المستخدم بشكل خاطئ؟ إليك كيف نستخدمها حاليًا:

يجب نسخ الروابط ولصقها بدلاً من أن تكون قابلة للنقر.

إعجاب واحد (1)

حسناً، الآن فهمت، شكراً لك!

نعم، هذه نقطة عادلة طرحتها. سأبحث في إمكانية اقتراحك؛ تخميني هو أن هناك سببًا لعدم القيام بذلك، لكنني لا أعرف حاليًا.

إعجابَين (2)

رائع، شكراً لك! :bouquet:

إعجاب واحد (1)

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

أحد الخيارات التي يمكنك التفكير فيها هو تقديم طلب ميزة، ومعرفة ما إذا كان ذلك سيحظى بمزيد من الاهتمام.

تحياتي!

إعجابَين (2)

هذا الحل رائع وآمل أن نتمكن من المساعدة في تحسينه. رابط ملفنا الشخصي هو على شكل “https://www.domain.com/user/[USER-ID]/”. الشرطة المائلة اللاحقة تدمر الحل بالنسبة لنا. يمكنني إضافة إعادة كتابة عنوان URL ولكن حلاً أفضل هو جعل الكود أكثر تكيفًا. أريد روابط حقيقية تعمل مرة أخرى إلى الموقع!

حاولت تحويل المكون الإضافي إلى سمة حتى أتمكن من تحسين جافا سكريبت ولكن وظيفة CONVERT Discourse هذه لا تبدو وكأنها تعمل.

هل يمكنك إجراء التحديث بحيث يضيف وظائف؟


import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { service } from "@ember/service";

export default class ProfileCustomLink extends Component {
  @service site;
  @tracked customLinkUrl;
  @tracked customLinkFieldId;
  @tracked showCustomLink = false;
  @tracked user = this.args.model.username;
  @tracked userFields = this.args.model.user_fields;

  constructor() {
    super(...arguments);

    if (settings.profile_custom_link_field) {
      const siteUserFields = this.site.user_fields;

      if (!siteUserFields) {
        return;
      }

      const customLinkField = siteUserFields.filterBy(
        "name",
        settings.profile_custom_link_field
      )[0];

      if (!customLinkField) {
        return;
      }

      this.customLinkFieldId = this.userFields[customLinkField.id];
      if (!this.customLinkFieldId) {
        return;
      } else {
        this.showCustomLink = true;
        if (settings.profile_custom_link_prefix.includes("[CUSTOM-LINK-FIELD-ID]")) {
          const url = settings.profile_custom_link_prefix.replace("[CUSTOM-LINK-FIELD-ID]", this.customLinkFieldId);
          this.customLinkUrl = url;
        } else {
          const url = settings.profile_custom_link_prefix + this.customLinkFieldId;
          this.customLinkUrl = url;
        }
      }
    } else {
      const url = settings.profile_custom_link_prefix + this.user;
      this.customLinkUrl = url;
      this.showCustomLink = true;
    }
  }
}

@Julian2 لقد قمت للتو بنشر طلب ميزة هنا، لم أر مشاركاتك حول هذا الموضوع

إعجابَين (2)

يبدو أن هذا المكون توقف عن العمل في الإصدار v2025.11

[THEME 2 'Custom Profile Link'] إشعار إهمال: array.filterBy هو امتداد مصفوفة أصلي مهمل في Ember. استخدم طرق المصفوفة الأصلية أو TrackedArray بدلاً من ذلك. [تم إهماله منذ Discourse 3.6.0.beta1-dev] [معرّف الإهمال: discourse.native-array-extensions.filterBy]

إعجاب واحد (1)

أنا أستخدم الإصدار 2025.12 وما زال يعمل بالنسبة لي. هذا مجرد تحذير مهمل، وليس خطأ، لذا يجب أن يكون الأمر لا يزال جيدًا.

هل يمكنك إخباري المزيد عما تواجهه؟

إعجاب واحد (1)

في الواقع، تبين أن المشكلة الفعلية كانت ناتجة عن خطأ من المستخدم.

3 إعجابات