jquery و php اب اوتحم تیریدم متسیس یحارطjquery و php اب اوتحم...

20
jQuery وPHP با محتوا مدیریتیستم طراحی س مولفKae Vernes ترجمان م حسن موحد- رتضی حمزه سرکانی م

Upload: others

Post on 25-Aug-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

jQuery و PHP طراحی سیستم مدیریت محتوا با

مولفKae Vernes

مترجمان مرتضی حمزه سرکانی - حسن موحد

Page 2: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ
Page 3: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

»سپس، به کاتبان و نویسندگانت بنگر و بهترین آن ها را بر کارهای خود بگمار...کاتبان و نویس�ندگانی برگزین که قدر خود را بشناس�ند، چون کس�ی که به قدر خود ش�ناخت

»برگرفته از نامه ی 53 نهج البالغه به مالک اشتر«ندارد، دیگران را هم نمی شناسد.«

اگرچه نوشتن و پرداختن زکات علم از توصیه های اکید بزرگان و گواه بر کرامت اهل دانش است، اما امروزه پرداختن به انگیزه ها و اهداف نوشتن بیشتر جلوه می کند. بی شک این که چه کسی می نویسد مهم نیس��ت، اما این که چرا و به چه پشتوانه ای می نویس��د، درخور تأمل است. ما معتقدیم که چاپ روزاف��زون کتاب های به اصطالح »زرد« که خالی از هرگونه نوآوری و بی توجه به اس��تانداردهای چاپ کتاب و نیازهای مخاطبان اس��ت، حاصل تفکر بازاری مستولی بر جامعه ی نشر است. بی پرده آن که عنوان پر زرق و برق، دستاویز قرار دادن مضمون های نو با هدف فروش باال و طویل کردن سیاهه ی سابقه ی علمی، نمی تواند دلیل محکمی برای چاپ و نشر کتابی باشد که خواننده ی مشتاق

با صرف هزینه های نه چندان کم آن را تهیه می کند؛ به امید آن که چیزی از آن بیاموزد.باید پذیرفت که انگیزه ی نوش��تن کم از محتوای نوشته نیست و بین این دو رابطه ای مستقیم برقرار اس��ت. اگر انگیزه از نوش��تن، تولید دانش باشد، بی شک نویس��نده از قلم بی محتوا وکم عمق پرهی��ز می کن��د و اگر دغدغه ی دان��ش و فرهنگ زخم خورده در میان باش��د، ناش��ر تنها به عنوان

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

نام و رسم و ثروت تهی کنند.

انتش��ارات دانش��گاهی کیان خ��ود را بری از عیب و خط��ا نمی داند، اما هم��واره بیش از پیش می کوش��یم تا در راستای تولید علم و نشر کتاب های پرمحتوا، دس��ت نویسندگانی که انگیزه ی پاک دارند را فشرده و در کنارشان باشیم و از خداوند متعال می خواهیم که در این مسیر صعب و پرخطر

در س��ایه ی لطف و عنایت خود از آن چه به عهده ی ما نهاده ش��ده، س��ربلند و پیروز برآییم.

انتشارات دانشگاهی کیان

سخنی با خوانندگان

Page 4: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ
Page 5: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

همان طور که می دانید امروزه حضور صرف در فضای مجازی و داش��تن وب سایت ارزش چندانی ندارد و ابداع خدمات و توسعه ي ایده های جدید در فضای مجازی است که زندگی بشر را تحت تاثیر قرار می دهد. از این رو، ابزارهایی مانند سیستم های مدیریت محتوا، راه را برای پیاده سازی ایده های

خالقانه ي همه ي عالقه مندان به این حوزه باز کرده است. سیستم مدیریت محتوا یا به اختصار انگلیسی CMS، نرم افزاری مبتنی بر وب است که اصول و ش��اخص های نوع خود را دارد. این برنامه ها پلی بین توس��عه دهندگان و طراحان و کاربران به

وجود می آورد. به بیان ساده تر تیمی تشکیل شده از چند متخصص براساس نیازهای کاربران خود سیستمی توس��عه یافتنی را طراح��ی می کنند. توس��عه دهندگان و طراحان می توانند ب��ا تکه کدها و ماژول ها

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

که نویسنده ي کتاب آن را Web work ME نامیده است.ش��ما می توانی��د با مراجع��ه به فصل آش��نایی ب��ا مفاهی��م کت��اب، راهنم��ای کوتاهی از محت��وای فصل ه��ای این کت��اب را بخوانی��د. س��وال ها و انتقاده��ا و پیش��نهادهایتان را به ایمیل

[email protected] ارسال کنید.

