Январь 19

Свои разделы в адмике Shop-Script

уж очень много раз приходилось искать и каждый раз страницы с инструкциями выдавали 404 тут потому вынужден скопировать все сюда

Свои разделы в адмике Shop-Script

 

 

Добавление пункта в подменю внутри админки

Добавим запись о пункте меню в базу данных
NSERT INTO `SC_divisions` SET
`xName` = 'pgn_import_products_xml',
`xKey` = '',
`xUnicKey`= '',
`xParentID`= '9',
`xEnabled`= '1',
`xPriority`= '15',
`xTemplate`= '',
`xLinkDivisionUKey`= '';
xName — имя пункта меню
xParentID — идентификатор родителского меню. В нашем случае добавляем подпункт для раздела «Продукты»

Разрешим пользователям доступ к данному подпункту
INSERT INTO `U_ACCESSRIGHTS`
(`AR_ID`, `AR_PATH`, `AR_OBJECT_ID`, `AR_VALUE`,`AR_AUX`)
VALUES ('ADMIN', '/ROOT/SC/FUNCTIONS', 'SC__209', '1', NULL)
AR_ID — идентификатор пользователя. Если в системе несколько пользователей, то для каждого нужно добавить подобную запись.
AR_OBJECT_ID в сочетании с AR_PATH — указываем объект для которого разрешаем доступ. В нашем случае это подпункт меню. 209 — это идентификатор записи созданой предыдущим запросом

Добавим перевод для пункта меню
INSERT INTO `SC_local`
(`id`, `lang_id`, `value`, `group`, `subgroup`)
VALUES ('pgn_import_products_xml', '1', 'Импорт XML', 'back', 'gen'),
('pgn_import_products_xml', '2', 'Import XML', 'back', 'gen');

Добавляем поддержку русского и английского языков

В результате в админке появляется пункт меню, но пока при щелчке по нему ничего не происходит — открывается пустая страница. Необходимо добавить функционал.

Внимание: обновление меню происходит только в том случае если обновить целиком страницу или же щелкнуть по иконке «Магазин» в главном меню Webasyst.
Добавление функционала

Указываем файл скрипта, который будет обрабатывать открытие страницы
INSERT INTO `SC_division_interface`
(`xDivisionID`, `xInterface`, `xPriority`, `xInheritable`)
VALUES ('209', '1_b_import2xml', '0', '0');
xDivisionID — идентификатор записи с информацией о подпункте меню
xInterface — имя файл. В нашем случае это будет файл b_import2xml.php

Файл b_import2xml.php располагается в папке /published/SC/html/scripts/modules/test/_methods Принцип организации файла можно посмотреть в других файлах из этого каталога.

Файлы шаблона используемые в этих скриптах находятся в папке /published/SC/html/scripts/templates/backend

 

Август 3

Добавление товару поля WebAsyst Shop-Script

 

в БД выполняем запрос

ALTER TABLE `SC_products` ADD `actio` INT( 11 ) NOT NULL DEFAULT ‘0’

/published/SC/html/scripts/modules/products/_methods/b_product_settings.php

Добавляем строку

$product[‘actio’] = 0;

после строки

$product[‘ordering_available’] = 1;

 

и строку

$productEntry->actio = $this->getData(‘actio’);

после строки

$productEntry->ordering_available = $this->getData(‘ordering_available’);

в файле

/published/SC/html/scripts/classes/class.product.php

после строки

var $ordering_available;

добавте

var $actio;

 

в файле

/published/SC/html/scripts/templates/backend/product_settings.html

после строк

<td>{lbl_prdset_str_ordering_available}: </td>
<td><input type=»checkbox» name=»ordering_available» value=»1″ {if $product.ordering_available}checked{/if} /></td>
</tr>

добавляем блок
<tr>
<td>Акционный товар: </td>
<td><input type=»checkbox» name=»actio» value=»1″ {if $product.actio}checked{/if} /></td>
</tr>

ну и иногда чистим кеш. 😉

 

 

Июнь 27

добавляем редактирование поля в заказ в админке

order.html добавляем поле

<tr>
<td nowrap=»nowrap»>customer phone:</td>
<td><input type=»text» name=»customer_phone» size=»17″ maxlength=»255″ value=»{$order_info.customer_phone|escape:’html’}» /></td>
</tr>

 

в файл edit_order.php

$customer_phone = $this->getData(‘customer_phone’);

и

$info = compact(‘shipping_info’, ‘billing_info’, ‘products’, ‘discount’, ‘shipping_cost’, ‘payment_type’, ‘amount’, ‘comment’, ‘discount_descr’);
меняем на

