4

prestashopのホームページとして静的ページを作成しようとしています。私がこれを考えることができる唯一の方法は、新しいページ(つまり、shop.php)を作成し、現在ホームページにフックされているモデルを新しいshop.phpにフックすることです。

このhttp://alvinjiang.blogspot.com/2011/01/prestashop-tips-how-to-create-complete.htmlに従って新しいページを作成しようとしましたが、静的テキストを表示するまでは機能します。 「helloworld」-ただし、homefeaturedモジュール(たとえば)をそれにフックするかどうかはわかりません。

何かお手伝いできますか?

ありがとう

4

2 に答える 2

5

モジュールを新しいページにフックするには、次の手順に従います。

私の例では、フックの名前はtopSearchでした

新しいフックを作成します

INSERT INTO `ps_hook` (`id_hook`, `name`, `title`, `description`, `position`) VALUES ("", "topSearch", "Top search block", "Description top search block", "1")

モジュールがこの新しいフックにリンクできるようにします

module.phpを編集して、フックで名前が付けられた関数を追加する必要があります。例:

public function hookTopSearch($params){
    global $smarty;
    $smarty->assign('test', 'it works !');
    return $this->display(__FILE__, 'viewfile.tpl');
}

次に、対応するモジュールを新しいフックにリンクします

バックオフィス->モジュール->位置->モジュールの移植

.tplファイルでフックを実行します

新しいpage.phpを作成しました。これには、include(dirname(_ FILE _)。'/header.php');が含まれています。したがって、override / classes /にFrontController.phpという名前の新しいファイルを作成して、 FrontController.phpをオーバーライドします。

次に、フックをdisplayHeader関数に追加します

<?php
  class FrontController extends FrontControllerCore{
    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(),
        'img_update_time' => Configuration::get('PS_IMG_UPDATE_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'),
        'exclude_page' => array('category','manufacturer')
    ));
    self::$smarty->assign(array(
        'HOOK_HEADER' => Module::hookExec('header'),
        'HOOK_TOP' => Module::hookExec('top'),
        'HOOK_TOP_SEARCH' => Module::hookExec('topSearch'),
        'HOOK_BUTTON_BRAND' => Module::hookExec('buttonBrand'),
        'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn')
    ));

    if ((Configuration::get('PS_CSS_THEME_CACHE') OR Configuration::get('PS_JS_THEME_CACHE')) AND is_writable(_PS_THEME_DIR_.'cache'))
    {
        // CSS compressor management
        if (Configuration::get('PS_CSS_THEME_CACHE'))
            Tools::cccCss();

        //JS compressor management
        if (Configuration::get('PS_JS_THEME_CACHE'))
            Tools::cccJs();
    }

    self::$smarty->assign('css_files', $css_files);
    self::$smarty->assign('js_files', array_unique($js_files));
    self::$smarty->display(_PS_THEME_DIR_.'header.tpl');
    }
  }

終了するには、対応するsmartyvarをテンプレートファイルに追加します

{$HOOK_TOP_SEARCH}
于 2011-09-19T08:02:25.707 に答える
2

ここで、モジュールをある場所にフックする方法と、新しいフックを作成する方法を読むことができます。モジュールはその特定のフック用にインストールする必要があることに注意してください。

http://www.programmingtunes.com/creating-new-prestashop-hook/

于 2013-02-27T15:18:51.970 に答える