پل ارتباطی دیگر بین ما و شما، وب سایت wallfa.com است. با ورود به وب سایت و وارد کردن ایمیل خود شرایط ورود به تیم توسعه را فراهم کنید.

حاصل سال ها تجربه ام کتابی به نام CMS Design Using PHP and jQuery بوده که نویسنده ي آن آقای Kae Verens اس��ت و من به کمک دوس��ت بزرگوارم آقای مرتضی حمزه س��رکانی آن را

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

مرتضی حمزه سرکانی و حسن موحد

سخن مترجمان

Page 6: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ
Page 7: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

CMS فصل اول: طراحی هسته ي16 ................................................................................... CMS بخش های عمومی و خصوصی18 ......................................................................................................................... بخش مدیریت 19 .................................................................................................................................. افزونه ها 21 ........................................................................................................... فایل ها و پایگاه داده ها ساختار دایرکتوری ................................................................................................................ 2123 ................................................................................................................ ساختار پایگاه داده فایل پیکربندی ......................................................................................................................... 2429 ............................................................................................................................... کنترلر جلوخواندن داده های صفحه از پایگاه داده ................................................................................ 3241 .................................................................................................................................... خالصه

فصل دوم: مدیریت کاربر43 ............................................................................................................................... انواع کاربر44 ..................................................................................................................................... نقش ها 46 ........................................................................................................ جدول های پایگاه داده ها صفحه ي ورود به بخش مدیریت .......................................................................................... 49ورود ........................................................................................................................................ 58خروج........................................................................................................................................ 64رمز عبورهای فراموش شده................................................................................................... 6672 ......................................................................................................................... مدیریت کاربر حذف کاربر ............................................................................................................................. 7576 ........................................................................................................... ایجاد یا ویرایش کاربر79 .................................................................................................................................... خالصه

فصل سوم: مدیریت صفحه – قسمت اول 81 ........................................................................................ CMS نحوه ی عملکرد صفحات در82 ............................................................................. فهرست بندی صفحات در بخش مدیریت 86 ........................................................................................ مشاهده ي سلسله مراتبی صفحات 90 ................................................................................. جابه جایی و چیدن دوباره ي صفحات

فهرست مطالب

Page 8: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

jQuery و PHP طراحی سیستم مدیریت محتوا با

89 89

92 .................................................................................................................... مدیریت صفحات پر کردن غیر همزمان کادر انتخاب والد................................................................................ 101104 .................................................................................................................................. خالصه

فصل چهارم: مدیریت صفحه – قسمت دوم

تاریخ ها .................................................................................................................................. 105108 .................................................................................................................... ذخیره ي صفحه 113 ......................................................................................... ایجاد صفحات سطح باالی جدید115 ................................................................................................... ایجاد زیرصفحه های جدید116 ....................................................................................................................... حذف صفحات118 .............................................................................................. CKeditor با richtext ویرایش122 ............................................................................................................ KFM مدیریت فایل با129 .................................................................................................................................. خالصه

فصل پنجم: الگوهای طراحی – قسمت اولتم ها و الگوها چگونه کار می کنند؟ ..................................................................................... 131الیه های فایل های تم ............................................................................................................. 134137 ......................................................................................................................... Smarty نصب144 ........................................................................................................front-end منوی ناوبری151 .................................................................................................................................. خالصه

فصل ششم: الگو های طراحی- قسمت دوم افزودن jQuery به منو........................................................................................................... 153155 .....................................................................................Filament Group آماده سازي منوي158 .............................................................................................................................. ادغام منو 162 ............................................................................................... انتخاب تم در بخش مدیریت 169 ........................................................... انتخاب الگوی صفحه ای در بخش مدیریت صفحه اجرای Smarty در محتوای صفحه ...................................................................................... 172174 .................................................................................................................................. خالصه

فصل هفتم: افزونه ها افزونه ها چه هستند؟ ............................................................................................................ 176177 ................................................................................................................... CMS رویداد های178 ......................................................................................................................... انواع صفحه

Page 9: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

89 89

178 ................................................................................................................ بخش های مدیریت 178 ............................................................................... سایر ویژگی های فرم مدیریت صفحه پیکربندی افزونه ي نمونه ..................................................................................................... 178181 ............................................................................................................ فعال سازی افزونه ها 186 ........................................................... کنترل به روز رسانی ها و جدول های پایگاه داده ها 189 ........................................................................................... منوی سفارشی بخش مدیریت 197 .............................................................................................CMS اضافه کردن رویدادی به203 .................................................................................. افزودن زبانه ها به مدیریت صفحات 210 .................................................................................................................................. خالصه

