1 Отредактировано Роман (19-02-2018 20:03:55)

Тема: Шаблон в шаблоне

Всем привет!

Обращаюсь к талантливому сообществу для решения такой задачи...

Я хочу воспользоваться всеми преимуществами разработки лицензионной магазинной части ImageCMS 4.12 но, в то же время, не-магазинную часть хочу реализовать на своём шаблоне, так как ни один из доступных шаблонов (включая платные) не подходят для реализации моего дизайна.

Сначала я пытался интегрировать магазинный код в свой шаблон, но понял, что у меня не получится достичь стабильной работы (ведь разработчики много часов потратили на корректно-работающий шаблон).

Потом я пытался внедрить шаблон Multishop в папку моего шаблона (с перелинковкой стилей и скриптов), но потерпел неудачу (магазинная часть была полна ошибок).
Затем я пытался сделать наоборот - в папку с шаблоном Multishop залил нужные файлы моего шаблона (проследил, чтобы названия не совпадали) и частично все заработало: мой шаблон заработал наполовину, а Multishop, кажется работает без сбоев. Свои шаблоны main.tpl, category.tpl и подобные я переименовал в main2.tpl, category2.tpl и т.д. А в настройках категории ГЛАВНАЯ указал эти свои шаблоны.

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

{$category = get_category(76)}
{$category = $CI->load->module('cfcm')->connect_fields($category, 'category')}

Когда добавляю этот код, то такие шаблоны крашат страницу и выдают код:

UndefinedFunctionException
Attempted to call function "get_category" from the global namespace.
in 04aeb046f8146e430fc5e24206a06a10.php (line 2)


Помогите понять, что не то!

Мой шаблон проверен и корректно работает на версии Corporate. Может у Shop есть различия в коде?

Личная документация по ImageCMS: https://goo.gl/LzA09F

2

Re: Шаблон в шаблоне

Написал в поддержку, они мне дали инструкцию:

Вы пишите: "но у меня есть несколько темплейтов, где я подключаю доп. поля из одной категории таким кодом:

{$category = get_category(76)}
{$category = $CI->load->module('cfcm')->connect_fields($category, 'category')}" - скорее всего, ошибка где-то здесь (судя по ошибке, система не может подтянуть категорию). Что бы выяснить какую и почему - запрос нужно передавать нашим разработчикам на рассмотрение

Пока что можете попробовать следующие варианты (возможно, какой-то поможет):

1 - Проверьте наличие и права на папку \system\cache\templates_c (права должны быть 777 рекурсивно). + очистите кеш на сервере:
- перейдите в папку \system\cache - http://prntscr.com/clg0im
- удалите все ее содержимое КРОМЕ папки templates_c http://prntscr.com/clg1gd
- Откройте папку templates_c в \system\cache
- Удалите все ее содержимое КРОМЕ папки HTML http://prntscr.com/clg2di
- Удалите все содержимое папки system\cache\templates_c\HTML

Внимание! Права на папку \system\cache должны быть 777 рекурсивно.

2 - Если папка и права на нее есть - попробуйте в файле в index.php найти строчку define('ENVIRONMENT', 'development'); и заменить development на production - если у вас в index.php установлен режим разработки - то таком случае данный эффект не критичен (должно нормально работать в режиме production).

3 - Попробуйте отключить кеширование в файле \application\config\services.yml - нужно будет поочередно выключать кеширование

Я выполнил все, что было написано, но, к сожалению, проблема не решилась.
Похоже дело не в кешировании. Так же я исключил разницу между версиями CMS Shop и Corporate. Мой шаблон в чистом виде сейчас работает без ошибок на версии Shop: http://tupperware.naddaka.com/
Значит проблема кроется в особенностях или настройках шаблона MultiShop, из-за чего не обрабатывается код {$category = get_category(76)} в моих темплейтах.
Мне нужно от гуру только пояснение в описании ошибки «Attempted to call function "get_category" from the global namespace». На русском оно звучит примерно так: «Попытка вызвать функцию «get_category» из глобального пространства имен». Значит есть какое-то пространство имен у шаблона MultiShop, которое не поддерживает, почему-то функцию get_category.

Личная документация по ImageCMS: https://goo.gl/LzA09F

3

Re: Шаблон в шаблоне

К моему вопросу наконец-то подключили программиста... и решение нарисовалось моментально:

В конец кода application/helpers/category_helper.php

Нужно добавить функцию:

if (!function_exists('get_category')) {

    function get_category($id) {
       $ci = & get_instance();
       $c = $ci->lib_category->get_category($id);
       return $c;
   }

}
Личная документация по ImageCMS: https://goo.gl/LzA09F

4 Отредактировано Роман (30-04-2018 17:19:32)

Re: Шаблон в шаблоне

Я назначил главной страницей категорию Главная и теперь, когда я пытаюсь открыть модуль магазина (www.мойсайт/shop) оно переадресовывает на главную страницу сайта.

Подскажите, как в такой ситуации запустить морду самого магазина?

http://prntscr.com/jbxkvy

Личная документация по ImageCMS: https://goo.gl/LzA09F