У клиента аудит сео-контора производила, так они наоборот заставили убрать фильтры. Достаточно страниц брендов с описанием.
502 17.06.2016 12:56:40
Re: Добавить свой класс каждому пункту меню категорий (14 ответов, оставленных в Вопросы по работе с системой)
Выкладываю пример наипростейшего модуля, который добавляет поле CSS класс для пунктов меню: https://yadi.sk/d/9lRQ7IQ-sZgQv
Подсмотрел у Joomla, там к каждому пункту меню можно добавлять классы.
Потом просто его можно вывести шаблоне меню как {$item.cssclass}:
{foreach from=$menu_level item=item}
<li class="{if !empty($item.child)}dropdown{/if}{if $item.fields.typelink=='separator'} separator{/if}
{if $item.fields->isAct()} active{/if} {$item.cssclass}" {if $item.fields.typelink != 'separator'}{$item.fields->getDebugAttributes()}{/if}>
{if $item.fields.typelink!='separator'}
<a href="{$item.fields->getHref()}" {if !empty($item.child)}dropdown-toggle{/if} {$item.cssclass}" {if $item.fields.target_blank}target="_blank"{/if}>{$item.fields.title}</a>
{else}
<li class="divider"></li>
{/if}
{if !empty($item.child)}
<ul class="dropdown-menu {$item.cssclass}_dropdown">
{include file="blocks/menu/top_branch.tpl" menu_level=$item.child}
</ul>
{/if}
</li>
{/foreach}Пример для меню темы на базе bootstrap 3. Получилось подружить с конструктором достаточно интересную тему http://theme.stepofweb.com/Smarty/v1.1. … start.html
503 17.06.2016 12:41:04
Re: 1С Предприятие 7.7 (4 ответов, оставленных в Вопросы по работе с системой)
К сожалению, скрипт отдельно идет на микрофреймворке, так как используется для нескольких разных движков. Да и во время создания опыта разработки под RS не было.
У клиентов тоже возможности перейти на 8 нет из-за множества переделок. Как говорится "работает - не трогай")
504 17.06.2016 03:21:59
Re: Заказ по телефону в корзине (11 ответов, оставленных в Вопросы по работе с системой)
или WinMerge для массового сравнения
505 17.06.2016 03:20:13
Re: 1С Предприятие 7.7 (4 ответов, оставленных в Вопросы по работе с системой)
Интеграция идет с любой системой, поддерживающей commerce ML2 (мой склад, 1С 8 и другие). В 1с 7.7 выгрузки из коробки в данном формате нет. Но возможно найти дополнения.
Можно написать со стороны 1с выгрузку csv файлика с данными, а со стороны RS загрузку. И загрузку заказов из RS.
Был опыт реализации подобного для 2 магазинов.
506 30.05.2016 22:36:45
Re: из сайта в 1с (8 ответов, оставленных в Вопросы по работе с системой)
Совершенно верно. НА самом деле, программисты 1с могут и сделать загрузку товаров из заказов.
507 29.05.2016 20:37:36
Re: из сайта в 1с (8 ответов, оставленных в Вопросы по работе с системой)
Добрый день! Да, заказы выгружаются в 1с без проблем.
Подробнее здесь http://readyscript.ru/manual/catalog_exchange_1c.html
508 29.05.2016 20:36:32
Re: Как сделать отдельную страницу с отзывами (комментариями)? (15 ответов, оставленных в Вопросы по созданию тем оформления)
Что у вас в настройках модуля?
http://take.ms/YbuRb
Возможно не проставлено "несколько комментариев с 1 ip адреса"
509 27.05.2016 11:53:02
Re: Обновление БД при работе при работе через svn (6 ответов, оставленных в Вопросы по разработке модулей и API системы)
Если допполя добавляете, то модули не забывайте переустанавливать, чтобы структура БД была актуальной.
510 26.05.2016 14:14:47
Re: 1С УТ 11.2 и выгрузка свойств товарных предложений (3 ответов, оставленных в Вопросы по разработке модулей и API системы)
Уже написал в поддержке. С Виталием уже спор идет)
http://helpdesk.readyscript.ru/ticket/Harakteristiki-i-1s-n632089.htmlТам же в теме выслал примеры. Если надо, продублирую
511 26.05.2016 00:36:55
Тема: 1С УТ 11.2 и выгрузка свойств товарных предложений (3 ответов, оставленных в Вопросы по разработке модулей и API системы)
Впервые настраивали импорт для УТ 11.2. Как обычно, в новых версиях и терминология другая и интерфейс.
Как показала практика, для версии УТ 11.2 узел "Свойства" для товарных предложений может находится не только в файле "import.xml", но и "offers.xml", в результате чего свойства не загружаются и характеристики не создаются.
Решается путем добавления '\Exchange\Model\Importers\CatalogProperty' в массив в api.inc.php (146 строка):
}elseif(preg_match('/offers/iu',$filename)){ //offers.xml
//Очистим сессию с id складов для получения
$_SESSION[\Exchange\Model\Importers\Warehouse::SESS_KEY_WAREHOUSE_IDS] = array();
return $this->matcher->applyImporters($full_filename,
array(
'\Exchange\Model\Importers\CatalogProperty',//ЗДЕСЬ ДОБАВЛЕНО!
'\Exchange\Model\Importers\PriceType',
'\Exchange\Model\Importers\Warehouse',
'\Exchange\Model\Importers\Offer',
),
$offset, $max_exec_time);В описании файла offers.xml узел "Свойства" есть - http://dev.1c-bitrix.ru/api_help/sale/xml/offers.php
Спасибо разработчикам, модуль написан красиво. Много каких модулей импорта видел в других системах и там бы одной строчкой не отделался.
512 24.05.2016 19:50:54
Re: Не расширяется ORM объект (4 ответов, оставленных в Вопросы по разработке модулей и API системы)
Так модуль "Меню" надо было переустанавливать, а я свой пытался. Теперь ясно.
513 23.05.2016 14:47:32
Re: Не расширяется ORM объект (4 ответов, оставленных в Вопросы по разработке модулей и API системы)
Создал handlers.inc.php в папке своего модуля evaddons со следующим содержанием:
<?php
namespace evAddons\Config;
use \RS\Orm\Type;
/**
* Класс содержит обработчики событий, на которые подписан модуль
ДЛя 8 марта и темы evTheme
2016_05_06 Добавление поля css к меню
*/
class Handlers extends \RS\Event\HandlerAbstract
{
/**
* Добавляет подписку на события
*
* @return void
*/
function init()
{
$this->bind('orm.init.menu-menu'); //добавим css
}
public static function ormInitMenuMenu(\Menu\Model\Orm\Menu $orm_menu)
{
$orm_menu->getPropertyIterator()->append(array(//Добавляем свойства к объекту
t('Основные'), //Закладка
'css' => new Type\Varchar(array(
'maxLength' => '50',
'description' => 'Класс CSS',
'hint' => t('Дополнительный CSS класс для пункта меню')
))
));
}
}Досмотрел до 44 минуты) И там как раз то что надо. Создал файл install.inc.php и все заработало, спасибо! В текстовой документации не нашел данные рекомендации.
<?php
namespace evAddons\Config;
/**
* Класс отвечает за установку и обновление модуля
*/
class Install extends \RS\Module\AbstractInstall
{
function install()
{
$result = parent::install();
if ($result) {
$menu = new \Menu\Model\Orm\Menu();
$menu->dbUpdate();
}
return $result;
}
/**
* Функция обновления модуля, вызывается только при обновлении
*/
function update()
{
$result = parent::update();
if ($result) {
$menu = new \Menu\Model\Orm\Menu();
$menu->dbUpdate();
}
return $result;
}
}514 22.05.2016 16:21:23
Тема: Не расширяется ORM объект (4 ответов, оставленных в Вопросы по разработке модулей и API системы)
Здравствуйте! Хочу добавить допполе к объекту "пункт Меню"
function init()
{
$this->bind('orm.init.menu-menu'); //добавим css
}
public static function ormInitMenuMenu(\Menu\Model\Orm\Menu $orm_menu)
{
$orm_menu->getPropertyIterator()->append(array(//Добавляем свойства к объекту
t('Основные'), //Закладка, появится в форме редактирования товара
'css' => new Type\Varchar(array(
'maxLength' => '50',
'description' => 'Класс CSS',
'hint' => t('Дополнительный CSS класс для пункта меню')
))
));
} В таблице поле не создается, а в карточке меню оно есть.
Что-то делаю не так...
515 13.05.2016 16:10:17
Re: Логика работы корзины (14 ответов, оставленных в Вопросы по разработке модулей и API системы)
Отлично! Избранного не хватает.
516 13.05.2016 10:52:17
Re: Логика работы корзины (14 ответов, оставленных в Вопросы по разработке модулей и API системы)
Я и моя семья сейчас практически большинство покупок (кроме еды, наверное) делают через интернет. Дешевле, больше выбор. И достаточно часто пользуешься разными устройствами.
У 003, oзон, ситилинк, ибей, элиэкспресс, Днс, Вайлдберрис всегда корзина доступна везде (специально проверил). Они стараются, чтобы товар, заинтересовавший пользователя, был постоянно на виду.
Изменил, как описал выше. Наблюдаю.
517 12.05.2016 19:29:31
Re: Логика работы корзины (14 ответов, оставленных в Вопросы по разработке модулей и API системы)
Убрал удаление элементов корзины в handlers.inc.
Доработал модель корзины. Работал топором, буду тестировать:
/**
* Получать экземпляр класса можно только через ::currentBasket()
*/
protected function __construct($mode = self::MODE_SESSION, Orm\Order $order = null)
{
$this->session_id = session_id();
$this->mode = $mode;
$this->order = $order;
switch($this->mode) {
case self::MODE_ORDER: {
$this->cartitem = new Orm\OrderItem();
//2016_05 для привязки корзины к пользователю
$this->select_expression =array('order_id="#order_id1"',array(
'order_id1' => $this->order['id']
));
$this->order_expression = 'sortn';
break;
}
case self::MODE_EMPTY: {
$this->cartitem = new Orm\CartItem();
}
default: {
$this->cartitem = new Orm\CartItem();
//2016_05 ТУТ
$this->select_expression = array('site_id="#site_id1" and (session_id="#session_id1" or (user_id="#user_id1" and user_id>0))',array(
'site_id1' => \RS\Site\Manager::getSiteId(),
'session_id1' => $this->session_id ,
'user_id1' => \RS\Application\Auth::getCurrentUser()->id
)
);
$this->order_expression = 'dateof';
}
}
$this->loadCart();
}
/**
* Загружает корзину из базы данных
*
* @return void
*/
function loadCart()
{
$q = \RS\Orm\Request::make()
->from($this->cartitem)
->where($this->select_expression[0],$this->select_expression[1])//ТУТ
$this->items = $q->objects(null, 'uniq');
if ($this->mode == self::MODE_ORDER) {
$this->order_items = $this->items;
}
}
/**
* Удаляет позицию из корзины.
*
* @param string $uniq - Уникальный идентификатор элемента корзины
* @return bool
*/
function removeItem($uniq)
{
if (isset($this->items[$uniq])) {
if ($this->mode == self::MODE_SESSION) {
\RS\Orm\Request::make()
->delete()
->from($this->cartitem)
->where($this->select_expression[0],$this->select_expression[1]) //ТУТ
->where(array(
'uniq' => $uniq
))->exec();
}
unset($this->items[$uniq]);
unset($this->order_items[$uniq]);
unset($this->cache_products[$uniq]);
unset($this->cache_coupons[$uniq]);
}
return true;
}
/**
* Очищает корзину
*/
function clean()
{
$this->items = array();
$this->order_items = array();
$cache_coupons = null;
$cache_products = null;
$result = \RS\Orm\Request::make()
->delete()
->from($this->cartitem)
->where(
//2016_05_12 eventus поддержка привязки к пользователям
'site_id="#site_id1" and (session_id="#session_id1" or (user_id="#user_id1" and user_id>0))',array(
'site_id1' => \RS\Site\Manager::getSiteId(),
'session_id1' => $this->session_id ,
'user_id1' => \RS\Application\Auth::getCurrentUser()->id
))->exec();
$this->cleanInfoCache();
return true;
}
/**
* Возвращает информацию по количеству товаров и стоимости товаров в корзине
*
* @param mixed $format - форматировать общую сумму заказа
* @param mixed $in_base_currency - возвращать в базовой валюте
* @return array
*/
public static function getCurrentInfo($format = true, $use_currency = true)
{
self::currentCart()->cleanInfoCache(); //ТУТ добавил для принудительного обновления инф-ции о корзине
$options = (int)$format.(int)$use_currency.\Catalog\Model\CurrencyApi::getCurrentCurrency()->id;
if (!isset($_SESSION[self::CART_SESSION_VAR][$options])) {
self::currentCart()->getCartData($format, $use_currency);
}
return $_SESSION[self::CART_SESSION_VAR][$options];
}
Итого:
1. если были товары в корзине при авторизации, то они попадут к в корзину авторизованному.
2. Любые изменения в корзине на разных устройствах под одним и тем же пользователем синхронизированы
518 12.05.2016 16:27:18
Re: Логика работы корзины (14 ответов, оставленных в Вопросы по разработке модулей и API системы)
Как раз я привел примеры работы крупных розничных магазинов, где сам покупаю товары и моя корзина доступна мне на любом устройстве (домашний, офисный, планшет).
В нашем случае надо следить, чтобы при авторизации корзина была пустой или затрется предыдущая. Т.е. каждый раз очищать предварительно корзину. Ничто так не раздражает, как потерянный заказ.
Подавляющее число оптовиков - ИПшники без работников. И они в связи своей мобильностью как раз и чаще всего попадают с удаленным заказом.
Достаточно ли правки модели корзины,чтоб для авторизованных пользователей не использовать session_id? Или где то еще используется привязка?
519 11.05.2016 22:13:55
Re: Логика работы корзины (14 ответов, оставленных в Вопросы по разработке модулей и API системы)
Возможно я разобрался с пропадающими корзинами. Все дело в привязке элементов корзины к сессии у авторизованных пользователей.
1. В одном браузере авторизованный пользователь набрал корзину.
2. Зашел в другом браузере (например, дома). Элементы корзины перепривязываются при авторизации ко второй сессии, но в другом то браузере пользователь не выходил! В результате в первой сессии пользователь теряет корзину.
Просто уже достаточно много жалоб на пропадающие корзины у оптовиков. Под одним и тем же логином заходят разные менеджеры и перехватывают друг у друга корзины.
Только что провел эксперимент:
1. Набрал в разных сессиях авторизованным пользователем корзины.
2. В сессии 1 вышел. (при этом корзина сохраняется и видна)
3. Сразу же авторизовался в сессии 1
4. В сессии 2 корзина сразу опустела.
Проверил у крупных магазинов логику:
1. Добавленный товар с разных авторизованных сессий виден в корзине у обоих. Корзина общая, привязана к авторизованному пользователю или к сессии у гостя.
2. Если авторизоваться с заполненными корзинами, то содержимое корзин объединяется, а не заменяется новой как у нас.
520 10.05.2016 20:41:58
Re: Логика работы корзины (14 ответов, оставленных в Вопросы по разработке модулей и API системы)
Спасибо за пояснение!
521 10.05.2016 20:39:29
Re: Совместные закупки и добавление в заказ (2 ответов, оставленных в Вопросы по разработке модулей и API системы)
Имеется организатор, который постоянно добавляет. Пока я решил частично проблему "костылем".
- Убрал ограничение по сумме заказа (ранее было 5000)
- Добавил новый способ доставки "Добавить к основному заказу" и способ оплаты "использовать оплату основного заказа". Связал их. Они действуют с 0 рублей. Добавил к ним пояснения для чего они.
- Все остальные типы доставки и оплаты действуют от 5000 руб. Т.о. необходимо сформировывать какой то первоначальный заказ.
В 1с потом просто сформируют итоговый счет из основного заказа и добавок и рассчитают вручную стоимость доставки.
Сейчас пользователи уже начали пользоваться добавками и увеличивают средний чек.
1. Можно еще заказ с такими типами доставки в другой статус переводить ("Добавление к заказу") и потом в 1с при загрузке заказов автоматом с основным заказом сливать.
2. Еще вариант - по крону модулем сливать заказы пользователей с основным заказом в 1, но тут у меня вопрос упирается в перерасчет стоимости доставки и оплаты, так как логику оформления заказа еще не смотрел.
522 06.05.2016 22:33:39
Re: Логика работы корзины (14 ответов, оставленных в Вопросы по разработке модулей и API системы)
Спасибо за ответ!
Когда пользователь авторизовывается и у него есть товары в корзине:
- Товары, которые были привязаны user_id до этого удаляются (т.к. пользователь собрал новую корзину)
Здесь не совсем понял про удаление.
523 05.05.2016 22:02:03
Тема: Логика работы корзины (14 ответов, оставленных в Вопросы по разработке модулей и API системы)
Поясните, пожалуйста, механизм работы корзины. Привязываются ли товары в корзине только к сессии или так же и к пользователю?
Возникают ситуации, когда пользователи не видят в корзине товары или товары из корзины исчезают.
524 05.05.2016 21:59:29
Тема: Совместные закупки и добавление в заказ (2 ответов, оставленных в Вопросы по разработке модулей и API системы)
Здравствуйте! Совместные закупки достаточно популярная сейчас тема.
Но с организаторами совместных закупок не очень удобно работать, так как постоянно приходится делать добавление товара в заказ вручную.
Думаю, как лучше сделать функционал добавления в заказ товара самим пользователем:
1. Добавлять в корзину заказы из уже сделанного заказа ( уже предлагал в улучшениях). Пользователь заново делает оформление заказа, старый заказ по запросу удаляется.
Проблема в складских остатках.
2. Сделать объединение заказов при оформлении. (добавить чек-бокс "Объединить с предыдущим заказом")
Получится перехватить оформление заказа хуком и объеденить заказы? Получится ли перерасчитать стоимость доставки?
Кто-нибудь реализовывал подобное? Работаете ли с совместными закупками?
525 29.04.2016 18:24:41
Re: Темы по сетке BS и несколько обернутых контейнеров (5 ответов, оставленных в Вопросы по созданию тем оформления)
Спасибо, Александр! Посмотрю ролики сегодня.