Вот решения для плагина.
http://stackoverflow.com/questions/5643 … -correctly
$(".autocomplete").autocomplete({
...
open: function() {
$("ul.ui-menu").width( Нужная ширина );
...
}
...
});Форум ReadyScript Сообщения от Закусило Александр
Вот решения для плагина.
http://stackoverflow.com/questions/5643 … -correctly
$(".autocomplete").autocomplete({
...
open: function() {
$("ul.ui-menu").width( Нужная ширина );
...
}
...
});К публичной части можно через getUrlPattern('catalog-front-product', array(':id' => '@entity_id'));
Аналог getAdminPattern соответственно.
Скажите. На облачной версии RS я смогу разве добавить модуль и все файлы которые нужны?
К сожалению нет. Если Вы хотите дорабатывать систему, то только на своём хостинге это можно сделать. Вам доступны только модули из marketplace.
В одном из следующих релизов сделаем эту возможность.
Видите у Вас id пустой. В select вы добавили, чтобы entity_id доставался?
Чуть ниже у Вас в common.js есть
if (!noShowCartDialog) {
$.openDialog({
url: url,
data: params,
callback: initCart,
colorboxOptions: {
width: 940,
className: 'noBorder cartDialog'
},
bindSubmit: false
});
} else {
$.post(url, params, function(response) {
try {
//Обновляем сведения в основном окне, если действие происходит во всплыв
ающем
window.opener.jQuery.cart('updateCartBlock', response);
} catch (e) {
$.cart('updateCartBlock', response);
}
}, 'json');
}Замените просто на:
$.post(url, params, function(response) {
try {
//Обновляем сведения в основном окне, если действие происходит во всплыв
ающем
window.opener.jQuery.cart('updateCartBlock', response);
} catch (e) {
$.cart('updateCartBlock', response);
}
}, 'json');Чтобы только post запрос шёл
Попробуйте на всякий случай Ctrl+F5.
И куда нажимаете конкретно, на какую кнопку и какой она имеет вид в html?
Если Вам не срочно, то на дня выйдет моё очередное видео посвящённое, как раз этому хуку. Если не хотите ждать, то можно полистать документацию по хукам:
http://readyscript.ru/dev-manual/dev_hooks.html
И посмотреть канал начиная с первого видео где создаётся первый модуль.
https://www.youtube.com/watch?v=KoF2IyG … L4X2UTC6Aw
И пользуясь документацией сделать как надо.
Хук Вам нужен:
orm.beforewrite.catalog-product
Что у Вас получилось в результате?
Не может этого быть, т.к. это просто класс для ссылки. У вас ссылка какая получается?
Тогда уберите:
, 'LinkAttr' => array('class' => 'crud-edit')Мы такой возможности массовой установки не предусматривали за ненадобностью. Но тут 2 варианта можно сделать.
Первый это выгрузка в CSV, автоматическое проставление в Excel артикулов и потом обратная загрузка товаров. (Однако т.к. артикулов нет, то нужно проверить настройки модуля Каталог товаров в части CSV опознания товаров. Там по умолчанию идёт по артикулу. Ато если не найдёт, то создаст копию товаров.)
Вторая это из дополнительного модуля подвеситься на beforeWrite(Действия перед записью объкта) товара и там проверить, если поле артикула пустое, то генерировать артикул. Например так:
$api = new \Catalog\Model\Api();
$this['barcode'] = $api->genereteBarcode();
где $this это объект, \Catalog\Model\Orm\Product, т.е. сам товар
P.S.
Однако, т.к. при импорте артикул записывается, то в настройках модуля обмена с 1С поставьте галочку не обновлять артикул.
Закусило Александр пишет:Тогда всё ещё проще. У ссылок на добавление в корзину, или у самой корзины нужно поставить класс noShowCart.
Да, это все стоит. Но на мобильном разрешении все равно перекидывает в корзину.
Тогда комментируем ещё
if ($.detectMedia && ($.detectMedia('mobile') || $.detectMedia('portrait')) ) return true;Надо ещё в select получать A.entity_id.
Тогда:
new TableType\Text('title', t('Товар'), array('href' => $this->router->getAdminPattern('edit', array(':id' => '@entity_id'), 'catalog-ctrl' ), 'LinkAttr' => array('class' => 'crud-edit') )),Тогда всё ещё проще. У ссылок на добавление в корзину, или у самой корзины нужно поставить класс noShowCart.
Шаг ширины блоков слишком большой, не нравится как выглядит конечный сайт. Хотелось бы более тонкую настройку системы разметки. Подумываю уже даже перейти на 24 колоночную.
Подскажите хотя бы куда смотреть? Может сам смогу разобраться.Там очень много завязок, т.к. там же ещё CSS JS конструктора. Мы обсудим на днях, может добавим в общее. Но пока ещё не решили. Подождите немного.
Официально Bootstrap 3 поддерживает только 12 колонок. Хотя впринципе это возможно, поэтому пишите пожелание.
Сейчас мы работаем только с 12 колоночным вариантом. Вы можете оставить пожелание у нас helpdesk.readyscript.ru, если Вам нужна поддержка 16 и 24 колоночной системы.
Почему кстати Вы выбрали 16 колоночный вариант?
Т.е. Вам всегда нужен физический переход в корзину?
Если да, то просто нужно сделать за место этой строки return true;, тогда всегда будет переход в корзину.
Антон пишет:весь код шаблона между if содержится.
Ну я ж написал что с if мне все ясно )) я про другое спрашивал. Ну да ладно, подключил уже через инклюид
Всё правильно
{if $dir.alias=='Мой алиас'}
{include file="%THEME%/my.tpl"}
{else}
{include file="%catalog%/my2.tpl"}
{/if}где %THEME% - короткий путь в папку с Вашей темой оформления. Например: /templates/ВАША ТЕМА/.
а %catalog% - это короткий путь к папке модуля каталога товаров в Вашей теме оформления. Например: /templates/ВАША ТЕМА/moduleview/catalog/.
Если в шаблон нужно передать переменную, то пишем:
{include file="%catalog%/my2.tpl" list=$list} Тогда в шаблоне тоже появится переменная с именем $list.
Дело всё в том, что открывающееся окно может не поместиться в экран на мобильной версии, поэтому существует код функции $.detectMedia
if ($.detectMedia && ($.detectMedia('mobile') || $.detectMedia('portrait')) ) return true; //Не открываем окна в мобильной версииЭта функция, которая физически находится в theme.js проверяет ширину экрана и переходит по ссылке если ширина меньше заданной.
Как вариант...
У оборачивающего контейнера нужно назначить position:relative;
У внутреннего блока, который будет расти position:absolute;left:0px;top:0px;
И соответственно большую нужную ширину.
Например можно подвеситна :focus в CSS.
http://htmlbook.ru/css/focus
А чтобы было с анимацей, нужно прочитать и поупражняться с transition http://html5book.ru/css3-transition/
Спасибо!
Ну естественно, Вы в файле API несколько раз переназначили с чем оно работает при вызове parent::__construct(.
Правильный API должен содержать только один экземпляр объекта того с чем он работает.
<?php
namespace Newpage\Model;
/**
* Класс API
*/
class MyApi extends \RS\Module\AbstractModel\EntityList
{
function __construct()
{
parent::__construct(new \Shop\Model\Orm\OrderItem, //С какой таблицей через ORM объект работать
array(
'multisite' => false, //Объект является не мультисайтовым (без поля site_id)
//'defaultOrder' => 'id DESC' //Сортировка по умолчанию при выборке
));
}
}Этим самым мы объявили, что мы будем работать через API только с объектом \Shop\Model\Orm\OrderItem. А именно с таблицей order_items.
Теперь, что касается контроллера... Там в самом начале Вы уже объявили API с которым работает контроллер через присвоение АПИ контроллеру в конструкторе класса.
function __construct()
{
parent::__construct(new \Newpage\Model\MyApi()); //API с которым будет работать контроллер
}Но я думаю при переносе у Вас ничего не получилось, т.к. Вы написали запрос в ручную и скорее всего у Вас на удалёнке свой префикс к таблицам БД совсем другой. Я иногда проверяю сам запрос просто выполнив его, например на удалённом PHPMyAdmin, если он доступен. Чтобы не запоминать префиксы, правильно будет строить запросы ORM запросом, тогда всё будет учтено.
Я думаю, что правильный код контроллера должен быть такой:
namespace Newpage\Controller\Admin;
use \RS\Html\Table\Type as TableType,
\RS\Html\Toolbar\Button as ToolbarButton,
\RS\Html\Toolbar,
\RS\Html\Tree,
\RS\Html\Table,
\RS\Html\Filter;
class MyCtrl extends \RS\Controller\Admin\Crud
{
function __construct()
{
parent::__construct(new \Newpage\Model\MyApi());
}
function helperIndex()
{
$helper = parent::helperIndex();
$q = $this->api->queryObj(); //Получаем объект запроса
//Изменяем запрос под наши нужды
$q->join(new \Newpage\Model\Orm\Mydiscount(), 'A.order_id=B.order_id', 'B') //JOIN к таблице с нужными сведениями
->join(new \Shop\Model\Orm\Discount(), 'B.discount_id=C.id', 'C'); //JOIN к таблице с скидками
//Теперь, что выбирать
$q->select = "A.order_id, A.title, B.discount_id, C.descr ";
$helper = parent::helperIndex();
$helper->setTopTitle(t('Товары со скидками'));
$edit_pattern = $this->router->getAdminPattern('edit', array(':id' => '@id'));
$helper->setTable(new Table\Element(array(
'Columns' => array(
new TableType\String('order_id', '1'),
new TableType\String('title', t('2')),
new TableType\String('discount_id', t('3')),
new TableType\String('descr', t('14')),
))));
return $helper;
}
}Ну всё дело в том я так думаю, про то что я говорил, что нужно проверять на флажок приходящий из поста о том, что нужно генерировать пароль.
Вы можете свой код закомментировать и попробовать туже схему. Я думаю всё будет как надо. Т.е. Вам не хватает проверок на то, что именно сейчас делается с пользователем. Попробуйте завардампить объекты в Вашем коде и приходящий POST или GET запрос, чтобы проанализировать.
Форум ReadyScript Сообщения от Закусило Александр