Merhaba,
Prestashop 1.4 versiyonu kullanıcam ve yeni bir hook oluşturmak istiyorum. Bunu nasıl yapabilirim ?
Printable View
Merhaba,
Prestashop 1.4 versiyonu kullanıcam ve yeni bir hook oluşturmak istiyorum. Bunu nasıl yapabilirim ?
İngilizce:
Türkçe:Alıntı:
Took me quite a while and lots of meddling to figure this out? thought I would share with the rest of you guys on how to create a hook so u can NOT waste the number of hours like I did
1. Goto your database and modify ps_hook? (ps_ is what I named my database, so it can be replaced by what you named yours.)
2. find the last id_hook number and insert a new number after with the hook that you want to name e.g. I name it ?cat?
3. goto the php of the pages you want the hook to be in? e.g footer.php
4. insert ?HOOK_CAT? => Module::hookExec(?cat?), into the below
$smarty->assign(array(
'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn'),
'HOOK_FOOTER' => Module::hookExec('footer'),
'content_only' => intval(Tools::getValue('content_only'))));
$smarty->display(_PS_THEME_DIR_.'footer.tpl');
5. this is the final code?
$smarty->assign(array(
'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn'),
'HOOK_FOOTER' => Module::hookExec('footer'),
'HOOK_CAT' => Module::hookExec('cat'),
'content_only' => intval(Tools::getValue('content_only'))));
$smarty->display(_PS_THEME_DIR_.'footer.tpl');
6.insert {$HOOK_CAT} into where you want in footer.tpl and you are in business
NOTE : For the hook to appear YOU HAVE TO assign the array in the page?s php? Would be good if we can have a master HOOK array list?
1- Veritabanınızı phpMyAdmin gibi bir araç ile açınız (Not ps_ ön tnaımlıdır değiştirdiyseniz kendi ön takınızı kullanmalaısınız)
2- Son hook numarasına bakarak yeni bir numara ile yeni ismi kaydedin örnek olarak `alanim`
3- PHP olarak hangi alanda istiyorsak oraya ekleme yapmalıyız. Örn : zemin için footer.php yada üst kısım için header.php
4- Açtığınız dosyanın içine
[code type=php]?HOOK_CAT? => Module::hookExec(?cat?),[/code]
bu kodu alttaki gibi bir alanın içine ekleyin
[code type=php]$smarty->assign(array(
'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn'),
'HOOK_FOOTER' => Module::hookExec('footer'),
'content_only' => intval(Tools::getValue('content_only'))));
$smarty->display(_PS_THEME_DIR_.'footer.tpl');[/code]
5- Son hali:
[code type=php]$smarty->assign(array(
'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn'),
'HOOK_FOOTER' => Module::hookExec('footer'),
?HOOK_CAT? => Module::hookExec(?cat?),
'content_only' => intval(Tools::getValue('content_only'))));
$smarty->display(_PS_THEME_DIR_.'footer.tpl');[/code]
Modülleri bu andan itibaren hook_cat içine naklederek sonrada footer.tpl de {$HOOK_CAT} bu şekilde istediğiniz alana oturtabilirsiniz..
Yalnız footer.php ye eklendiği için sadece footer da görünücektir. header.php ye eklenirse tüm alanlarda (ödeme ekranları, ürün inceleme ekranları, ) kullanabilir olucaktır
Bol kazançlar
Dediğiniz gibi yaptım,
FrontController.php dosyasına 'HOOK_TOPBAR' => Module::hookExec('topbar'), kodunu aşağıdaki gibi ekledim
daha sonra veritabanında ps_hook tablosunu buldum ve en son id 66 görünüyordu yeni bir satır oluşturup 67 id numarası ile hook bilgilerini girip kaydettim ve header.tpl dosyasınada {$HOOK_TOPBAR} şeklinde tanımladım.Kod:public function displayHeader()
{
global $css_files, $js_files;
if (!self::$initialized)
$this->init();
// P3P Policies (http://www.w3.org/TR/2002/REC-P3P-20020416/#compact_policies)
header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');
/* Hooks are volontary out the initialize array (need those variables already assigned) */
self::$smarty->assign(array(
'time' => time(),
'static_token' => Tools::getToken(false),
'token' => Tools::getToken(),
'logo_image_width' => Configuration::get('SHOP_LOGO_WIDTH'),
'logo_image_height' => Configuration::get('SHOP_LOGO_HEIGHT'),
'priceDisplayPrecision' => _PS_PRICE_DISPLAY_PRECISION_,
'content_only' => (int)(Tools::getValue('content_only'))
));
self::$smarty->assign(array(
'HOOK_HEADER' => Module::hookExec('header'),
'HOOK_TOP' => Module::hookExec('top'),
'HOOK_TOPBAR' => Module::hookExec('topbar'),
'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn')
));
Fakat tüm işlemleri yapmama rağmen admin panelinde hook görünmüyor. Modül naklet kısmından gerekli modülleri nakletmek istediğimde hook göremiyorum.
Problem veya yanlış yaptığım nokta neresidir ?
header.php ye ekleseydiniz kodu birde ps_hook tablosuna satırı ekledinizmi
header.php derken hangi dosyadan bahsediyorsunuz ?
Birde şöyle
http://landofcoder.com/download/guides-docs/docs-guide-prestashop/128-how-to-add-new-hook-in-prestashop-14.html
bir yazı buldum modul dosyasınada fonksiyon ekliyor valla birşey anlamadım ben bu işten. Hiç tema yaparken bu kadar zorlanmadım ben çok saçma bir sistemi var.
Veritabanında yeni satır oluşturdum.