سیاره دروپال فارسی

معرفی ابزار قدرتمند Dreditor برای Drupal.org

مخاطب این مقاله، برنامه نویسان دروپال هستند

Dreditor یک اسکریپت Greasemonkey است که برای سایت drupal.org ساخته شده است. (برای استفاده از این اسکریپت، به یک مرورگر که از اسکریپت های کاربر پشتیبانی کند نیاز دارید. مرورگر google chrome و opera به طور درونی از اسکریپت های کاربر پشتیبانی می کنند و برای فایرفاکس، باید پلاگین Greasemonkey را نصب کنید.)

این اسکرپیت، باعث می شود که امکانات بسیار مفیدی به سایت drupal.org اضافه شود و به کمک آن، برنامه نویس های دروپال می توانند حد اکثر استقاده را از سایت drupal.org ببرند. به همه ی کسانی که برنامه نویسی دروپال انجام می دهند، توصیه می کنم که حتما این اسکریپت را امتحان کنند.

توجه کنید که Dreditor یک ماژول دروپال نیست. بلکه یک اسکریپت کاربر (User Script) است که در مرورگر شما اجرا می شود.

برای نصب این اسکریپت، به صفحه ی پروژه مراجعه کنید: http://drupal.org/project/dreditor

اسکریپت dreditor امکانات بسیار جالب زیر را فراهم می آورد: (البته ظاهرا باید برای استفاده از این امکانات، در سایت drupal.org عضو بوده و لاگین باشید)

مقدمه ای بر کلاس EntityFieldQuery دروپال برای پرس و جو از entity ها و فیلد ها

دروپال 7 یک API جدید به نام EntityFieldQuery ایجاد کرده است. API فوق یک کلاس است که به کمک آن می توان به سهولت و سرعت زیاد، از کلیه ی entity ها (از جمله node ها) و فیلد های موجود درسایت گزارش گیری کرد.

لایه ی انتزاع پایگاه داده (Database abstraction layer) دروپال 7 خیلی غنی تر از نسخه های پیشین دروپال است. با این حال، بازهم برای کار با پایگاه داده در دروپال 7 به گونه ای نیاز به ایجاد query های SQL می باشد.

اما کلاس EntityFieldQuery کمک می کند که بدون داشتن دانش SQL از فیلدها و entity ها query های گوناگون بگیریم.

راجع به کارایی دروپال

من چندین سال است که دروپال کار می‌کنم و همیشه از آن خیلی راضی بودم.
اما یک نکته‌ی تعجب بر انگیز این بود که در همه‌ی این مدت عقیده داشتم که کارایی و سرعت دروپال خیلی بیشتر از Wordpress و Joomla و ... است.
و برای این عقیده دلیل هم داشتم و تجربه هم کرده بودم.

اما مدتی است که به عکس شده بود و همه‌ی سایت های دروپالی ای که داشتم، همگی و دست جمعی با هم دست به یکی کرده بودند (!) و با هم کند شده بودند :)
فرقی هم نمی کرد که کدام سایت است. سایت هایی که روی سیستم ویندوز خودم داشتم، سایت هایی که روی VirtualBox و با Ununtu داشتم، سایت هایی که آنلاین بودند و بر روی سرور Debian بودند، سایت هایی که بر روی Directadmin و Centos داشتم، همه و همه به شدت کند شده بودند!...
جریان خیلی مشکوک می زد و .... :) بگذریم.

حالا به این نتیجه رسیدم که تقصیر از خود من بوده و دیدگاه من راجع به دروپال اشتباه بوده...

الان میتوانم بگویم که دروپال به طور کلی سیستم کندی است. نمی دانم که از وردپرس یا جوملا کندتر است یا خیر. چون من با این ها زیاد کار نکرده ام.

از مسائل شخصی که بگذریم، چند تا نکته هست که ممکن است برای دیگران مفید باشد. راجع به کارایی دروپال موارد زیر قابل ذکر است:

کلا دروپال سیستم سریعی نیست. البته می توان آن را سریع هم کرد. اما کلا چون دروپال برای توسعه داده شدن ساخته شده، لذا برنامه نویسی و توسعه ی آن آسان است. اما چنین سیستمی نمی تواند سریع هم باشد.
البته اشتباه هم نکنید، خود هسته ی دروپال به قدر کافی سریع است. من که می گویم دروپال کند است، منظورم دروپال توسعه داده شده و سفارشی شده است که کلی ماژول بر روی آن نصب شده باشد.

