رفتن به مطلب

آموزش ساخت هوک (Hook)


پست های پیشنهاد شده

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

 

مرحله 1: ابتدا باید هوک جدید را در فایل FrontController.php ایجاد کنید. برای این کار به مسیر "prestashop\classes" رفته و فایل FrontController.php را باز کنید. کد زیر پیدا کنید:

 

 

self::$smarty->assign(array(
'HOOK_HEADER' => Module::hookExec('header'),
'HOOK_TOP' => Module::hookExec('top'),
'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn')
));

 

برای اضافه کردن هوک جدید باید کد زیر را به کدهای بالا اضافه کنید. (من اسم هوک جدیدم را topCenter گذاشتم. میتونید هر نامی که خواستید برای هوک جدید انتخاب کنید) :

 

'HOOK_Top_Center' => Module::hookExec('topCenter') // New Hook

 

 

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

 

 

self::$smarty->assign(array(
'HOOK_HEADER' => Module::hookExec('header'),
'HOOK_TOP' => Module::hookExec('top'),
'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn'),
'HOOK_Top_Center' => Module::hookExec('topCenter')
));

 

مرحله 2: در این مرحله باید اطلاعات هوک جدید را در دیتابیس وارد کنید. برای این کار وارد "php_myadmin" هاست شده و دیتابیس پرستاشاپ را انتخاب کنید. از میان گزینه های سمت چپ صفحه روی گزینه "ps_hook" کلیک کنید تا لیست تمام هوک های موجود باز شود. همانطور که مشاهده می کنید هر هوک شامل چند مشخصه است. یکی از این مشخصه ها "id_hook" است. ببینید "id_hook" مربوط به آخرین هوک، چند است. حالا بر روی گزینه "insert" در بالای صفحه کلیک کنید. در قسمت value مقادیر زیر را برای هر فیلد وارد کنید.

 

 

[align=right]id_hook ------> شناسه هوک که مقدار آن باید یکی بیشتر از شناسه آخرین هوک باشد.

name --------> نام هوک (برای مثال : topCenter)

title ---------> عنوان هوک (برای مثال : Top of Center)

description --> توضیحاتی درباره هوک که اختیاریه. می تونید خالی بزارید.

در آخر روی "GO" کلیک کنید تا هوک جدید ساخته بشه.

 

مرحله 3: حالا باید مشخص کنید که چه ماژول هایی می تونن تو این هوک قرار بگیرن. به عنوان مثال در اینجا میخواهیم این هوک را برای ماژول blockpermanentlinks (بخش لینک های دائمی) تعریف کنیم. پس به مسیر prestashop\modules\blockpermanentlinks رفته و فایل blockpermanentlinks.php را باز کنید. همانطور که مشاهده می کنید هوک ها در این فایل به وسیله تابع زیر فراخوانی شده اند:

	function hookLeftColumn($params){
	return $this->display(__FILE__, 'blockpermanentlinks-header.tpl');
}

پس شما هم هوک جدید را به وسیله این تابع به این فایل اضافه کنید:

	function hooktopCenter($params){
	return $this->display(__FILE__, 'blockpermanentlinks-header.tpl');
}

 

مرحله 4: در این مرحله باید هوک جدید را با توجه به نیازتون در یکی از فایل های tpl قالبتون فراخوانی کنید. مثلا این هوک را می خواهیم در header.tpl فراخوانی کنیم. به مسیر prestashop\themes\yourtheme رفته و فایل header.tpl را باز کنید. با استفاده از کد {$HOOK_Top_Center} هوک جدید را فراخوانی می کنیم:

 

 

{$HOOK_Top_Center}

 

 

مرحله 5: به قسمت مدیریت پرستاشاپ و مسیر "ماژول ها > موقعیت ها" رفته و روی گزینه نشاندن یک ماژول کلیک کنید. از قسمت ماژول نام ماژولی که هوک را برای آن تعریف کردید (ماژول بخش لینک های دائمی) و از قسمت "جایگیری در" نام هوک جدید را انتخاب کنید و روی ذخیره کلیک کنید.

 

حالا با فعال کردن کامپایل اجباری از مسیر "تنظیمات > کارایی ها" و رفرش سایت می تونید تغییرات را مشاهده کنید.

