#1 2009-07-04 09:38

Гринев Роман
Пользователь

Добавление раздела в панель управления магазином.

Требуется добавить раздел в панель управления интернет магазином WebAsyst Shop-Script для выполнения определенных функций. К примеру в разделе "Продукция" есть подразделы "Продукты и категории", "Отзывы", "Импорт" и т.д. Как добавить свой подраздел "Мой раздел".

Кто нибудь уже делал такое? Есть предложения как это можно сделать?

Неактивен

 

#2 2009-07-06 13:56

Гринев Роман
Пользователь

Re: Добавление раздела в панель управления магазином.

Судя по всему эта тема уже обсуждалась на форуме. Ответа нет.

Неактивен

 

#3 2009-07-06 15:13

semen
Пользователь

Re: Добавление раздела в панель управления магазином.

тема обсуждалась вот здесь:
http://forum.webasyst.ru/viewtopic.php?id=766
http://forum.webasyst.ru/viewtopic.php?id=2675
мне нужно было добавить к продукту редактируемые из админки свойства "реальное местонахождение" и "поставщик"
решение получилось такое:
Создаю дополнительные таблицы и поля в SC_products

Код:

ALTER TABLE  `SC_products` ADD  `supplierID` INT NOT NULL , ADD  `locationID` INT NOT NUL;
CREATE TABLE IF NOT EXISTS `SC_locations` (  `location_id` int(11) NOT NULL auto_increment,  `name` varchar(30) NOT NULL,  `comment` text NOT NULL,  PRIMARY KEY  (`location_id`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
CREATE TABLE IF NOT EXISTS `SC_suppliers` (  `supplier_id` int(11) NOT NULL auto_increment,  `name` varchar(30) NOT NULL,  `comment` text NOT NULL,  PRIMARY KEY  (`supplier_id`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;

редактирование / добавление продукта
modules/products/_methods/b_product_settings.php   
строка 555 - вставить

Код:

/// Получает список поставщиков
function get_suppliers()
{
    $sql = 'SELECT * FROM SC_suppliers';
    $res = db_phquery_fetch(DBRFETCH_ROW_ALL, $sql);
    return $res;
}
/// Получает список мест
function get_locations()
{
    $sql = 'SELECT * FROM SC_locations';
    $res = db_phquery_fetch(DBRFETCH_ROW_ALL, $sql);
    return $res;
}

строка    703    вставить

Код:

//Список поставщиков
        $suppliers = prdsetActions::get_suppliers();
        $smarty->assign( 'suppliers', $suppliers);
//Список мест
        $locations = prdsetActions::get_locations();
        $smarty->assign( 'locations', $locations);

core_functions/product_functions.php
строка 856 вставить

Код:

/// Получает данные одного поставщика
function get_supplier($supplier_id)
{
    $sql = 'SELECT * FROM SC_suppliers WHERE `supplier_id`='.$supplier_id;
    $res = db_query( $sql);
    $row = db_fetch_row($res);
    return $row;
}
/// Получает данные одного места
function get_location($location_id)
{
    $sql = 'SELECT * FROM SC_locations WHERE `location_id`='.$location_id;
    $res = db_query( $sql);
    $row = db_fetch_row($res);
    return $row;
}

templates/backend/order_editor/product_settings.html   
строка 277    вставить   

Код:

<tr>
    <td>{'lbl_actual_location'|translate}:</td>
    <td>
        <select name="locationID">
          {foreach from=$locations item=_location}
            <option value="{$_location.location_id}" {if $product.locationID == $_location.location_id}selected="selected"{/if}>{$_location.name}</option>
          {/foreach}
          </select>
    </td>
</tr>
<tr>
    <td>{'lbl_supplier'|translate}:</td>
    <td>
        <select name="supplierID">
            {foreach from=$suppliers item=_supplier}
                  <option value="{$_supplier.supplier_id}" {if $product.supplierID == $_supplier.supplier_id}selected="selected"{/if}>{$_supplier.name}</option>
              {/foreach}
        </select>
    </td>
</tr>

classes/class.product.php   
строка 36    всавить       

Код:

var $locationID;
var $supplierID;

список продуктов   
modules/ordering/_methods/b_categories_products.php   
строка 335    вставить           

Код:

$gridEntry->registerHeader("lbl_supplier", 'supplier', false, 'desc');
        $gridEntry->registerHeader("lbl_location", 'location', false, 'desc');

templates/backend/categories_products.html   
строка 131    вставить                   

Код:

<td><a href='{$product_url}' title="{$GridRows[i].supplierComment}">{$GridRows[i].supplierName}</a></td>
                <td><a href='{$product_url}' title="{$GridRows[i].locationComment}">{$GridRows[i].locationName}</a></td>

core_functions/product_functions.php   
строка 783    вставить

Код:

$where_clause = str_ireplace('WHERE ', 'WHERE ( ', $where_clause).')';

строка 784    вставить после "(PRODUCTS_TABLE, $sort_field).'"    ,

Код:

s.name AS supplierName, s.comment AS supplierComment , l.name AS locationName, l.comment AS locationComment

строка 785    вставить между "FROM " и "'.PRODUCTS_TABLE.' p"   

Код:

 '.TBL_SUPPLIERS_LIST.' AS s , '.TBL_LOCATIONS_LIST.' AS l,

строка 785    вставить после .$where_clause.    

Код:

'AND s.supplier_id = p.supplierID AND l.location_id = p.locationID  '.

управление курьерами и маршрутами(собственно добавление дополнительного пункта меню)

Код:

INSERT INTO `SC_division_interface` (`xDivisionID`, `xInterface`, `xPriority`, `xInheritable`) VALUES
(211, '58_manage_locations', 0, 0),
(212, '59_manage_suppliers', 0, 0);
INSERT INTO `SC_modules` (`ModuleID`, `ModuleVersion`, `ModuleClassName`, `ModuleClassFile`) VALUES
(36, 1, 'locations_list', '/locations_list/class.locations_list.php'),
(37, 1, 'suppliers_list', '/suppliers_list/class.suppliers_list.php');
INSERT INTO `SC_divisions` (`xID`, `xName`, `xKey`, `xUnicKey`, `xParentID`, `xEnabled`, `xPriority`, `xTemplate`, `xLinkDivisionUKey`) VALUES
(211, 'pgn_locations', '', 'locations_list', 10, 1, 4, '', ''),
(212, 'pgn_suppliers', '', 'suppliers_list', 10, 1, 3, '', '');
INSERT INTO `SC_module_configs` (`ModuleConfigID`, `ModuleID`, `ConfigKey`, `ConfigTitle`, `ConfigDescr`, `ConfigInit`, `ConfigEnabled`) VALUES
(58, 36, 'locations_list', '', 'Locations', 1002, 1),
(59, 37, 'suppliers_list', '', 'Suppliers', 1002, 1);

cfg/tables.inc.wa.php   
строка 81    вставить   

Код:

define('TBL_SUPPLIERS_LIST', DBTABLE_PREFIX.'suppliers');
define('TBL_LOCATIONS_LIST', DBTABLE_PREFIX.'locations');

после этого соответствующие пункты меню должны появиться, но что бы вы их увидели, нужно в настройках админки добавить себе права на эти пункты

теперь нужно создать соответствующие файлы и папки в директрориях modules и templates/backend
я это делал очень просто - скопировал те файлы, которые отвечают за управление купонами, переназвал их и переделал под управлеине соответственно поставщиками и складами.

Отредактировано semen (2009-07-08 23:34)

Неактивен

 

#4 2009-07-06 15:15

Гринев Роман
Пользователь

Re: Добавление раздела в панель управления магазином.

Спасибо, похоже это то, что нужно.

Неактивен

 

#5 2009-08-13 16:13

Минта
Пользователь

Re: Добавление раздела в панель управления магазином.

А как добавить именно НОВЫЙ модуль в админку? Т.е чтобы рядом с "Дизайн" красовалась еще одна вкладочка?
________
Люди добрые, ну помогите, пожалуйста! Хотя бы объясните, по какому принципу появляются значения во фреймах вкладок... Саму ее-то я с горем пополам добавила.

Точнее будет даже такая вот формулировка: по какому принципу формируются страницы вида http://***/published/SC/html/scripts/index.php?did=208 ?

Отредактировано Минта (2009-08-13 16:21)

Неактивен

 

#6 2009-08-14 00:12

semen
Пользователь

Re: Добавление раздела в панель управления магазином.

Минта, вы сделайте просто:
просмотрите разные страницы в админке и решите, какая из этих страниц наиболее близка по функциональности тому модулю, который вы хотите дописать.
после это вы находите модуль, отвечающий за вывод этой страницы меню
все модули находятся в директории /published/SC/html/scripts/modules
и находите шаблон этого модуля в папке /published/SC/html/scripts/templates/backend
а дальше изучаете то что вы нашли и придумываете, что там можно поменять, что бы модуль делал то, что вы от него хотите.
меняете то что нужно, сохраняете в тех же папках под новыми именами
и выполняете примерно вот такие манипуляции с таблицами:

Код:

INSERT INTO `SC_division_interface` (`xDivisionID`, `xInterface`, `xPriority`, `xInheritable`) VALUES
(211, '58_manage_locations', 0, 0),;
INSERT INTO `SC_modules` (`ModuleID`, `ModuleVersion`, `ModuleClassName`, `ModuleClassFile`) VALUES
(36, 1, 'locations_list', '/locations_list/class.locations_list.php');
INSERT INTO `SC_divisions` (`xID`, `xName`, `xKey`, `xUnicKey`, `xParentID`, `xEnabled`, `xPriority`, `xTemplate`, `xLinkDivisionUKey`) VALUES
(211, 'pgn_locations', '', 'locations_list', 10, 1, 4, '', '');
INSERT INTO `SC_module_configs` (`ModuleConfigID`, `ModuleID`, `ConfigKey`, `ConfigTitle`, `ConfigDescr`, `ConfigInit`, `ConfigEnabled`) VALUES
(58, 36, 'locations_list', '', 'Locations', 1002, 1);

только, вместо 'locations_list' вы пишите название своего нового модуля, вместо 'pgn_locations' собственную языковую пременную содержащую название вашего модуля, а вместо 'Locations' уже не помню что.
211 - id нового пункта меню
36 - номер нового модуля
что означает число 58 уже точно помню.
эти три числа у вас возможно будут какими-то своими.

собственно, это всё

если что-то будет не понятно - пишите в эту тему

Отредактировано semen (2009-12-22 01:48)

Неактивен

 

#7 2009-08-14 09:49

Минта
Пользователь

Re: Добавление раздела в панель управления магазином.

semen, спасибо огромное! Буду разбираться smile
______
Спасибо большое, все работает.) Что бы я без вас делала smile

Отредактировано Минта (2009-08-14 10:27)

Неактивен

 

Board footer

Powered by PunBB