it-swarm.asia

كيف أخفي العقد التي لا ينبغي الوصول إليها مباشرة من المستخدمين ومحركات البحث؟

لقد وجدت أن هناك عقدة في بعض الأحيان تحتوي ببساطة على محتوى سيتم عرضه في مكان آخر ، ولكن لا يجب عرضه مباشرةً. أي أنه لا يجب أن يذهب أي شخص إلى العقدة/1234 ، ولكن يجب عرض المحتوى في العقدة 1234 في مكان آخر. على سبيل المثال ، أقوم بإنشاء صفحة حول مع محتوى مبوب باستخدام طرق العرض. لذلك هناك صفحات "نبذة عني" و "معلومات عنا" و "معلومات عنها". يتم عرض كل ذلك في صفحة واحدة مع علامات تبويب تستخدم طرق العرض. لذلك لا أريد أن يصل الأشخاص مباشرةً إلى العقدة "نبذة عنا" لأنهم لن يشاهدوا بعد ذلك علامات التبويب الخاصة بالصفحات الأخرى. في الوقت نفسه ، لا أريد أن يمنح Google الأشخاص رابطًا مباشرًا لهذه العقدة ، بل أريد تقييد الوصول حتى لا يتمكن المستخدمون من الوصول إليها إلا من خلال طريقة العرض (أي علامة التبويب).

لذا أحتاج إلى تقييد الوصول إلى العقدة وإزالتها من نتائج البحث Drupal ، والتأكد من أن Google لا تلتقطها. أي اقتراحات؟

49
Chaulky

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

27
coderintherye

توفر الوحدة Rabbit Hole هذه الميزة.

Rabbit Hole هي وحدة تضيف القدرة على التحكم في ما يجب أن يحدث عندما يتم عرض كيان في صفحته الخاصة.

ربما لديك نوع محتوى لا يجب عرضه أبدًا على صفحته الخاصة ، مثل نوع محتوى صورة يتم عرضه في رف دائري. يمكن أن تمنع Rabbit Hole الوصول إلى هذه العقدة على صفحتها الخاصة ، من خلال العقدة/xxx.

32
Pierre Buyle

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

حل آخر هو استخدام hook_nodeapi('view') / hook_node_view() تنفيذ لإصدار drupal_goto() أو drupal_access_denied() عند زيارة صفحة العقدة من قبل مستخدم غير مصرح له. كن على علم بأن hook_nodeapi() / hook_node_view() تُستخدم في كثير من الحالات وليس فقط عند عرض صفحة العقدة.

hook_menu_alter() يمكن استخدامها أيضًا لتغيير رد الوصول إلى صفحات العقدة لرفض الوصول إلى المخفية العقد.

ربما لا يكون الأفضل هو أن يستند التصفية إلى معرف العقدة ذات الرموز الثابتة ولكن إما استخدام حقل مخصص على العقدة (باستخدام CCK/Field API أو جدول مخصص) أو قائمة مخفية العقد المخزنة في متغير .

12
Pierre Buyle

ل Drupal 7 ، Rabbit Hole يوفر هذه الميزة.

Rabbit Hole هي وحدة تضيف القدرة على التحكم فيما يجب أن يحدث عندما يتم عرض الكيان في صفحته الخاصة.

يعمل هذا من خلال توفير خيارات متعددة للتحكم في ما يجب أن يحدث عندما يتم عرض الكيان في صفحته الخاصة. لديك القدرة على

  1. تسليم صفحة رفض الوصول.

  2. تسليم صفحة لم يتم العثور على الصفحة.

  3. إصدار صفحة إعادة توجيه إلى أي مسار أو عنوان URL خارجي.

  4. أو ببساطة عرض الكيان (السلوك العادي).

كيف :

قم بتمكين الوحدة الفرعية Rabbit Hole ثم سنحصل على قسم التكوين المرتبط بكل نموذج في Drupal الرمز

6
niksmac