برای یک سایت سریع، باید حداکثر 100 تا ماژول فعال داشته باشید. هرچه تعداد ماژول ها کمتر باشد بهتر است. اگر فقط 40 الی 60 تا ماژول فعال داشته باشید، سایت مانند نور سریع خواهد بود...
بنا به تجربه‌ی من، تا 100 عدد ماژول قابل تحمل است، اما اگر از صد تا بیشتر شد، سایت کند می‌شود و باید برای سرعت بخشیدن به آن، میزان رم سرور رو افزایش بدهید، apc استفاده کنید، ترجیحا از هارد ssd استفاده کنید و سرعت cpu را افزایش دهید و ..
البته حرفه‌ای های این کار، می گویند که تا 150 تا ماژول خوب است و از 150 به بالا کند میشود (به نقل از omega8.cc)

1 - برای سرعت بخشیدن به دروپال، اول از همه تعداد ماژول ها را کاهش دهید و ماژول های غیر ضروری را حذف کنید.

2 - بعد، یک سری ماژول مضر را حذف کنید و یک سری ماژول خوب را نصب کنید. بعضی از ماژول های مضر بنا به تجربه ی من این ها هستند:
database logging,  field permissions, cck,  rules,  relation

برخی از ماژول های مفید این ها هستند:
boost, authcache, esi, css_emimage, entity cache, memcached

3 - اگر می توانید، به جای این که از cck استفاده کنید، content type های مورد نظرتان رو خودتان کد نویسی کنید و یک ماژول سفارشی درست کنید. خیلی سریع تر میشود.

4 - برای فیلد های content type ها، بهتر است که تمام فیلد ها داخل یک جدول در دیتابیس باشد. رفتار پیش فرض دروپال این است که برای هر فیلدی، چند تا table درست می کند و این باعث می شود که تعداد join های دیتابیس زیاد شود و سایت کند شود.
اگر می توانید، یک ماژول درست کنید که تمام فیلد ها را داخل یک جدول قرار دهد.

5 - هرچه می توانید تعداد فیلد ها را کاهش دهید. مثلا اگر می خواهید فایل ضمیمه داشته باشید، فقط یک فیلد فایل و یک فیلد تصویر داشته باشید و بی خودی فیلد تکراری درست نکنید.

6 - ماژول های مجوز فیلد ها را در صورت امکان غیر فعال کنید چون تعداد زیادی join ایجاد می کنند.

7 - هر کاری را از راه استاندارد آن انجام دهید. مثلا داخل پوسته ی سایت، دستور SQL اجرا نکنید!

8 - کارها و ترفند های دیگری هم برای سرعت بخشیدن به دروپال موجود است که با تجربه بدست می آید و خارج از حوصله ی این پست می باشد...

9 - نرم افزار و سخت افزار سرور را بررسی کنید. فرقی نمی کند که سرور اختصاصی و یا اشتراکی باشد. دروپال باید بتواند بر روی سرور اشتراکی به خوبی کار کند، اما چند تا مسئله هست که اگر بر روی سرور رعایت شده باشد، سرعت دروپال زیاد می شود:

10 - از هاست هایی که Overselling انجام می دهند اکیدا پرهیز کنید.

11 - سروری که استفاده می کنید، اگر از مجازی سازی استفاده می کند، توجه کنید که حتی الامکان از OpenVZ و Virtuozzo استفاده نکرده باشد. زیرا بسیار پیش آمده که OpenVZ مشکلات فراوانی به وجود آورده.
OpenVZ را بد ترین انتخاب برای هاستینگ دروپال می دانند (به نقل از 2bits.com)

12 - بهتر است مجازی سازی سرور مبتنی بر VMware و یا Xen باشد. البته OpenVZ هم اگه درست پیکربندی شود، خیلی هم عالی است. منتها مشکل اینجاست که اکثر OpenVZ را درست پیکربندی نمی کنند و این مشکلاتی که عرض شد به وجود می آید.

13 - بهتر است که به عنوان وب سرور، از nginx استفاده کنید. نسبت به apache سرعت خیلی بیشتری دارد.

14 - برای PHP بهتر است از fastcgi استفاده کنید. ماژول mod_php در آپاچی خیلی کند است و اصلا توصیه نمی شود.

15 - دقت کنید که حتما apc فعال باشد. البته ظاهرا Zend Optimizer با آن مشکل دارد و نمی توانند در کنار هم کار کنند. در هر حال از Op code cahing استفاده کنید.

16 - اگر می توانید تلاش کنید که ترافیک دیتابیس MySQL را کاهش دهید. مثلا می توانید caching دروپال را با استفاده از redis-server و یا با apc و یا با memcached انجام دهید (هر کدام با دیگری فرق دارد)

17 - استفاده از هارد ssd به خصوص برای database خیلی سیستم را سریع می کند

18 - اگر تجربه ی خاصی راجع به کارایی دروپال دارید، لطف کنید و حتما برای من هم ارسال کنید. متشکرم :)

باز هم مهاجرت از دروپال 6 به دروپال 7

