magnium with VC



  • Hello,

    I have just installed the Magnium theme with Visual Composer.
    But sadly it doesn’t work.
    How can i fix this?



  • i’m getting this on the front
    Strict Standards: Declaration of Media::cccCss() should be compatible with MediaCore::cccCss($cssFiles, $cachePath = NULL) in /home/asiafoodcenter/public_html/override/classes/Media.php on line 169



  • Look at your Media.php file in the override folder.
    The core Media:cccCss method needs to get 2 params and in your override you are not giving anything.
    I dont know what is inside the override cccCss(), but you can try add an empty array to it, just to see if its enough.

    Media::cccCss([], null).

    and dont forget to delete class_index.php



  • Where can i delete class_index.php



  • Inside cache folder



  • Sorry, I wasn’t focus.
    your override should be:
    Media::cccCss($cssFiles, $cachePath = NULL)



  • Yes i have fix it.
    But VC not working. It’s in a loop
    at vc.ShortcodesBuilder.buildFromContent (shortcodes_builder.js:88)
    at Object.vc.build (build.js:47)
    at HTMLDocument.<anonymous> (vc_page_editable.js:268)
    at j (jquery-1.11.0.min.js:2)
    at Object.fireWith [as resolveWith] (jquery-1.11.0.min.js:2)
    at Function.ready (jquery-1.11.0.min.js:2)
    at HTMLDocument.K (jquery-1.11.0.min.js:2)
    css Failed to load resource: the server responded with a status of 400 ()

    0_1496525667082_20161003_171641.jpg



  • in your override you have:
    public static function cccCss()
    that needs to be changed to:
    public static function cccCss($css_files, $cache_path = null)

    p.s. every time you change something inside override folder, you need to delete class_index.php from cache



  • and another problem
    Parse error: syntax error, unexpected ‘*’, expecting function (T_FUNCTION) in /home/asiafoodcenter/public_html/override/controllers/front/CategoryController.php on line 8



  • paste the content of this file override/controllers/front/CategoryController.php



  • <?php
    /**
     * 2007-2016 PrestaShop
     *
     * Thirty Bees is an extension to the PrestaShop e-commerce software developed by PrestaShop SA
     * Copyright (C) 2017 Thirty Bees
     *
     * NOTICE OF LICENSE
     *
     * This source file is subject to the Open Software License (OSL 3.0)
     * that is bundled with this package in the file LICENSE.txt.
     * It is also available through the world-wide-web at this URL:
     * http://opensource.org/licenses/osl-3.0.php
     * If you did not receive a copy of the license and are unable to
     * obtain it through the world-wide-web, please send an email
     * to license@thirtybees.com so we can send you a copy immediately.
     *
     * DISCLAIMER
     *
     * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
     * versions in the future. If you wish to customize PrestaShop for your
     * needs please refer to https://www.thirtybees.com for more information.
     *
     * @author    Thirty Bees <contact@thirtybees.com>
     * @author    PrestaShop SA <contact@prestashop.com>
     * @copyright 2017 Thirty Bees
     * @copyright 2007-2016 PrestaShop SA
     * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
     *  PrestaShop is an internationally registered trademark & property of PrestaShop SA
     */
    
    /**
     * Class CategoryControllerCore
     *
     * @since 1.0.0
     */
    class CategoryControllerCore extends FrontController
    {
        // @codingStandardsIgnoreStart
        /** string Internal controller name */
        public $php_self = 'category';
        /** @var bool If set to false, customer cannot view the current category. */
        public $customer_access = true;
        /** @var Category Current category object */
        protected $category;
        /** @var int Number of products in the current page. */
        protected $nbProducts;
        /** @var array Products to be displayed in the current page . */
        protected $cat_products;
        // @codingStandardsIgnoreEnd
    
        /**
         * Sets default media for this controller
         *
         * @return void
         *
         * @since 1.0.0
         */
        public function setMedia()
        {
            parent::setMedia();
    
            if (!$this->useMobileTheme()) {
                //TODO : check why cluetip css is include without js file
                $this->addCSS(
                    [
                        _THEME_CSS_DIR_.'scenes.css'       => 'all',
                        _THEME_CSS_DIR_.'category.css'     => 'all',
                        _THEME_CSS_DIR_.'product_list.css' => 'all',
                    ]
                );
            }
    
            $scenes = Scene::getScenes($this->category->id, $this->context->language->id, true, false);
            if ($scenes && count($scenes)) {
                $this->addJS(_THEME_JS_DIR_.'scenes.js');
                $this->addJqueryPlugin(['scrollTo', 'serialScroll']);
            }
    
            $this->addJS(_THEME_JS_DIR_.'category.js');
        }
    
        /**
         * Redirects to canonical or "Not Found" URL
         *
         * @param string $canonicalUrl
         *
         * @since 1.0.0
         */
        public function canonicalRedirection($canonicalUrl = '')
        {
            if (Tools::getValue('live_edit')) {
                return;
            }
    
            if (!Validate::isLoadedObject($this->category) || !$this->category->inShop() || !$this->category->isAssociatedToShop() || in_array($this->category->id, [Configuration::get('PS_HOME_CATEGORY'), Configuration::get('PS_ROOT_CATEGORY')])) {
                $this->redirect_after = '404';
                $this->redirect();
            }
    
            if (!Tools::getValue('noredirect') && Validate::isLoadedObject($this->category)) {
                parent::canonicalRedirection($this->context->link->getCategoryLink($this->category));
            }
        }
    
        /**
         * Initializes controller
         *
         * @see   FrontController::init()
         * @throws PrestaShopException
         *
         * @since 1.0.0
         */
        public function init()
        {
            // Get category ID
            $idCategory = (int) Tools::getValue('id_category');
            if (!$idCategory || !Validate::isUnsignedId($idCategory)) {
                $this->errors[] = Tools::displayError('Missing category ID');
            }
    
            // Instantiate category
            $this->category = new Category($idCategory, $this->context->language->id);
    
            parent::init();
    
            // Check if the category is active and return 404 error if is disable.
            if (!$this->category->active) {
                header('HTTP/1.1 404 Not Found');
                header('Status: 404 Not Found');
            }
    
            // Check if category can be accessible by current customer and return 403 if not
            if (!$this->category->checkAccess($this->context->customer->id)) {
                header('HTTP/1.1 403 Forbidden');
                header('Status: 403 Forbidden');
                $this->errors[] = Tools::displayError('You do not have access to this category.');
                $this->customer_access = false;
            }
        }
    
        /**
         * Initializes page content variables
         *
         * @since 1.0.0
         */
        public function initContent()
        {
            parent::initContent();
    
            $this->setTemplate(_PS_THEME_DIR_.'category.tpl');
    
            if (!$this->customer_access) {
                return;
            }
    
            if (isset($this->context->cookie->id_compare)) {
                $this->context->smarty->assign('compareProducts', CompareProduct::getCompareProducts((int) $this->context->cookie->id_compare));
            }
    
            // Product sort must be called before assignProductList()
            $this->productSort();
    
            $this->assignScenes();
            $this->assignSubcategories();
            $this->assignProductList();
    
            $this->context->smarty->assign(
                [
                    'category'             => $this->category,
                    'description_short'    => Tools::truncateString($this->category->description, 350),
                    'products'             => (isset($this->cat_products) && $this->cat_products) ? $this->cat_products : null,
                    'id_category'          => (int) $this->category->id,
                    'id_category_parent'   => (int) $this->category->id_parent,
                    'return_category_name' => Tools::safeOutput($this->category->name),
                    'path'                 => Tools::getPath($this->category->id),
                    'add_prod_display'     => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
                    'categorySize'         => Image::getSize(ImageType::getFormatedName('category')),
                    'mediumSize'           => Image::getSize(ImageType::getFormatedName('medium')),
                    'thumbSceneSize'       => Image::getSize(ImageType::getFormatedName('m_scene')),
                    'homeSize'             => Image::getSize(ImageType::getFormatedName('home')),
                    'allow_oosp'           => (int) Configuration::get('PS_ORDER_OUT_OF_STOCK'),
                    'comparator_max_item'  => (int) Configuration::get('PS_COMPARATOR_MAX_ITEM'),
                    'suppliers'            => Supplier::getSuppliers(),
                    'body_classes'         => [$this->php_self.'-'.$this->category->id, $this->php_self.'-'.$this->category->link_rewrite],
                ]
            );
        }
    
        /**
         * Assigns scenes template variables
         */
        protected function assignScenes()
        {
            // Scenes (could be externalised to another controller if you need them)
            $scenes = Scene::getScenes($this->category->id, $this->context->language->id, true, false);
            $this->context->smarty->assign('scenes', $scenes);
    
            // Scenes images formats
            if ($scenes && ($sceneImageTypes = ImageType::getImagesTypes('scenes'))) {
                foreach ($sceneImageTypes as $sceneImageType) {
                    if ($sceneImageType['name'] == ImageType::getFormatedName('m_scene')) {
                        $thumbSceneImageType = $sceneImageType;
                    } elseif ($sceneImageType['name'] == ImageType::getFormatedName('scene')) {
                        $largeSceneImageType = $sceneImageType;
                    }
                }
    
                $this->context->smarty->assign(
                    [
                        'thumbSceneImageType' => isset($thumbSceneImageType) ? $thumbSceneImageType : null,
                        'largeSceneImageType' => isset($largeSceneImageType) ? $largeSceneImageType : null,
                    ]
                );
            }
        }
    
        /**
         * Assigns subcategory templates variables
         *
         * @return void
         *
         * @since 1.0.0
         */
        protected function assignSubcategories()
        {
            if ($subCategories = $this->category->getSubCategories($this->context->language->id)) {
                $this->context->smarty->assign(
                    [
                        'subcategories'          => $subCategories,
                        'subcategories_nb_total' => count($subCategories),
                        'subcategories_nb_half'  => ceil(count($subCategories) / 2),
                    ]
                );
            }
        }
    
        /**
         * Assigns product list template variables
         *
         * @return void
         *
         * @since 1.0.0
         */
        public function assignProductList()
        {
            $hookExecuted = false;
            Hook::exec(
                'actionProductListOverride',
                [
                    'nbProducts'   => &$this->nbProducts,
                    'catProducts'  => &$this->cat_products,
                    'hookExecuted' => &$hookExecuted,
                ]
            );
    
            // The hook was not executed, standard working
            if (!$hookExecuted) {
                $this->context->smarty->assign('categoryNameComplement', '');
                $this->nbProducts = $this->category->getProducts(null, null, null, $this->orderBy, $this->orderWay, true);
                $this->pagination((int) $this->nbProducts); // Pagination must be call after "getProducts"
                $this->cat_products = $this->category->getProducts($this->context->language->id, (int) $this->p, (int) $this->n, $this->orderBy, $this->orderWay);
            } // Hook executed, use the override
            else {
                // Pagination must be call after "getProducts"
                $this->pagination($this->nbProducts);
            }
    
            $this->addColorsToProductList($this->cat_products);
    
            Hook::exec(
                'actionProductListModifier',
                [
                    'nb_products'  => &$this->nbProducts,
                    'cat_products' => &$this->cat_products,
                ]
            );
    
            foreach ($this->cat_products as &$product) {
                if (isset($product['id_product_attribute']) && $product['id_product_attribute'] && isset($product['product_attribute_minimal_quantity'])) {
                    $product['minimal_quantity'] = $product['product_attribute_minimal_quantity'];
                }
            }
    
            $this->context->smarty->assign('nb_products', $this->nbProducts);
        }
    
        /**
         * Returns an instance of the current category
         *
         * @return Category
         *
         * @since 1.0.0
         */
        public function getCategory()
        {
            return $this->category;
        }
    }
    


  • Why are you extending FrontController with CategoryController.
    Aren’t you looking to override CategoryController?
    which in this case you need to do:
    class CategoryController extends CategoryControllerCore



  • I think the theme is want to override it.
    How can i solve this. Prestashop 1.6 works fine.


  • Global Moderator

    @Webshoptime You didn’t paste the file requested.

    The file you pasted is controllers/front/CategoryController.php

    The one we need in order to help you is override/controllers/front/CategoryController.php



  • <?php
    class CategoryController extends CategoryControllerCore {
        /*
        * module: jscomposer
        * date: 2016-02-09 03:58:59
        * version: 4.3.13
        */
        * module: jscomposer
        * date: 2016-02-09 03:58:59
        * version: 4.3.13
        */
        /*
        * module: jscomposer
        * date: 2017-06-03 21:52:34
        * version: 4.3.20
        */
        public function initContent() {
            $description = $this->category->description;
            parent::initContent();
            if (Module::isInstalled('jscomposer') && (bool) Module::isEnabled('jscomposer')) {
                $this->context->smarty->assign(
                    array(
                        'description_short' => JsComposer::do_shortcode($description),
                    )
                );
                $this->category->description = JsComposer::do_shortcode($description);
            }
            if (Module::isInstalled('smartshortcode') && (bool) Module::isEnabled('smartshortcode')) {
                
                $this->context->smarty->assign(
                    array(
                        'description_short' => smartshortcode::do_shortcode($description),                
                    )
                );
                $this->category->description = smartshortcode::do_shortcode($description);            
            }
        }
    }
    


  • Ow sorry my mistake, i posted the good one ;)


  • Global Moderator

    Thanks, that’s the right file.

    Are you really sure that this the file as it was received from the theme author? Because there’s no way in hell that file can work. Sure you haven’t edited it?

    Anyway, the fix is easy.

    Notice there are three lines there at the top like this:

    • module: jscomposer

    Notice that the first and third of these lines has a line before it containing:
    /*

    So you need to add this /* line also before the second!



  • Before * module: jscomposer?


  • Global Moderator

    Yeah, the file should end up starting like this:

    <?php
    class CategoryController extends CategoryControllerCore {
        /*
        * module: jscomposer
        * date: 2016-02-09 03:58:59
        * version: 4.3.13
        */
        /*
        * module: jscomposer
        * date: 2016-02-09 03:58:59
        * version: 4.3.13
        */
        /*
        * module: jscomposer
        * date: 2017-06-03 21:52:34
        * version: 4.3.20
        */


  • Great thx m8.
    Fixit.
    I will test it. I hope the template works flawless now


Log in to reply
 

Looks like your connection to thirty bees forum was lost, please wait while we try to reconnect.