Продажная Нана в виде агентского магазина.

Продажная Нана в виде агентского магазина.

В дистрибутиве есть файл ./data/content/shop/index.php, содержащий код:

<?php /* Выше этой строки в файле ничего не должно быть */

   
include($_s['loc']['modul'].$_s['shop']['base'].'_shop_agent.php');
   
shop_module('main');

/* Ниже этой строки в файле ничего не должно быть. */ ?>

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

Что получается, видно из демо.

Меню для агентского магазина.

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

Файл меню весьма лаконичен:

<?php /* Выше этой строки в файле ничего не должно быть */

   
get_menu_html_code(
      
$_s['des'],
      array(
         
'Навигация:' => array(
            
$_s['loc']['base'] => 'Главная',
         ),
      )
   );

   global 
$_shop;
   if (isset(
$_shop['d']['m'])) {
      
get_menu_html_code($_s['des'],$_shop['d']['m']);
   }

   
get_menu_html_code(
      
$_s['des'],
      array(
         
'Контакт с нами:' => array(
            
$_s['loc']['base'].'admin/connect'.$_s['ext'] => 'Связь с нами',
         ),
      )
   );

/* Ниже этой строки в файле ничего не должно быть. */ ?>

Блоки про навигацию к морде сайта и к форме обратной связи нарисованы исключительно для иллюстрации того, как они туда могут быть добавлены. Любой из них или оба сразу можно убрать, либо заменить чем-то ещё. А вот запись промеж блоками как раз и выводит навигацию Продажной Наны, запущенной в режиме агентского магазина.

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

Если этот момент критичен, проявляйте смекалку.
Так, вместо фрагмента из примера выше:

   global $_shop;
   if (isset(
$_shop['d']['m'])) {
      
get_menu_html_code($_s['des'],$_shop['d']['m']);
   }

можно написать фактически то же самое, плюс замещающее меню для случая, когда агентский магазин не активен, и собственного меню не создаёт:

   global $_shop;
   
get_menu_html_code(
      
$_s['des'],
      ((isset(
$_shop['d']['m']) and count($_shop['d']['m']) > 0) ?
         
$_shop['d']['m']:
         array(
            
'Наши магазины:' => array(
               
$_s['loc']['fold'].'index_lasto-com'.      $_s['ext'] => 'Lasto Shop',
               
$_s['loc']['fold'].'index_wm-alensoft-com'.$_s['ext'] => 'AlenSoft',
            ),
         )
      )
   );