WordPress بر پایه CakePHP

July 20, 2011 at 10:45 am

بدون شک وردپرس بزرگترین و محبوبترین سیستم وبلاگ نویسی (یا بهتر بگوییم مدیریت محتوا) است که با اختیارات فراوانی که به کاربر می دهد هنوز بصورت رایگان ارائه می‌شود. کیک پی‌اچ‌پی هم جزء برترین فریم‌ورک‌های PHP موجود است که سهم قابل توجهی در بازار دارد. اما آیا می توان وردپرس را بر پایه کیک پیاده سازی کرد؟!

اگر چه هسته وردپرس خوب نوشته شده است اما بنظرم پیاده سازی الگوی MVC کیک، می‌تواند وردپرس را برای توسعه دهند‌گان آن دگرگون کند.برای مثال قالب یا همان Layout وردپرس را تصور کنید، شلوغ و نامفهوم به نظر می‌آید(هرچند مستندات وردپرس جای هیچ سئوالی را بی‌پاسخ نگذاشته است). طراح مجبور است یک صفحه را به چند بخش در چندین فایل مجزا کند اما با معماری MVC همه در یک مجموعه منظم خواهند بود. مسلماً این پیاده سازی چالش های بزرگی خواهد داشت چرا که وردپرس یک سیستم ساده نیست امنیت و وسعت اختیارات فاکتورهای مهمی هستند که نباید نادیده گرفته شوند.

Tim Trice فردی است که روی این پروژه که اسم آن را CakePress گذاشته است کار می‌کند. کیک‌پرس هنوز در حال توسعه است و تمام قابلیت‌های وردپرس را ندارد اما بدنه و قابلیت‌های اصلی را پوشش داده است. می‌توانید CakePress را از گوگل کد از اینجا دریافت کنید. برای افرادی که با معماری دیتابیس وردپرس و همچنین MVC در کیک آشنایی دارند سورس این پروژه می تواند یک منبع آموزشی عالی برای فراگیری CakePHP باشد.توضیحات بیشتر را می‌توانید در وبلاگ Tim در اینجا بیابید.

وارد کردن اطلاعات از Excel به MySQL با PHP

July 10, 2011 at 09:22 am

در بخشی از آخرین پروژه ایی که این روزها در حال نوشتن آن هستم لازم بود قابلیت Mail Merge مایکروسافت ورد، تحت وب پیاده سازی شود. بعبارتی کاربر یک الگو در قالب فرمت doc یا docx ایجاد می نمود و بعد از آنالیز الگو، داده های متناظر از یک فایل با فرمت اکسل در بلوک ها قرار می گرفت و فایل نهایی آماده سازی می شد. به واسطه فیلتر سازی داده های فایل اکسل و استفاده بهینه از کد راهی مناسب تر از ایمپورت داده ها از قالب Excel به Mysql پیدا نکردم. اصولاً بکارگیری نرم افزارهای آفیس مایکروسافت در محیط وب با PHP، بخصوص ویرایش فایل های ساخته شده با این مجموعه کار ساده ایی نیست. هرچند استفاده از COM در این موارد چاره ساز است اما محدودیت به سیستم عامل ویندوز را به همراه خواهد داشت.

ساده ترین راه برای انتقال داده ها، ذخیره فایل اکسل با فرمت های xls یا xlsx در قالب فرمت csv توسط مایکروسافت اکسل و ایمپورت آن به Mysql بود. این فرمت خلاصه شده عبارت comma-separated values ( مقادیر جدا شده با کاما) می باشد که داده ها را بصورت جدولی در یک فایل متنی که می توان آن را با یک وبرایش گر متن باز کرد ذخیره می کند. در حقیقت شماره خطها به ردیف های جدول و داده های جدا شده با کاما به فیلدها اشاره دارند. اما تبدیل به csv توسط اکسل UTF-8 را به خوبی پشتیبانی نمی کند و داده های فارسی در تبدیل قابل استفاده نیستند و اینکه می بایست کاربر عملیات تبدیل را خودش انجام می داد و فایل csv را برای ایمپورت وارد می کرد در حالی که استفاده از فایل اکسل با فرمت معمولی xls یا xlsx ارجحیت داشت.

خوشبختانه کلاس PHPExcel به اندازه ایی خوب و کامل نوشته شده بود که دغدغه نوشتن کلاس جدید را نداشتم. این کلاس که بر پایه استانداردهای OpenXML مایکروسافت نوشته شده است قابلیت نوشتن و خواندن از فایل Excel را براحتی فراهم می کند. برای وارد کردن اطلاعات از فایل Excel به Mysql تکه کد زیر را نوشتم: ادامه مطلب …