[/align]

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

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

 

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

تشکر ویژه از شما دوست عزیز

واقعا عالی بود .

با وجود اینکه دکمه تشکر رو هم زدم می خواستم به صورت ویژه از این پست تشکر کرده باشم

دست مریزاد و سپاس فراوان .

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

  • 3 months later...

برای این که فایل هسته رو تغییر ندید یا وارد دیتابیس نشید دو راه هست که در ماژول مربوطه بو صورت php می تونید اعمال کنید

در فایل php مربوطه کد زیر رو به جای استفاده از مرحله 1 آموزش استفاده کنید:

 

global $smarty;
$smarty->assign(array(
'HOOK_Top_Center' => Module::hookExec('topCenter') // New Hook )); 

 

 

برای افزودن هوک به دیتابیس هم تابع زیر رو به انتهای فایل php اضافه کنید:

private function addMyHook()	{
return Db::getInstance()->
Execute ('INSERT INTO `'._DB_PREFIX_.'hook` (`name`, `title`, `description`, `position`) VALUES (\'topCenter\', \'Top Center Position\', \'Information about my hook', 1)');
}

 

 

فقط کافیه که در تابع install ماژول تابع فوق رو فراخوانی کنید.

به طور مثال:

 

!$this->addmyHook() OR !parent::install()

 

 

کد زیر هم برای وقتی که ماژول uninstall میشه کاربرد داره. تابع زیر رو مینویسیم و در تابع uninstall فراخوانی میکنیم.

private function removeMyHook()	{
	return Db::getInstance()->
Execute ('DELETE FROM `'._DB_PREFIX_.'hook` WHERE `name` = \'topCenter\'');
}

 

 

 

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

سلام دوستان

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

ممنونم

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

هیچ مرجع کاملی وجود نداره . برای یادگیری یا باید خودتون همت کنید و از خود سایت پرستاشاپ و بخش doc اون استفاده کنید و یاد بگیرین یا باید از یکی که بلده درخواست کنید بهتون آموزش بده . برای پرستاشاپ که تو ایران تازه شناخته شده همین یک انجمن رو داریم مگه امکان داره مرجعی جدا برای آموزش قالبش وجود داشته باشه ؟!! حتی تو سایت های خارجی هم مرجع کاملی وجود نداره که همه چیز رو یکجا بهتون آموزش بده یا از اون یاد بگیرین ، جز سایت خود پرستاشاپ که به صورت استاندارد توضیح داده .

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

  • 9 months later...

این آموزش یه چیزی کم داره تا بشه گفت طرز ساخت یک هوک , و اونم جایگاه خود هوک هست

اینطوری در واقع فقط همون هوک header_right با اسم top_center دارین ازش استفاده میکنید همین

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

  • 2 months later...

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

 

پیروز باشید

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

  • 2 years later...

سلام

 

یک سوال داشتم از خدمت شما بزرگان

 

بنده یک ماژول از سایت اصلی پرستاشاپ خریداری کردم . می خواهم این ماژول را به یکی از مکان های پیش فرض قالب که از قبل تعریف شده انتقال بدم

 

به صورت پیش فرض میگه نمی تونید اینکار را انجام بدید

 

هوک پیش فرض displayRightColumnProduct هست که چند ماژول در این بخش قرار داره . ماژول جدید باید در این قسمت قرار بگیره . نیاز به اضافه کردن هوک نیست چون پیش فرض وجود داره ولی باید این هوک به ماژول اضافه بشه

 

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

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

پشتیبانی هر ماژول با نویسنده اون ماژول هست. از پشتیبانتون راهنمایی بگیرید کمکتون میکنند. باید در فایل php اصلی ماژول این هوک رو اضافه کنید. اگر php بلد باشید متوجه میشید بر اساس هوک های دیگری که تعریف شدند چطور عمل کنید

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

  • 2 years later...

چطور باید دوتا ماژول رو کنار هم بزاریم مثلا ماژول اسلایدر و ماژول بنر کنار هم دیگه قرار بگیرن ؟؟؟؟هوگها رو چطوری تنظیم کنیم ؟؟؟؟

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

در حال بارگذاری


  • کاربران آنلاین در این صفحه

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • اضافه کردن...