пятница, 18 мая 2012 г.

imageCMS Shop Учим использовать 1 папку с шаблоном

Доброго времени суток.
Недавно написал "патч" который позволяет imagecms версии с магазином работать с 1 папокй в которой шаблоны.


Обычно она работает с 2х папками (/commerce/ и /commerce/shop/default)
Согласитесь, не слишком то удобно бегать по папкам и искать нужные tpl файлы.
Итак... что бы заставить работать imagecms shop только с папкой /commerce/shop/default
1) Откройте файл /application/libraries/mabilis/Mabilis.class.php
2) После $file = preg_replace('/.tpl.tpl/', '.tpl', $file); (29 строка) пишем $xtpl = $this->config->tpl_path.'/shop/default/';

3) Заменяем  $file_dir = $this->config->tpl_path . $file; на $file_dir = $xtpl . $file;  и 
$new_file_dir = $this->config->tpl_path . 'modules' . $newFile[1]; на $new_file_dir = $xtpl. 'modules' . $newFile[1];

4) После:


        if (preg_match('/application\/modules/', $file_dir, $mm))
        {
            $newFile = explode('application/modules', $file_dir);
            $new_file_dir = $xtpl. 'modules' . $newFile[1];

            if (file_exists($new_file_dir))
            {
                $file_dir = $new_file_dir;
            }
        }

Пишем:

        //////////START PATCH FUTEMP 0.1v///////////////
        preg_match_all('@shop/default@i', $file_dir, $file_url_match);
        preg_match_all('@/administrator/@', $file_dir, $file_url_admin);
        //print_r($file_dir);
        if (count($file_url_admin[0]) < 1)
        {
            if (count($file_url_match[0]) < 1)
            {
                preg_match_all('@SHOP_MENU@i', $file_dir, $file_match);
                if (count($file_match) < 1)
                {
                    $file_dir = preg_replace ('@/commerce/@i', '/commerce/shop/default/', $file_dir);
                    //$file_dir = preg_replace ('@/sidebar.tpl@i', '/sidebar_shop.tpl', $file_dir);
                }
            }
            else
            {
                if (count($file_url_match[0]) > 1)
                {
                    $file_dir = preg_replace ('@/commerce/shop/default/@i', '/commerce/', $file_dir);
                    $file_dir = preg_replace('@/sidebar.tpl@i', '/sidebar_site.tpl', $file_dir);
                }
            }
        }
        else
        {
            $file_dir = preg_replace ('@/shop/default/@i', '', $file_dir);
        }
        //print_r($file_dir);
        //////////END PATCH FUTEMP 0.1v///////////////

5) Теперь идем в папку /templates/commerce/ переименовываем файл sidebar.tpl в sidebar_site.tpl

6) Копируем ВСЕ файлы и папки в /templates/commerce/  КРОМЕ папки shop В /templates/commerce/shop/default/ Если какойто файл потребует замены, отклоняйте его предложение.

Вот в принципе и все.
Если хотите что бы виджеты сохранялись именно в папку с шаблоном а не в корень папки коммерция, то зайдите в базу например через phpmyadmin найдите таблицу settings зайдите в нее и измените одно из полей где написано commerce на commerce/shop/default

После этого все должно работать нормально
Файл sidebar_site.tpl служит для всех остальных страниц которые не относятся к магазину это удобный вариант если вы хотите что бы магазин и остальные страницы сайта жили отдельной жизнью... Это поможет более гибко работать с шаблонами сайта.

Надеюсь эта статья кому ни будь поможет.
Прошу прошения за немного корявый код, если решусь выпустить все это дело в качестве модуля то позабочусь что бы все было нормально и вам бы не пришлось ползать по папкам и что то делать.

2 комментария:

  1. Есть проблема, теперь Страницы не показывает...Ссылку раскрывает но содежимое пустое...

    ОтветитьУдалить