مدتی بعد از مهاجرت وبلاگ خودم به دروپال 7 ، این بار سایت www.jahizieh.net را نیز به دروپال 7 منتقل کردم
این بار کار به مراتب دشوار تر بود چون سایت فوق دارای تعداد زیادی محصول بود و در ضمن من میخواستم کلا طراحی سایت رو عوض کنم و محصولات رو به ماژول commerce منقل کنم
کد زیر حاصل 24 ساعت تلاش مداوم من است که می تواند برای دیگران هم جنبه‌ی آموزشی داشته باشد.

مجددا عرض می کنم که کد ذیل، فقط برای سایت jahizieh.net کاربرد داشته و برای استفاده برای سایت های دیگر، لازم است که در آن تغییرات لازم انجام گیرد.
این کد در واقع تغییر یافته‌ی کدهایی است که برای وبلاگ خودم نوشته بودم.

پیغام پاورقی در دروپال 7

در دروپال 6 یک صفحه وجود دارد به نام Site information (یا اطلاعات سایت) که در آن برخی تنظیمات سایت از جمله نام سایت، شعار سایت و ... را پیکربندی می کنیم. همچنین در این صفحه، گزینه ای به نام پیغام پاورقی وجود دارد.
متنی که به عنوان پیغام پاورقی انتخاب می کنیم، در پایین سایت نمایش داده می شود. طرز کار آن هم به این صورت است که یک متغیر theme به نام $footer_message وجود دارد که پیغام پاورقی را در خود نگاه می دارد. پوسته ها هم در فایل page.tpl.php متغیر مذبور را echo می کنند.

این ویژگی "پیغام پاورقی" در دروپال 7 وجود ندارد. شاید دلیل آن این باشد که طراحان دروپال 7 با خود فکر کرده اند که بهتر است برای پیغام پاورقی، یک بلوک سفارشی جدید ایجاد کنیم و ان را در یکی از region هایی که در پایین سایت وجود دارد قرار دهیم. به این ترتیب انعطاف پذیری و همه گیر بودن سیستم بیشتر می شود.
این طرز فکر کاملا صحیح است و بهترین روش برای نمایش پیغام پاورقی هم همین است که یک بلوک سفارشی ایجاد کنیم.
با این همه، بعضی ها، از جمله من، به ویژگی پیغام پاورقی دروپال 6 علاقه داریم و از آن بیشتر خوشمان می آید!

اما مسئله ی مهم تری هم وجود دارد و آن این است که با حذف ویژگی پیغام پاورقی در دروپال 7، متغیر theme به نام $footer_message هم حذف شده و دیگر وجود ندارد. به این ترتیب، پوسته هایی که برای دروپال 6 نوشته شده اند، هنگام تبدیل به دروپال 7، باید این متغیر را از فایل page.tpl.php حذف کنند. کار سختی نیست، ولی خوب اگر این کار را نکنیم، راحت تریم!!
ماژول footer_message برای همین منظور نوشته شده است.

این ماژول را بررسی کنید:
http://drupal.org/project/footer_message

این ماژول سبب می شود که ویژگی مشابه دروپال 6، در دروپال 7 به وجود بیاید و متغیر فوق الذکر را هم ایجاد می کند و در اختیار پوسته ها قرار می دهد.
با این که از نظر من، اصلا این کار، کار سختی نیست، ولی از این ماژول در این سایت استفاده کردم!

مهاجرت به دروپال 7

بسم الله الرحمن الرحیم
بالاخره، ما هم تصمیم گرفتیم که دروپال 6 را کنار بگذاریم. اکنون وقت آن است که به دروپال 7 مهاجرت کنیم.
کم کم دارم تلاش می کنم تا با ویژگی های جدید دروپال 7 آشنا شوم و معلومات قبلی خود در مورد دروپال 6 را به فراموشی بسپارم!
اولین اقدام هم در این رستا، انتقال وبلاگ خودم از دروپال 6 به دروپال 7 بود. در حال حاضر این سایت از دروپال 7 استفاده می کند. از آن جایی که برای اولین بار بود که یک سایت نسبتا پر محتوا را از نسخه ی 6 به 7 Upgrade می کردم، کمی کار طولانی شد و کمی هم دشوار بود!
در حال حاضر تمامی مطالب سایت به Drupal7 منتقل شده اند، اما هنوز پیکربندی سایت و تنظیمات آن کامل نیست و بعلاوه پوسته ی قبلی سایت را هم دارم به دروپال 7 تبدیل می کنم و به زودی سایت به شکل قبلی خود در خواهد آمد!
برای دوستانی که تا حالا با دروپال کار نکرده اند، باید توضیح دهم که مهاجرت بین نسخه های Major دروپال چندان کار ساده ای نیست. یعنی بر خلاف برخی از CMS های دیگر، آپگرید کردن دروپال می تواند حتی در برخی شرایط بسیار بسیار مشکل باشد. زیرا میزان تفاوت هایی که بین دو نسخه ی 6 و 7 دروپال وجود دارد بسیار زیاد است.
به ویژه برای سایتی که (مثل همین سایت) بیش از 100 تا ماژول فعال دارد، مهاجرت کردن قدری مشکل می شود. سایت های تجاری و بزرگتر که گاهی حدود 400 ماژول فعال دارند کار پر زحمتی خواهد بود.
در ادامه شرحی از تجربیاتی که کسب کردم خواهم نوشت.

