Drupal: تغيير لغة أكثر من محتوى دفعة واحدة

نواصل مع “مشاكل” وحلول إدارة نظام المحتوى Drupal وهذه المرة مع مشكل يصادف المواقع التي تعتمد أكثر من لغة واحدة في آن واحد، ويتعلق الأمر تحديدا بتغيير لغة محتويات معينة (أو كامل الموقع) من لغة إلى أخرى.

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

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

بعد تنصيب الإضافة يكفي زيارة صفحة إدارة كامل المحتويات (/admin/content/node) ثم اختيار لغة المحتويات مثلما هو ظاهر في الصورة أدناه:

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

حل لمشكل عدم تمرير سوى Parameter واحد لدى استخدام Curl في Drupal

لدى استخدام Curl لمناداة Web Service ما، تحميل صفحة معينة، أو لأي هدف آخر، فإننا عادة ما نستخدم شيفرة مماثلة للشيفرة التالية (لدى البرمجة باستخدام PHP):

$params = array(
‘param1’    => “some String”,
‘param1’      => “Another string”,
‘param3’      => 25
);

$cmd = curl_init();
$url=”SomeURL”.http_build_query($params)
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($cmd);

لكن لدى استخدام نفس الكود على Drupal فإن الوضع…سيدفعك إلى الجنون، لأنه مهما حاولت فإنه لم يتم تمرير سوى الـ Parameter الأول.

بعد بحث طويل، وبعد محاولة أكثر من طريقة، الحل يكمن في طريقة بناء الاستعلام، حيث بدل بنائه باستخدام

http_build_query($params)

يجب استخدام صيغة أخرى لنفس التابع والتي تكون على النحو التالي:

http_build_query($params), ”, ‘&’);

وسيتم بإذن الله حل المشكل

ملاحظة: قد لا تكون هذه الطريقة الأمثل لاستخدام Curl على Drupal، حيث يوفر النظام دوال خاصة به يمكن استخدامها مثل دالة drupal_http_request

والسلام عليكم

حل لمشكل ظهور رسالة الخطأ MySQL server has gone away لدى محاولة استرجاع قاعدة بيانات على PHPMyAdmin

سبق وأن واجهت هذا المشكل أكثر من مرة، لدى محاولة استرجاع قاعدة بيانات لموقع يستخدم Drupal، حيث تظهر رسالة الخطأ التالية:

#2006 – MySQL server has gone away

على PHPMyAdmin والتي عادة ما يكون سببها أحد البيانات المسجلة في أحد جداول Cache.

هناك عدة طرق لتجنب الوقوع في هذا المشكل، وذلك بتفريغ Cache مثلا قبل حفظ قاعدة البيانات (لا تنجح دائما)، أو استخدام وحدات خاصة بحفظ نسخ من البيانات كوحدة Backup and Migrate، لكن ماذا لو لم تكن تملك في وضع يسمح لك بذلك، مثلا محاولة استرجاع بيانات من نسخة قديمة، تم حفظها بشكل سيء؟، أو ربما لم يكن المشكل يتعلق بـ Cache (أو بنظام Drupal) من أساسه.

الحل يكمن في تغيير إعدادات Mysql، حيث يكفي إعطاء الإعداد max_allowed_packet قيمة أكبر.

إن كنت تستخدم Wamp مثلا، فإنه يكفي النقر على زر التطبيق (الذي يظهر بجانب الساعة في Notification Bar) ثم فتح ملف my.ini من تفرع MySQL ثم ابحث عن max_allowed_packet واعطها قيمة أكبر.

أعد تشغيل Wamp، ثم قم بإعادة محاولة استرجاع قاعدة البيانات من جديد.

 

بعض مشاكل Taxonomy في نظام إدارة المحتوى Drupal 6 وطريقة حلها

السلام عليكم

صادفتني مؤخرا جملة من المشاكل مع Taxonomy على نظام إدارة المحتوى Drupal 6. أود أن استعرضها، وأستعرض حلولها لتسهيل المهمة على الواقع في نفس المشاكل من جهة، ولأتذكرها لاحقا في حال نسيتها من جهة أخرى. هذه الحلول هي نتيجة بحث على Google أو على موقع Drupal مباشرة. يعني من المُرجّح أن لا تكون هي الحلول الوحيدة لهذه المشاكل (وربما لا تكون أفضلها). إن وجدت حلا أفضل، فلا تتردد في إضافته كتعليق.

عدم التمكن من فصل حقول Taxonomy لدى استعمال أكثر من Vocabulary في Content Type جديد

لدى إنشاء نوع محتوى Content Type جديد ولدى استعمال أكثر من Vocabulary عليه (مثلا واحد للأقسام وآخر للوسوم) فإن هذان الخيارات يبقيان “مُلتصقين مع بعض” في نموذج إنشاء محتوى جديد، كما أنهما لا يظهران مُباشرة في صفحة إعدادات المحتوى الجديد بل يظهر بدلهما Taxonomy والتي تكون غير قابلة للتعديل.

الحل يكمن في استخدام إضافة Content Taxonomy  والتي تسمح بإضافة حقول جديدة من نوع Content Taxonomy Fields تكون مربوطة مُباشرة بالـ Taxonomy.

إخفاء الوسوم التي تظهر أسفل المحتويات الجديدة

مُشكل آخر يتعلق بالوسوم هذه المرة، حيث تظهر مُباشرة تحت المحتوى الجديد لدى إنشائه، وتظهر هذه الوسوم حتى وإن تم إظهارها في مكان آخر (مثلا تحت العنوان مباشرة).

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

إنشاء قائمة بجميع مفردات Vocubulary معين

قد تحتاج إلى هذه الخاصية لما تود إنشاء قائمة بجميع أقسام الموقع. يمكن القيام بذلك بإضافة مُدخلات مُباشرة إلى القوائم الموجودة (Primary أو Secondary Links). لكن ماذا لو كان عدد الأقسام كبيرا، أو كان موقعك قابلا للتوسع لاحقا؟ ماذا لو كانت القائمة تخص كافة الوسوم وليس الأقسام فقط؟ كما تُلاحظ فالحل السابق لا يصلح في هذه الحالات.

حل هذا المشكل يتم عبر تنصيب إضافتي taxonomy menu و menu block معا، ويتم إنشاء القوائم مثلما هو موضح في هذا الدرس.

والسلام عليكم

حل لمشكل ظهور رسالة Internal Server Error لدى رفع و تنصيب Drupal على استضافة تجارية

السلام عليكم

هو مشكل قد يصادفك لدى محاولة تنصيب Drupal على استضافة تجارية عند بعض الشركات كـ OVH الفرنسية، حيث أنه تظهر رسالة الخطأ التالية:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@exemple.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

طبعا ستلف و تدور و تعبث بالـ Chmod الخاص بجميع الملفات و ربما ستحذف ملفات الـ Drupal و تعيد رفعها من جديد لكن من دون جدوى، حتى تقرر أن تبحث على النت لترى إن كان هناك من صادفه نفس المشكل ، و ربما ستصل إلى هذه التدوينة لتجد فيها الحل :p

الحل بسيط و يتمثل في حذف الأسطر التي تحتوي على Options و php_value في ملف .htaccess و بعد حفظ التغيرات ستظهر لك شاشة التنصيب المعتادة.

و السلام عليكم