Jump to content

surcharge CmsController


Recommended Posts

Bonjour à tous, 

J'ai acheté récemment deux plugins le premier était PowerFul Form Generator, super plugins au passage

En suite, je me suis lancé dans l'achat de VisualComposeur que j'utilise énormément sous Wordpress, j'ai voulu tester sous prestashop 1,7,2

Mais ma surprise à été l'ors de l'activation de celui-ci 

J'ai cette erreur 

L'action enable est impossible pour le module jscomposer. Impossible d'installer la surcharge : la méthode initContent dans la classe CmsController est déjà surchargée.



J'ai demandé de l'aide au développer du plugins qui ne veux rien savoir pour lui sont plugins fonctionne très bien

il me suffit de désactiver PowerFul Form Generator et ça fonction 

effectivement c'est la bonne solution, il est marrant le monsieur :angry:

Étant donné que je ne suis pas un dévelopeur, je n'ai vraiment aucune idée de comment faire pour fusionner les deux sur un seul fichier CmsController.php et pour que ça fonctionne 

Aurait-il une âme charitable pour me venir en aide 

Dans l'attente d'une réponse je vous remercie d'avance
Cordialement Cyril

powerfulformgenerator_CmsController.php

Visual_CmsController.php

Link to comment
Share on other sites

Bah dans votre cas ce n'est vraiment pas compliqué^^

Mettez ce fichier dans le répertoire /overrides/controllers/front de votre boutique à la place de l'existant et c'est ok

<?php
/**
 * Powerful Form Generator
 *
 * This modules aims to provide for your customer any kind of form you want.
 *
 * If you find errors, bugs or if you want to share some improvments,
 * feel free to contact at [email protected] ! :)
 * Si vous trouvez des erreurs, des bugs ou si vous souhaitez
 * tout simplement partager un conseil ou une amélioration,
 * n'hésitez pas à me contacter à [email protected]
 *
 * @package   modules
 * @author    Cyril Nicodème <[email protected]>
 * @copyright Copyright (C) April 2014 prestaddons.net <@email:[email protected]>. All rights reserved.
 * @since     2014-04-15
 * @version   2.7.2
 * @license   Nicodème Cyril
 */
require_once(_PS_MODULE_DIR_.'powerfulformgenerator/classes/PFGRenderer.php');
class CmsController extends CmsControllerCore
{
    /*
    * module: powerfulformgenerator
    * date: 2018-08-04 21:37:01
    * version: 2.7.2
    */
    public function initContent()
    {
        if (Module::isInstalled('jscomposer') && (bool) Module::isEnabled('jscomposer'))
        {
            if(isset($this->cms->content)){
                $instance = Module::getInstanceByName('jscomposer');
                $instance->init();
                $this->cms->content = $instance->do_shortcode( $this->cms->content );
                if(vc_mode() === 'page_editable'){
                    $this->cms->content = call_user_func($instance->getInnerActions('vc_content'), $this->cms->content);
                }
            }
        }		
        parent::initContent();
        $parent_cat = new CMSCategory(1, $this->context->language->id);
        $this->context->smarty->assign('id_current_lang', $this->context->language->id);
        $this->context->smarty->assign('home_title', $parent_cat->name);
        $this->context->smarty->assign('cgv_id', Configuration::get('PS_CONDITIONS_CMS_ID'));
        if ($this->assignCase == 1) {
            if ($this->cms->indexation == 0) {
                $this->context->smarty->assign('nobots', true);
            }
            if (version_compare(Tools::substr(_PS_VERSION_, 0, 3), '1.7', '>=')) {
                $currentCms = $this->objectPresenter->present($this->cms);
                $currentCms['content'] = $this->returnContent($currentCms['content']);
                $this->context->smarty->assign(array(
                    'cms' => $currentCms,
                ));
                $this->setTemplate(
                    'cms/page',
                    array('entity' => 'cms', 'id' => $this->cms->id)
                );
            } else {
                if (isset($this->cms->id_cms_category) && $this->cms->id_cms_category) {
                    $path = Tools::getFullPath($this->cms->id_cms_category, $this->cms->meta_title, 'CMS');
                } elseif (isset($this->cms_category->meta_title)) {
                    $path = Tools::getFullPath(1, $this->cms_category->meta_title, 'CMS');
                }
                $this->cms->content = $this->returnContent($this->cms->content);
                $this->context->smarty->assign(array(
                    'cms' => $this->cms,
                    'content_only' => (int)Tools::getValue('content_only'),
                    'path' => $path,
                    'body_classes' => array($this->php_self.'-'.$this->cms->id, $this->php_self.'-'.$this->cms->link_rewrite)
                ));
                $this->setTemplate(_PS_THEME_DIR_.'cms.tpl');
            }
        } elseif ($this->assignCase == 2) {
            if (version_compare(Tools::substr(_PS_VERSION_, 0, 3), '1.7', '>=')) {
                $this->context->smarty->assign($this->getTemplateVarCategoryCms());
                $this->setTemplate('cms/category');
            } else {
                $this->context->smarty->assign(array(
                    'category' => $this->cms_category, //for backward compatibility
                    'cms_category' => $this->cms_category,
                    'sub_category' => $this->cms_category->getSubCategories($this->context->language->id),
                    'cms_pages' => CMS::getCMSPages($this->context->language->id, (int)$this->cms_category->id, true, (int)$this->context->shop->id),
                    'path' => ($this->cms_category->id !== 1) ? Tools::getPath($this->cms_category->id, $this->cms_category->name, false, 'CMS') : '',
                    'body_classes' => array($this->php_self.'-'.$this->cms_category->id, $this->php_self.'-'.$this->cms_category->link_rewrite)
                ));
                $this->setTemplate(_PS_THEME_DIR_.'cms.tpl');
            }
        }
    }
    /*
    * module: powerfulformgenerator
    * date: 2018-08-04 21:37:01
    * version: 2.7.2
    */
    private function generatePFG($id_pfg)
    {
        $renderer = new PFGRenderer($id_pfg);
        if (!$renderer->isAllowed(true)) {
            $redirect_url = $renderer->getForm()->unauth_redirect_url[Context::getContext()->language->id];
            if (!empty($redirect_url)) {
                Tools::redirect($redirect_url);
            } else {
                Controller::getController('PageNotFoundController')->run();
            }
            exit();
        }
        return $renderer->displayForm();
    }
    /*
    * module: powerfulformgenerator
    * date: 2018-08-04 21:37:01
    * version: 2.7.2
    */
    public function returnContent($contents)
    {
        preg_match_all('/\{powerfulform\:[(0-9\,)]+\}/i', $contents, $matches);
        foreach ($matches[0] as $index => $match) {
            $explode = explode(":", $match);
            $contents = str_replace($match, $this->generatePFG(str_replace("}", "", $explode[1])), $contents);
        }
        return $contents;
    }
}

 

Link to comment
Share on other sites

Super merci beaucoup pour votre aide ça fonctionne parfaitement 

J'ai eu un peut de mal à l'activer, j'ai du mi reprendre à plusieurs fois, jusqu'à ce que les deux étaient activées. 

Mais les shortcodes de visual ne fonctionnait pas, en vérifiant le fichier CmsController.php celui-ci avait été réécrit 

en recopiant votre code ça fonctionne 

en tout cas je vous remercie infiniment pour votre aide très précieuse

Cordialement 

Cyril

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...