فصل هشتم: افزونه ي فرمنحوه ی عملکرد افزونه ي فرم .............................................................................................. 211212 ................................................................................................................... پیکر بندي افزونه 215 ...................................................................................................... انواع صفحه در مدیریت 218 ............................................ اضافه کردن فرم هاي محتواي سفارشي به مدیریت صفحه 225 ............................................................................................................. تعریف فیلد هاي فرم 230 ..................................................................................................... front-end نمایش فرم در236 ................................................................................................................. کنترل ارسال فرم ارسال از طریق ایمیل............................................................................................................ 239240 ....................................................................................................... ذخیره در پایگاه داده ها استخراج داده هاي ذخیره شده.............................................................................................. 242245 ................................................................................................................................... خالصه

فصل نهم: افزونه ي گالری تصاویر248 .................................................................................................................... پیکر بندی افزونه249 ..................................................................................................... زبانه های مدیریت صفحهتنظیمات اولیه......................................................................................................................... 251آپلودکردن تصاویر............................................................................................................... 252254 ........................................................................................................................ کنترل آپلودهاحذف تصاویر........................................................................................................................ 257259 ...................................................................................................... front-end نمایش گالری263 ......................................................................................................................settings زبانه ي270 ................................................................................................................................... خالصه

فهرست مطالب

Page 10: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

jQuery و PHP طراحی سیستم مدیریت محتوا با

1011

فصل دهم: پنل ها و ابزارک ها – قسمت اول272 ............................................................................................................ Panel ایجاد افزونه ي278 ......................................................................................................................... نمایش پنل ها 282 ............................................................................................Content snippet ایجاد افزونه ي283 ...................................................................................................... افزودن ابزارک ها به پنل نمایش ابزارک ها ................................................................................................................... 283285 .................................................................................................. کشیدن ابزارک ها به پنل ها 288 ........................................................................................................ ذخیره ي محتواهای پنل291 ............................................................................................. front-end نشان دادن پنل ها در293 ................................................................................................................................... خالصه

فصل یازدهم: پنل ها و ابزارک ها – بخش دوم295 .................................................................................................................... فرم ها ی ابزارک ذخیره ي محتوای تکه کد........................................................................................................ 302تغییر نام ابزارک ها ............................................................................................................... 305306 .............................................................................................. قابلیت دیدن سربرگ ابزارک 307 ..................................................................................................... غیر فعال سازی ابزارک ها 309 ............................................................................................................... غیر فعال سازی پنل 310 ............................................................................................................................... حذف پنل دیدن صفحه ي پنل کد بخش مدیریت ................................................................................. 311317 ......................................................................................... front-end دیدن صفحه ي پنل کد317 ......................................................................................................... دیدن صفحه ي ابزارک 319 .................................................................................................................................. خالصه

فصل دوازدهم: ساخت برنامه ی نصب322 ............................................................................................................ نصب ماشین مجازی322 ....................................................................................................................virtualbox نصب323 ............................................................................................................ نصب ماشین مجازی328 ...............................................................................................................VM در CMS نصب330 ............................................................................................................. ایجاد برنامه ي نصب 331 .......................................................................................................... تغییرات سیستم هسته333 ......................................................................................... جست وجوی ویژگی های گم شده338 .................................................................................................... افزودن جزئیات پیکربندی344 ................................................................................................................................... خالصه

Page 11: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

1011

PHP و jQuery، دو نمونه از مشهورترین چارچوب های منبع باز به کار رفته برای طراحی وب هستند.

در این کتاب اس��تفاده از توانایی های این دو برای ساخت هسته ی CMS و استفاده از آن در بیشتر پروژه ها بدون نیاز به بازنویسی کدها و نیز نحوه ی اضافه کردن افزونه های سفارشی را می آموزید

که می توانید از آن ها برای توسعه ي پروژه های خود در آینده استفاده کنید. در این کتاب نحوه ی ایجاد هس��ته ي CMS، ش��امل ایجاد صفحات پایه و مدیریت کاربر و به دنب��ال آن معم��اری افزونه و افزونه ه��ای نمونه را می آموزید. با روش های یاد ش��ده در این کتاب متوجه می ش��وید که می توانید با کم��ک یک کد مبنا، الگو های طراحی وب و افزونه های سفارش��ی نوشته ش��ده برای هر نوع تفاوت های مخصوص س��ایت و وب سایت ها و پروژه های متفاوتی ایجاد

کنید. در همه ی قسمت های این پروژه، نمونه کدها و توضیحات ارایه شده است.در این کتاب اس��تفاده از MySQL ، PHP و jQuery برای س��اخت CMS و نیز تکمیل آن به کمک معماری افزونه ها و مدیریت کاربر و طراحی سایت با الگوها و برنامه ي نصب را آموزش می دهیم.

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