تم حلها. جربت أولاً إجابة بيير بييل ، ولكن إذا قمت بإلغاء نشر عقدة ، فلا يمكن الوصول إليها بشكل صحيح وتصبح هذه العقد عديمة الفائدة. في حالتي لدي عقد من الوالدين والطفل ، فإن العقد الفرعية فقط (لأغراض إدارية) هي التي يتم إخفاؤها ولا يتم فهرستها بواسطة برامج الزحف. ما فعلته مع مدير الصفحة أعاد توجيه عنوان URL (إخفاء هذه العقد لجميع المستخدمين باستثناء المشرف) مع استجابة http وفقًا لهذا البرنامج التعليمي بواسطة http://www.wunderkraut.com/1 والعقد بدون فهرس بواسطة برامج الزحف يتم التعامل معها يدويًا بواسطة وحدة العقدة بدون فهرس . سيعمل هذا حتى لو لم يكن لديك علاقة عقدة بين الوالدين والطفل. رابط البرنامج التعليمي:

5
pinueve

في Drupal 7 ، يجب أيضًا أن يكون من الممكن استخدام hook_node_access () ، وهذا خطاف عادي في D7 يمكن تنفيذه بواسطة جميع الوحدات لجميع أنواع العقد. ثم يمكنك رفض الوصول إذا كان المستخدم يحاول عرض العقدة على العقدة/nid الخاصة به.

ربما تحتاج أيضًا إلى تنفيذ hook_query_node_access_alter () وإضافة علامة اختيار لإخفاء العقدة في نتائج البحث. قد يكون هذا كافيًا من تلقاء نفسه ولا تحتاج إلى hook_node_access (). وقد يعمل أيضًا في D6 لأنه يمكنك تغيير الاستعلام هناك أيضًا ، ولكنه أسهل كثيرًا في D7 بسبب منشئ الاستعلام.

3
Berdir

ما عليك سوى تعيين هذه العقدة على أنها "غير منشورة" ، ثم في العرض أضف عامل التصفية "العقدة المنشورة: لا".

كملاحظة سيو ، هي ممارسة جيدة لإنشاء نوع محتوى مخصص لعقد "الأشباح" هذه ، وإخبار pathauto بإعطائها عناوين URL محددة (أستخدم /dev/null/[title-raw]؛): حتى إذا كانت العقدة غير منشورة ، فسيكون لها عنوان url مستعار خاص بها ، لذلك في المثال الخاص بك إذا قمت أولاً بإنشاء عقدة الشبح "عنا" ، ثم صفحة العرض "عنا" ، فإن عنوان URL الثاني يكون example.com/about-us-0 لأن example.com/about-us تم أخذه من الشبح (ومع ذلك ، يمكنك تعيين المسارات يدويًا)

2
Strae

يمكنك القيام بذلك باستخدام وحدات القواعد.
+ إنشاء قاعدة جديدة باستخدام حدث "يتم عرض المحتوى".
+ أضف شرطين على سبيل المثال: للمستخدم دور (أدوار): مجهول ، المسار له اسم مستعار لعنوان URL: node/xyz (هذه هي العقدة التي تريد تقييدها لمستخدم مجهول). تذكر إضافة شرط "و" أو "أو" إذا لزم الأمر.
+ إنشاء إجراء لإعادة التوجيه إلى صفحة أخرى أو القيام بشيء آخر. هذا هو رمز عينة قمت بتصديره لك

{ "rules_limit_viewing_some_nodes" : {
  "LABEL" : "Limit viewing some nodes",
  "PLUGIN" : "reaction rule",
  "REQUIRES" : [ "rules", "path" ],
  "ON" : [ "node_view" ],
  "IF" : [
     { "user_has_role" : {
       "account" : [ "site:current-user" ],
       "roles" : { "value" : { "1" : "1" } }
      }
     },
     { "AND" : [] },
     { "path_has_alias" : { "source" : "node\/28" } }
   ],
   "DO" : [ { "redirect" : { "url" : "error" } } ]
 }
}
2
Stone Vo

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