ماژول htmlmail و خراب کردن فیلد ارسال کننده ی ایمیل

ماژول htmlmail یکی از ماژول های دروپال است که کمک می کند ایمیل های ارسال شده توسط دروپال، استایل دهی شوند.

به این ترتیب که شما می توانید یک فایل قالب (.tpl.php) ایجاد کنید و ایمیل های ارسالی توسط دروپال (به تفکیک نوع ایمیل) توسط این فایل template قالب دهی شوند.

ماژول htmlmail به ماژول mailsystem به عنوان پیش نیاز، احتیاج دارد.

متاسفانه یک مشکلی که این ماژول ایجاد می کند، این است که آدرس ارسال کننده ی ایمیل را دستکاری می کند و آن را خراب می کند.

مزایای استفاده از Drush برای مدیریت دروپال!

Drush مخفف Drupal Shell است و یک ابزار خط فرمانی برای مدیریت دروپال می‌باشد.

به کمک Drush می‌توان خیلی از اعمال مدیریتی یک یا چند سایت دروپالی (شبکه) را با سهولت خیلی زیاد انجام داد.

در حالت عادی، برای مدیریت یک سایت دروپالی، باید سایت را در مرورگر باز کنیم، در سایت لاگین کنیم و با استفاده از منو های موجود در سایت، به صفحه‌ی مدیریتی مورد نظرمان برویم و عمل مورد نظر را انجام دهیم.
برای کسی که فقط مدیریت یک و یا تعداد کمی سایت را بر عهده دارد، این کار، دشوار نیست. اما اگر مدیریت چند ده تا سایت دروپالی را بر عهده داشته باشید، این کار می‌تواند وقت‌گیر و کسل کننده باشد.

با نصب Drush بر روی سرور، می‌توان سایت‌های موجود بر روی سرور را به راحتی از طریق یک کنسول ساده‌ی SSH کنترل کرد.

قبل از هر چیز، باید عرض کنم که این مطلب برای کسانی است که مدیریت سرور را بر عهده دارند. در صورتی که شما با مدیریت سرور آشنایی ندارید، این مطلب برایتان مفید نخواهد بود.

هنگامی که با امکانات Drush آشنا شوید، بدون شک علاقه مند می‌شوید که از آن استفاده کنید. زیرا حقیقتا ابزار بسیار مفید و ارزنده ای است و به نظر من، برای یک دروپالیست جدی، آشنایی با Drush ضروری است.

حذف پیشوند جداول در database

گاهی در برخی شرایط لازم می شود که پیشوند جدول ها را از درون Database حذف کنیم. برای این منظور کافی است table ها را یکی یکی ویرایش کرده و نام آن را اصلاح کنیم که کار وقت گیری است.

اما آقای Mark Crandell اسکریپتی نوشته است که کار من را خیلی ساده کرد. این اسکریپت در این آدرس موجود است:

http://drupal.org/node/403742

سورس آن هم به صورت زیر است:

ساخت داشبورد سفارشی در دروپال به کمک ماژول homebox

ساختن داشبورد در دروپال، آنقدرها هم سخت نیست!
اگر در سایت Drupal.org عضو هستید، به آدرس http://drupal.org/user بروید و سپس روی تب Dashboard کلیک کنید. همان طور که می‌بینید، یک محیط داشبورد با قابلیت سفارشی سازی در یک محیط مجهز به Drag and Drop در پیش روی شما قرار می‌گیرد.

نمونه‌ی دیگر این نوع داشبورد، پیشخوان وردپرس است. و همچنین ماژول Dashboard در دروپال 7.

برای ساختن این گونه داشبورد ها، از ماژول homebox استفاده می‌شود.
خود سایت Drupal.Org هم برای ساخت داشبورد کاربران از این ماژول استفاده کرده است.

نکته: این مقاله راجع به ماژول homebox نسخه‌ی 6.x-3.0-beta5 است.

نکته: اگر این ماژول را نصب می‌کنید، توجه کنید که پس از ایجاد یک Homebox جدید، حتما موارد زیر را انجام دهید تا داشبورد شما به درستی کار کند:

صفحه‌ها

اشتراک در RSS - سیاره دروپال فارسی