سایت انتخاب شده که از هک شدن CMS هسته ای جلوگیری می کند، ارتقا دهید.در پای��ان این کتاب، CMS را به طور کامل طراحی خواهید کرد که از آن می توانید برای ایجاد

دامنه ي وسیعی از طراحی ها و توانایی های سایت استفاده کنید.

مقدمه

آشنایی با مفاهیم کتاب

Page 12: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

jQuery و PHP طراحی سیستم مدیریت محتوا با

1213 1213

آنچه در این کتاب می خوانیدفصل یک، طراحی هس�ته ي CMS: در این فصل درباره ی نحوه ی عملکرد سیستم مدیریت محتوا و ش��یوه های متعدد مدیریت آن بحث می کنیم و به دنبال آن، کدهایی ارایه می دهیم که امکان بازیابی

صفحه ای از پایگاه داده ها را براساس URL درخواستی فراهم می کند. فص�ل دو، مدیری�ت کارب�ر: در این فصل درباره ی CMS توضیحات بیش��تری می دهیم تا بخش��ی مدیریتی ایجاد کنیم که کاربر را تایید می کند، سپس با یک سیستم مدیریت کاربر که شامل مدیریت

رمز عبور فراموش شده و استفاده از Captcha است، آن را به پایان می رسانیم.فصل س�ه، مدیریت صفحه - قس�مت اول: در این فصل درباره ي مدیریت صفحات بحث می کنیم و

نیمه ي اول یک سیستم مدیریت صفحه را در بخش مدیریت می سازیم.فص�ل چه�ار، مدیریت صفحه – قس�مت دوم: در این فصل، سیس��تم مدیری��ت صفحه را همراه با

کدهایی برای ویرایش rich-text و مدیریت فایل تکمیل می کنیم.فص�ل پنج، الگوهای طراحی – قس�مت اول: در این فصل، درب��اره ی عملکرد Smarty بحث می کنیم، cdesign س��ایت تمرکز می کنیم و سپس س��اخت یک موتور الگوی مخصوص ایجاد front-end روی

برای front-end و منوی ناوبری ساده ای را شروع می کنیم. فصل ش�ش، الگوهای طراحی – قس�مت دوم: در این فصل منوی ناوبری که در فصل پیش س��اخت آن را ش��روع کردیم با افزودن مقداری jQuery تکمیل می کنیم و طراحی موتور الگوس��ازی را به پایان

می رسانیم.فص�ل هف�ت، افزونه ها: در این فصل درباره ی چگونگی عملک��رد افزونه ها بحث می کنیم و آن را از

طریق ساخت افزونه ای برای رسیدگی به نظریات صفحه نشان می دهیم. فصل هشت، افزونه ی Forms: در این فصل با ایجاد یک افزونه ي Forms، معماری افزونه را کامل تر

می کنیم. با این اصالحات، امکان ایجاد صفحات جدید با افزونه ها را فراهم می کنیم. فصل نه، افزونه ي گالری تصاویر: در این فصل یک افزونه ي گالری تصاویر ایجاد می کنیم و نظارت

بر آپلود و مدیریت تصاویر را به شما آموزش می دهیم. فصل ده، پنل ها و ابزارک ها – قسمت اول: در این فصل عملکرد پنل ها و ابزارک ها را شرح می دهیم. پنل ها و ابزارک ها امکان ایجاد الگوهای بسیار انعطاف پذیر را فراهم می کنند که در آنجا مدیرانی که

متخصص نیستند هم می توانند الیه های صفحه ی خود را طراحی کنند. فص�ل ی�ازده، پنل ه�ا و ابزارک ه�ا – فصل دوم: در این فصل سیس��تم پنل ها را ب��ا ایجاد ابزارک Content Snippet تکمیل می کنیم و امکان قرار گرفتن بخش های HTML را به طور تقریبی در هر جای

یک صفحه فراهم می سازیم و حتی تعیین می کنیم که در کدام صفحه ظاهر شوند.

Page 13: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

1213 1213

فصل دوازده، ساخت برنامه ی نصب: در این فصل ایجاد یک برنامه ي نصب با ماشین های مجازی و کمک به امتحان کردن برنامه ي نصب نشان می دهیم.

برای استفاده از این کتاب باید با علوم زیر آشنایی داشته باشید PHP5.2

jQuery 1.4

jQuery-UI 1.8