2
Daniel Wehner

أعتقد أن أسهل طريقة لتحقيق ما تريده هي استخدام مدير الصفحات (Ctools) ، وهي سهلة الاستخدام حقًا ، كل ما عليك فعله هو تحديد العقدة التي تريد إعادة توجيهها (في هذه الحالة ، من عقدة إلى أخرى)

1
Nicolas_ii

الوصول إلى المحتوى ستلائم متطلباتك تمامًا.

تتيح لك هذه الوحدة إدارة الأذونات لأنواع المحتوى حسب الدور والمؤلف. يسمح لك بتحديد أذونات عرض وتحرير وحذف مخصصة لكل نوع محتوى. بشكل اختياري ، يمكنك تمكين إعدادات الوصول إلى المحتوى ، بحيث يمكنك تخصيص الوصول لكل عقدة محتوى.

يحتوي أيضًا على وثائق جيدة لمساعدتك في البدء.

1
AjitS

إذا كانت عقد "المحتوى المضمّن" الخاصة بك بحاجة إلى أن تظل غير قابلة للوصول ، فضع في اعتبارك الحظر/العقدة/* على خادم الويب "location =/node/*" المستوى. رفض الوصول الافتراضي إلى كافة/العقد. السماح بالوصول إلى العقد التي تلقت مسار مسار تلقائي مثل/صفحات.

(تعد كلمة المرور الأساسية .htaccess للأدلة الفرعية طريقة مناسبة لحظر فهرسة البحث العرضي بواسطة برامج الزحف الخارجية أيضًا.)

لا يمكنك أبدًا ضمان عدم إمكانية الوصول إلى العقدة عن طريق وحدة نمطية ساهمت في تثبيتها في المستقبل ، أو وحدة لم تفهمها بالكامل بعد. (نتائج البحث ، القوائم ، طرق العرض الافتراضية ، نظرة عامة على فئة التصنيف ...)

هذا هو الغرض من العقد.

هل خصوصية "المحتوى المضمّن" الخاص بك مهمة بالنسبة لك؟ إذا كان الأمر كذلك ، ثم ...

  1. سيتم ضرب كل شيء يحتوي على عنوان URL في النهاية بواسطة google.

    لأن محركات البحث لا تعتمد على روابط العناكب وحدها. كما أنهم يقيمون تعليقات المتصفح وما إلى ذلك. لن يساعدك ملف robot.txt ، أو pathauto ، أو Globalredirect ، أو وحدة rabbithole على النوم بسلام. إذا كان يمكن الوصول إلى العقدة ، فسيتم فهرستها. ربما عن طريق المتصفح/الإضافات الخاصة بك.

  2. إعادة النظر في ما إذا كان "المحتوى الذي سيتم تضمينه" يجب أن يكون عقدة ، إذا لم يتمكن أحد من الوصول إليه كصفحة ؟

    إذا تم تخزين "المحتوى المضمن" الخاص بك داخل لوحة مصغرة/كتلة/مقتطف/حبة/... ، فأنت في خطر أقل بكثير من إدراجه أو ظهوره كصفحة مع عنوان URL تلقائي لا تعرفه عن ، حتى الآن. (صفحات نظرة عامة على التصنيف ، البحث ، المشاهدات ...)

1
user18099

الوحدة Restrict Node Page View تقوم الوحدة بما تريده بالضبط.

من وصف الوحدة:

هل سبق لك استخدام نوع عقدة عرض الشرائح التي تحتاج إلى نشرها ولكنك لا تريد الوصول إلى العقدة بمفردها باستخدام مسار العقدة/XXX؟ هذه الوحدة لك!

باستخدام هذه الوحدة ، يمكنك تقييد الوصول إلى وضع العرض full للعقدة ، بحيث لا يمكنك الوصول إلى العقدة على node/XXX.

0
user72672