استفاده از jQuery برای صفحه‌بندی در CakePHP

May 31, 2009 at 12:32 am

بعد از یک مدت تقریبا طولانی ننوشتن در اینجا، در این پست قصد دارم به طور خلاصه درمورد آژاکسی کردن صفحه‌بندی پیشفرض CakePHP توسط jQuery بنویسم.
ابتدا آخرین نسخه‌ی jQuery را دریافت و آن را به صورت زیر در layout فراخوانی کنید. دقت کنید jQuery تان ویرایش 1.3 یا به بالا باشد چون قرار است از تابع live که در این ویرایش افزوده شده است استفاده کنیم:

<?php
echo $javascript->link('jquery-1.3.2.min');
?>

پیشنهاد می‌کنم برای تکه کد زیر که قرار است درخواست‌ کلیک بر روی لینک صفحات را به صورت آژاکس ایجاد کند، یک فایل js جدید بسازید یا اینکه می‌توانید آن‌ را مستقیم در layout اضافه کنید:

$('a[href*=/page:]').live('click', function(){
    $('#content').load($(this).attr('href'));
    return false;
});

کار تمام است با کلیک بر روی شماره صفحات محتوا به صورت آژاکس بارگذاری می‌شود. اما یکسری نکات ریز که شاید از قلم انداخته باشید:

کامپوننت RequestHandler را می‌بایستی به کنترلرتان افزوده باشید. دلیل آن روشن است چرا که باید نوع تقاضای کنترلر را، تشخیص دهد و layout را بصورت خودکار به Ajax تبدیل کند. برای درک بیشتر این موضوع پیشنهاد می‌کنم تغییرات بوجود آمده درپی افزودن یا حذف این کامپوننت را از طریق کنسول FireBug دنبال کنید. ادامه مطلب …

کاربرد کامپوننت Authentication در CakePHP

March 11, 2009 at 10:34 pm

در این پست با یک مثال کاربردی به معرفی کامپوننت Authentication در فریم‌ورک قدرتمند CakePHP خواهیم پرداخت. بصورت ساده یک مدل تصدیق هویت کاربر ایجاد می‌کنیم که برای ورود به بخش مدیریت، کاربر می‌باید وارد سیستم شود. در پست بعدی در مورد تصدیق هویت در کیک، با اضافه کردن دو کامپوننت ACL و Cookie سیستم پایدارتری ایجاد خواهیم کرد.

در این آموزش فرض شده است اصول کار با کیک را فراگرفته‌اید. می‌توانید کیک را نصب کنید، تنظیمات اولیه را مقداردهی کنید و Cake Bake (پختن کیک) را با کنسول انجام دهید و … اگر آماده نیستید به سری آموزش‌های قبل (ساخت لینکدونی با CakePHP) رجوع کنید و بعدا برگردید. ضمنا از آخرین نسخه پایدار CakePHP و PHP 5 استفاده می‌کنیم.

خوشبختانه نصب و بکارگیری کامپوننت توکار auth ساده‌ترین شکل ممکن برای داشتن یک سیستم ورود کاربر است. مانند همه کامپوننت‌ها، با افزودن ‘Auth’ به پارامتر $components کامپوننت به کنترلر شما افزوده می‌شود. چون قصد داریم از این کامپوننت در دیگر کنترلر‌ها نیز استفاده کنیم برای جلوگیری از تکرار، آن را به AppController اضافه می‌کنیم. بنابراین فایلی بنام app_controller.php در شاخه اصلی app تان با محتوای زیر ایجاد کنید:

class AppController extends Controller {
	var $components = array('Auth');
}

روشن است که چون دیگر کنترلر‌ها فرزند AppController هستند خصوصیات آن را به ارث خواهند برد. بگذارید کمی در مورد قوانین توکار این کامپوننت بگویم. بطور پیشفرض این کامپوننت انتظار دارد شما جدولی بنام users با فیلدهایی بنام username و password داشته باشید.‌ اما در برخی موارد خاص، پایگاه داده بدلایل امنیتی اجازه نمی‌دهد که برای یک فیلد نام password را انتخاب کنید. مشکلی نیست ما این عرف را برهم میزنیم و از نام دلخواه خودمان استفاده می‌کنیم. ابتدا یک جدول بصورت زیر بسازید: ادامه مطلب …

Page: 1 | 2 | 3 | 4 | 5 | 6 | 7