بیش��تر کدهای این کتاب در سیستم عامل های ویندوز یا Mac به خوبی کار می کنند؛ اما برای اینکه با نمونه ي کاری ما هماهنگ باش��د، توصیه می کنیم از لینوکس استفاده کنید. در این کتاب برای ایجاد Cent OS 5.2و ب��رای آزمایش در فصل دوازده یعنی س��اخت برنامه ی نصب از Fedora 13 از CMS

استفاده کرده ایم.

زمینه های کاربرد این کتاب اگ��ر می خواهید jQuery را در هن��گام عمل با کد PHP و MySQL در مت��ن برنامه ای واقعی ببینید، این کتاب به ش��ما کمک می کند. این کتاب برای طراحانی نوشته شده که اسکریپت و وب سایت های متع��ددی نوش��ته اند و می خواهند نح��وه ی ترکیب آن ها در یک بس��ته و نیز اس��تفاده از آن برای س��اده کردن اسکریپت و سایر س��ایت های دیگر خود را بیاموزند. این کتاب را برای افرادی در نظر گرفته ایم که با مبانی PHP و jQuery آش��نایی دارند و می خواهند اس��تفاده ی موثر از آن ها را برای

ایجاد پروژه ای بزرگ و مطلوب کاربر و انعطاف پذیر بیاموزند.

قراردادها در این کتاب س��بک های متنی را می یابید که با انواع مختلف اطالعات متفاوت هس��تند. در این بخش

نمونه هایی از این سبک ها و توضیحی درباره ی مفهوم آن ها آورده شده است. در این اثر، یک بلوک کد به شکل زیر تنظیم می شود:

<servlet>

<servlet-name>I18n Servlet</servlet-name>

<servlet-class>com.liferay.portal.servlet.I18nServlet</serv-

let class>

<load-on-startup>2</load-on-startup>

</servlet>

زمان��ی ک��ه می خواهیم توجه تان را به قس��مت خاصی از یک بلوک کد جل��ب کنیم، خطوط یا آیتم های مدنظر را به شکل برجسته نشان می دهیم:

مقدمه/ آشنایی با مفاهیم کتاب

Page 14: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

jQuery و PHP طراحی سیستم مدیریت محتوا با

1415

<portlet>

<portlet-name>104</portlet-name>

<icon>/html/icons/update_manager.png</icon>

<struts-path>update_manager</struts-path>

<control-panel-entry-category>server</control-panel-entry- category><control-panel-entry-weight>4.0</control-panel-entry-weight><control-panel-entry-class> com.liferay.portlet.admin.

هر ورودی یا خروجی خط فرمان را به صورت زیر می نویسیم:[root@ryuk ~]# yum install VirtualBox

اصطالحات جدید و کلمه های مهم را به صورت برجسته نشان داده ایم؛ برای مثال، کلماتی که در صفحه ي نمایش و منوها و کادرهای محاوره ای می بینید را به صورت متنی مش��ابه زیر نمایش می دهی��م »هنگامی که روی لین��ک Users در منو کلیک می کنیم، انتظار داریم فهرس��تی از کاربران

موجود را ببینیم«.

: هشدار ها و یادداشت های مهم با این نماد نمایش داده می شوند.

: پیشنهاد ها و ترفند ها با این نماد نمایش داده می شوند.

Page 15: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

1415

در این فصل بخش��ی از مبانی ایجاد CMS را می س��ازیم که بتوانیم صفحه ي “hello world“ را ببینیم و صفحه های گمشده1 را نیز بیابیم.

در این فصل به جای اس��تفاده از مثال های عملی بر بحث تکیه می کنیم؛ هرچند در انتها مثال عملی ساده ای نیز خواهیم ساخت، ارایه می کنیم.

هسته ي2 یک CMS ، معماری آن است. همان طور که مادربورد رایانه مهم ترین قطعه ي آن است و بدون آن CPU ، صفحه ي نمایش، RAM و قس��مت های دیگر را نمی توان س��ر هم بندی کرد ، هس��ته CMS نیز مانند اس��تخوان بندی آن اس��ت. این همان چیزی است که پایگاه داده ها ، تعامل مرورگر ها و

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

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

را از وب سایت http://www.wallfa.com دانلود کنید.

1. 404 not found2. Core

فصل 1

CMS طراحی هسته ي

آنچه در این فصل می خوانیم:”؛ ½ front-end“ ،که در دید همگان قرار دارد CMS نحوه ي عملکرد بخشی از

”؛ ½ the admin area” ،روش های متعدد ایجاد بخش مدیریتبحث درباره ی الیه های فایل ها و پایگاه داده ها؛ ½

مروری بر عملکرد افزونه ها. ½

Page 16: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

jQuery و PHP طراحی سیستم مدیریت محتوا با

1617 1617