$info = compact(‘shipping_info’, ‘billing_info’, ‘products’, ‘discount’, ‘shipping_cost’, ‘payment_type’, ‘amount’, ‘comment’, ‘discount_descr’,’customer_phone’);

 

в class.order_editor.php

строки

$fields = array_merge($fields, array(
‘payment_type’ => $order_info[‘payment_type’]
,’shipping_cost’ => $order_info[‘shipping_cost’]
,’order_discount’ => $order_info[‘discount’]
,’order_amount’ => $order_info[‘amount’]
,’customers_comment’ => $order_info[‘comment’]
,’discount_description’ => $order_info[‘discount_descr’]

меняемна

$fields = array_merge($fields, array(
‘payment_type’ => $order_info[‘payment_type’]
,’shipping_cost’ => $order_info[‘shipping_cost’]
,’order_discount’ => $order_info[‘discount’]
,’order_amount’ => $order_info[‘amount’]
,’customers_comment’ => $order_info[‘comment’]
,’discount_description’ => $order_info[‘discount_descr’]
,’customer_phone’ => $order_info[‘customer_phone’]

Сентябрь 9

WebAsyst ShopScript линии метро

Разносим метро  по линиям, такое действие нужно если нужносортировать именно по метке заказы в админке.  файл sql с таблицами метро и линии прелогается как добавить столбик лини метро смотрим сдесь

11 = номер новосозданого поля «линия»

2= номер поля собствено станции

REPLACE INTO SC_customer_reg_fields_values (`reg_field_ID`,`customerID`,`reg_field_value`) SELECT ’11’, `customerID`, line.name FROM `SC_customer_reg_fields_values`, metro, line WHERE `reg_field_ID`=2 AND `reg_field_value` = metro.name AND metro.line_id=line.id

 

 

Апрель 5

webasyst позволяем определенному пользователю доступ только к определенной категорие

выполняем в БД подразумеваеться что всекто не состоят в первой группе

будут видеть только ту категорию в которой прописан его ИД

ALTER TABLE `SC_categories` ADD `cat_acces` TEXT NOT NULL

В файле /published/SC/html/scripts/templates/backend/category.html после блока

<tr>
<td>{lbl_catset_slug}</td>
<td><input name=»slug» value=»{$CategoryInfo.slug|escape:’html’}» type=»text» style=»width:350px;» /></td>
</tr>

добавляем окно назначени прав категориям поле показуем только 1 группе

{if in_array(1, $grupp_id)}
<tr>

<td>через запятую права доступа</td>
<td> {foreach from=$users_id item=_users_id}{$_users_id}, {/foreach} <input name=»cat_acces» value=»{$CategoryInfo.cat_acces|escape:’html’}» type=»text» style=»width:350px;» /></td>
</tr>
{/if}

в файл

/published/SC/html/scripts/classes/class.category.php

после

var $slug;

добавляем
var $cat_acces;

 

в файл

/published/SC/html/scripts/index.php

после

if(is_object($currencyEntry)){
$smarty->assign(‘current_currency_js’, $currencyEntry->getJSCurrencyInstance());
}

добавляем

(выводим ИДы всех пользователей по факту можнобыло поиграть с JS (но сейчас не охота), для того чтоб пользователь админ мог скопировать нужный ИД.)

$result=mysql_query(‘SELECT * FROM `WBS_USER`’);
$users_id=array();
while($row=mysql_fetch_array($result))
{
$users_id[]=$row[‘U_ID’];

}

$smarty->assign(‘users_id’, $users_id);
$smarty->assign(‘user_id’, $_SESSION[‘__WBS_SC_DATA’][«U_ID»]);
$smarty->assign(‘grupp_id’, $_SESSION[‘__WBS_SC_DATA’][UG_IDs]);

в файле

/published/SC/html/scripts/core_finctions/category_functions.php

меняем начало функции _recursiveGetCategoryCList

function _recursiveGetCategoryCList( $parent, $level, $expandedCategoryID_Array, $_indexType = ‘NUM’, $_countEnabledProducts = false )
{

 

$adm=(in_array (1, $_SESSION[‘__WBS_SC_DATA’][UG_IDs])?1:0);

$name = LanguagesManager::sql_prepareField(‘name’, true);//, `id_quickbooks`
$sql = <<<SQL
SELECT `categoryID`, {$name}, `products_count`, `cat_acces`,`products_count_admin`, `parent`, `id_1c`
FROM `?#CATEGORIES_TABLE`
WHERE `parent`=? AND( `cat_acces` like(‘%{$_SESSION[‘__WBS_SC_DATA’][«U_ID»]}%’) OR {$adm}=1 OR {$level}>0 )
ORDER BY `sort_order`, `name`
SQL;