CMS بخش های عمومی و خصوصییک CMS از دو بخش مدیریت1 و عمومی2 تشکیل می شود.

Front-endتفاوت بسیار جالب بین سایت های CMS و غیرCMS، نوع برخوردشان با یک صفحه ي وب است.

در یک وب س��ایت غیرCMS ، هرگاه URL معینی را از وب س��رور درخواس��ت می کنید ، وب س��رور بررسی می کند که آیا فایل درخواس��تی وجود دارد یا خیر و اگر وجود داشته باشد آن را

بازمی گرداند؛ به همین سادگی! به همین دلیل تعریف بس��یار روش��نی از ماهیت صفحه ي وب وجود دارد که به طور مش��خصی ب��ا URL در ارتب��اط اس��ت. http://example.com/page1.html و http://example.com/page2.html دو صفحه ي وب مشخص هس��تند و با فایل های page1.html و page2.html در ریشه ي اصلی سند های

وب سایت ها مطابقت دارد. در CMS ممکن اس��ت تعاریف کمی مبهم شود. برای مثال تصور کنید در بخش خبری سایت http://example.com/news هس��تید و این قس��مت، بخش هایی از کل خبر های این وب سایت را نشان

می دهد. ممکن است این بخش را به عنوان یک صفحه تعریف کنید. حال برای مثال اخبار را فیلتر می کنید. فرض کنیم که ش��صت آیتم خبری وجود دارد و تنها بیس��ت مورد از آنها در صفحه ي news/ نشان داده می ش��ود. برای دیدن بیست آیتم بعدی باید به آدرس news?page=2/ بروید. آیا این صفحه ای متفاوت اس��ت؟ در یک سایت غیرCMS به طور مسلم این طور اس��ت؛ اما در CMS که با پایگاه داده ها پشتیبانی می ش��ود ، تعریف یک صفحه ممکن است

کمی مبهم تر شود.در یک URL ، CMS های news/ و news?page=2/ ممکن است با دو صفحه ی موجود در سرور

مطابقت نکند. از آنجایی که یک CMS با پایگاه داده ها پش��تیبانی می ش��ود ، الزم نیس��ت که برای هر صفحه یک فایل منبع فیزیکی مجزایی داش��ته باش��یم؛ برای مثال اگر بتوانید محتوای صفحه را از طریق فایل

index.php/ ریشه فراخوانی کنید، الزم نیست که یک فایل news/ برای آن داشته باشیم.

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

1. Admin area2. Front-end

Page 17: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

1617 1617

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

به جای ایجاد صفحات وب به صورت فایل بهتر است از “controller”1 استفاده کنیم تا آنها را از پایگاه داده ها بر مبنای ماهیت URL فراخوانی کنیم. این امر نیاز CMS به داش��تن مجوز نوش��تن

برای بخش عمومی سایت را کاهش می دهد و بنابراین امنیت آن را باال می برد. 2 وجود دارد که در اصل، کاری مش��ابه با این نوع

2 MVC الگوی برنامه س��ازی رایجی به نام controller ارسال می شود؛ سپس "controller" درخواس��تی به سوی ، MVC انجام می دهد. در CMS

آن درخواس��ت را تجزیه می کند و "model" مورد نیاز راه اندازی شده و با داده های فراهم شده اجرا می ش��ود. وقتی model به پایان می رسد، داده های بازگشتی از میان یک الیه ي "view" عبور می کند

تا برای درخواست کننده قابل نمایش باشند. مدل CMS این حالت به این ش��کل اس��ت، یک درخواست HTTP به س��وی وب سایت ارسال می ش��ود. موتور CMS این درخواس��ت را تجزیه می کند، افزونه های مورد نیاز راه اندازی ش��ده و همراه پارامترهای HTTP اجرا می شوند؛ سپس افزونه ها کار خود را به پایان می رسانند. در پایان، نتایج را به س��وی CMS بر می گردانند، که این نتایج را با یک الگوی HTML اجرا می کنند و بار دیگر

به سوی مرورگر می فرستند. CMS از /news?page=2 در اینج��ا یک نمونه ي واقع��ی را مثال می زنیم. در این مث��ال، آدرسدرخواست می شود. CMS ، آدرس news/ را تشخیص می دهد ، افزونه ي “news” را به کار می گیرد، آن را راه ان��دازی کرده و پارامتر “page=2” را از آن عبور می دهد. این افزونه، اطالعات مورد نیاز خود را از پایگاه داده ها فراخوانی می کند و نتایج آن را به CMS می فرس��تد؛ س��پس HTML ، CMS را با گذراندن آن از میان الگو ایجاد کرده و آن را به سوی مرورگر می فرستد. این خالصه ای از عملکرد

بخش عمومی CMS یعنی front-end است. برای بازنویسی این روند به شکل فرایندی عملی ، کاری که CMS در زمان دریافت درخواستی

از مرورگر انجام می دهد به صورت زیر آورده شده است: 1. وب سرور درخواست را به CMS ارسال می کند؛

CMS .2 درخواس��ت را به اجزا ي س��ازنده اش یعنی صفحه ي درخواستی و پارامتر ها؛ تجزیه می کند.

1. کنترل کننده 2. Model-view-controller

CMS فصل اول/ طراحی هسته ي

Page 18: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

jQuery و PHP طراحی سیستم مدیریت محتوا با

1819 1819

1 بازیابی می شود؛ cache 3. این صفحه از پایگاه داده ها یا

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

5. سپس داده های به وجود آمده از طریق الگو در صفحه ي HTML پردازش می شوند؛ 6. در پایان HTML به سوی مرورگر ارسال می شود.

بخش مدیریتبه چند روش می توان پایگاه داده های CMS را مدیریت کرد:

1. صفحات را می توان در جای خود ویرایش کرد. به این معنی که مدیر وارد قسمت عمومی سایت شده و با تفاوت اندکی نسبت به کاربر معمولی در آنجا حاضر می گردد. این کار به مدیر این امکان

را می دهد تا صفحات را در front-end اضافه یا ویرایش کند. 2. عمل مدیریت را می توان از دامنه ای مجزا برای مثال admin.example.com اجرا کرد که به مدیریت

این امکان را می دهد تا از صفحه ي عمومی جدا باشد. 3. مدیریت را می توان از یک دایرکتوری میان سایت انجام داد؛ به گونه ای که تنها کاربران وارد شده

به سیستم و دارای امتیازات دسترسی ویژه می توانند به هر یک از این صفحات وارد شوند. 4. سایت را می توان از برنامه ای اختصاصی خارجی برای مثال یک برنامه ي در حال اجرا در رایانه

شخصی مدیر ، مدیریت کرد.رایج ترین روشی که CMS ها از آن استفاده می کنند ، مدیریت سایت از یک دایرکتوری حفاظت

شده در برنامه است )گزینه ي سه در فهرست باال(.تصمیم گیری درباره ی اینکه از کدام روش استفاده شود ، امری شخصی است و هیچ استانداردی

وجود ندارد که بگوید آن را باید به روشی خاص انجام دهید. ما در اینجا گزینه ي سه را انتخاب می کنیم؛ زیرا نسبت به سایر گزینه ها چند مزیت دارد:

1. نص��ب و ارتقای front-end و بخش مدیریت به عنوان بخش��ی از نصب و ارتقای یک نرم افزار مجزا انجام می ش��ود. در گزینه های دو و چهار، بخش مدیریت از front-end به طور کامل

جداست و الزم است که به روزرسانی ها هماهنگ شود. 2. با جدا نگه داشتن بخش مدیریت از front-end می توانید ساختار ناوبری یا الیه بندی صفحه داشته باشید که به طراحی الگوی front-end وابسته نیست. اگر الگو به هر نحوی محدود

شود ، گزینه ي یک دچار مشکل خواهد شد. 1. حافظه ي نهانی

Page 19: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

1819 1819

3. از آنجایی که بخش مدیریت میان س��اختار دایرکتوری خود س��ایت قرار دارد، از هر جا که وب س��ایت در دسترس باش��د ، آن نیز در دسترس است؛ یعنی هر جایی که به اینترنت

دسترسی داشته باشید می توانید وب سایت را مدیریت کنید. در این کتاب درباره ی س��اخت یک CMS به همراه مدیریت آن در یک دایرکتوری حفاظت شده

در سایت بحث می کنیم.برای انسجام بیشتر، حتی با اینکه نوشتن روش های چندگانه ي مدیریتی مانند مدیریت از راه دور از طری��ق ی��ک API RPC و مدیریت محلی با بخش مدیریتی مبتنی بر دایرکتوری ممکن اس��ت ، منطقی تر آن اس��ت که روی روش منفردی تمرکز ش��ود. با این کار می توانید خصوصیات جدید را سریع تر توسعه دهید و نیازی نیست تا توابع مدیریتی را دو یا چند بار بنویسید و همچنین مشکالت را در جاهایی که تغییر در یک API ممکن اس��ت در یک بخش اصالح ش��ود و در بخش دیگر نشود،

برطرف می کند .

افزونه ها افزونه ها قدرت واقعی و پشت پرده ي نحوه ي عملکرد یک CMS هستند. از آنجایی که همه ی سایت ها با هم متفاوت هس��تند ، نوشتن یک CMS منس��جم و مجزا که به همه ي کارها به طور کامل رسیدگی کند، عملی نیس��ت. درواقع این اش��تباه بزرگی اس��ت که بخش مدیریت یک سایت از چنین CMSای اس��تفاده کند. در چنین حالتی الزم است که حتی برای س��اده ترین سایت ها نیز بخش های ویرایش

پیچیده ای داشته باشید تا بتوانید همه ی حالت های کاری را پاسخ گو باشید. به جای این، روشی که ما از آن برای رسیدگی به اختالفات بین سایت ها استفاده می کنیم، به

کار گیری هسته ای بسیار ساده و توسعه ي آن با افزونه هاست.افزونه ها هر چیزی را که هس��ته نمی تواند از عهده اش برآید، رس��یدگی کرده و ش��کل های

مدیریت خودشان را اضافه می کنند. در بخش های بعد درباره ی کارکرد افزونه ها بحث می کنیم و اکنون مروری سریع بر آن داریم. انواعی از افزونه ها وجود دارد که س��ایت می تواند از آنها اس��تفاده کند. بارزترین آنها افزونه هایی

هستند که نوع صفحه را تغییر می دهند.صفحه ي پیش فرض یا عادی جایی است که متنی را در بخش مدیریت وارد می کنید و آن متن

همان طور که وارد شده در front-end نمایش داده می شود.

CMS فصل اول/ طراحی هسته ي

Page 20: jQuery و PHP اب اوتحم تیریدم متسیس یحارطjQuery و PHP اب اوتحم تیریدم متسیس یحارط 11 10 لوا تمسق – اهکرازبا و اهلنپ

jQuery و PHP طراحی سیستم مدیریت محتوا با

2021 2021

نمونه ای از تغییراتی که با افزونه انجام می ش��ود این است که شما یک افزونه ي گالری دارید ک��ه در آن یک دایرکت��وری از تصاویر در بخش مدیریت انتخاب می کنید و آن تصاویر به خوبی در

front-end نمایش داده می شود.

در این حالت ، بخش مدیریت باید بسیار متفاوت با front-end باشد. کنت��رل این حالت در بخش مدیریت به این صورت اس��ت که وقت��ی صفحه ي گالری را ایجاد می کنی��د ، CMS درمی یاب��د که این صفحه از نوع گالری اس��ت و می داند که افزونه ي گالری بخش مدیریتی مخصوص دارد که از آن می توان برای این صفحه استفاده کرد )برخی افزونه ها این بخش

را ندارند( و بنابراین این شکل از آن به جای شکل عادی نمایش داده می شود.به طور مش��ابه در CMS ، front-end درمی یابد که صفحه ی درخواست شده صفحه ای از نوع “گالری“ اس��ت و افزونه ي گالری برای نشان دادن داده های صفحه به شیوه ای معین، کنترل کننده ای دارد و ب��ه جای چاپ بدنه ي عادی متن از افزونه می پرس��د که چ��ه کاری انجام دهد. به این ترتیب

همان کار را انجام می دهد، سپس گالری تصاویر را به خوبی نمایش می دهد.افزونه ای که کمتر به چشم می آید، شاید چیزی مانند یک logger باشد. در این حالت افزونه ي log ممکن اس��ت تعدادی آغازگر1 داش��ته باش��د که هر یک از آنها توابعی را در فایل های افزونه ي

log اجرا می کند؛ برای مثال آغازگر onstart ممکن اس��ت به زمان شروع بارگذاری صفحه توجه کند

و onfinish اطالعاتی مانند زمان صرف ش��ده برای بارگذاری صفحه از طرف س��رور، میزان مورد استفاده از حافظه و اندازه ی HTML آن صفحه و اطالعاتی مانند آن را ثبت کند.

معادل دیگر trigger ، رویداد2 است. این دو لغت را می توان به جای یک دیگر به کار برد. رویداد ، لغتی با س��ابقه در JavaScript اس��ت و با ایده ی آغازگر ها در مجموعه ي اصطالحات پایگاه داده ها

برابر است. در این کتاب از آغازگر استفاده می کنیم ؛ اما مفهوم آنها یکسان است. با در نظر داش��تن این مطالب، می دانیم که با توجه به شش نکته ي یاد شده، جریان بارگذاری صفحه به ش��کل ساده و در حقیقت شامل تعداد زیادی از بررسی آغازگران کوچک است تا دریابد

افزونه ها در چه زمانی باید فراخوانی شوند و آیا به این فراخوانی نیاز هست یا خیر.

1. Trigger2. Event