Убрал.

1,602

(41 ответов, оставленных в Вопросы по работе с системой)

Он вызывает из этого же класса функцию checkOpenPassword, посмотрите что в ней.

{$mystr=str_replace("/watch?v=","/embed/", $product->getPropertyValueById(3))}

Практически также как и в PHP

1,604

(41 ответов, оставленных в Вопросы по работе с системой)

Да точно! здесь же у нас идёт на прямую запись. Я думаю Вот так поможет.
изменить

$user['pass'] = $user::cryptPass(\RS\Helper\Tools::generatePassword(6));

на

$user['openpass'] = \RS\Helper\Tools::generatePassword(6);
$user['pass'] = $user::cryptPass();

Ато у нас получается [b]openpass[/b] поэтому и пустой, что нигде не присваивается.

Я думаю надо код JS Ваш обернуть {literal}

1,606

(27 ответов, оставленных в Вопросы по работе с системой)

Да. Подумаем над этим.

1,607

(41 ответов, оставленных в Вопросы по работе с системой)

Чтобы видеть ошибки, а не 500-ю включите отображение ошибок:
http://readyscript.ru/faq/#faq-errors

 $user = $data['orm'];
 $flag  = $data['flag']; //Флаг insert или update
 if ($flag == self::INSERT_FLAG && \Setup::$INSTALLED && !$this['no_send_notice']) {
            
 // Уведомление пользователю
 $user = new \Users\Model\Notice\UserRegisterUser;
 $user->init($this, $this['openpass']);
 \Alerts\Model\Manager::send($user); 

Что касается уведомления, то Вы переприсвоили переменной $user, объект самого уведомления и передали объект самого себя, а не пользователя. Зачем?
Вам в Уведомдение нужно передать объект пользователя который вы получаете из объекта $data выше.

Нужно же так:)

 $user = $data['orm'];
 $flag  = $data['flag']; //Флаг insert или update
 if ($flag == $user::INSERT_FLAG && \Setup::$INSTALLED && !$user['no_send_notice']) {
            
 // Уведомление пользователю
 $user_notice = new \Users\Model\Notice\UserRegisterUser;
 $user_notice->init($user, $user['openpass']);
 \Alerts\Model\Manager::send($user_notice); 

1,608

(27 ответов, оставленных в Вопросы по работе с системой)

Ну чтож теоретически можно сделать следующим образом.
Сам блок контроллер для пагинации принимает параметр p из GET запроса.

Для отображения пагинации нужен сам объект пагинации. А именно:
\RS\Helper\Pagination
Можно воспользоваться функцией static_call (http://readyscript.ru/dev-manual/dev_sm … tatic_call) и помощью неё заполнить объект пагинации из своего модуля, передав нужные переменные в публичную статическую функцию своего апи. Например вызовом в шаблоне:

{static_call var=paginator callback=['\Custom\Model\Api','myPagination'] params=[$this_controller->article_api, $this_controller->getParam('pageSize')]}

В самой функции, надо сделать примерно следующее:

/**
* 
* @param \Article\Model\Api $article_api - объект АПИ статей
* @param integer $limit - по сколько резульататов выводить.
*/
public static function myPagination($article_api, $limit)
{
      $page        = \RS\Http\Request::commonInstance()->get('p', TYPE_INTEGER, 1); //Получаем из GET текущую страницу
      $total         = $article_api->getListCount(); //Получим общее количество статей
      $paginator = new \RS\Helper\Paginator($page, $total, $limit); 
      retrun $paginator;
}

В самом шаблоне чуть ниже static_call можно вызвать теперь шаблон пагинатора:

{include file="%THEME%/paginator.tpl"}

А может есть в CMS какая то готовая функция которая выводит значение характеристики по ее id? Или только способ описанный выше?

Конечно есть:
Если у нас есть объект товара то можно так:

{$product->getPropertyValueById(идентификатор нужной характеристики)} {* Получить значение по id *}
{$product->getPropertyValueByTitle('имя нужной характеристики')} {* Получить значение по названию характеристики *}

Единственное, нужно предварительно наполнить товар характеристиками. Если у Вас используется в коде только один экземпляр товара, например в карточке товара (правда в карточке уже характеристики подгружены) перед вызовом метода, нужно вызвать метод:

{$product->fillProperty()} {* Наполняет характеристиками товар *}

Если у Вас есть несколько или множество товаров, то есть установка массовая характеристик товарам. Например так:

{$list=$this_constroller->api->addProductsProperty($list)}

где $list - массив с товарами,
а в api содержится экземпляр класса \Catalog\Model\Api

1,610

(4 ответов, оставленных в Вопросы по созданию тем оформления)

Михаил пишет:
Закусило Александр пишет:

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

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

А если через редактирование блока. У Вас какой код в итоге получался?

1,611

(10 ответов, оставленных в Вопросы по созданию тем оформления)

Ярослав пишет:

Попробуйте просто

{moduleinsert name="\Comments\Controller\Block\Comments" type="\catalog\model\commenttype\product" }

Думаю дело не в этом. Он отработает тоже самое, просто взяв параметры по умолчанию.

1,612

(12 ответов, оставленных в Вопросы по созданию тем оформления)

toFixed - приводит к числу с плавающей точкой. Первый аргумент это количество чисел после запятой
https://developer.mozilla.org/ru/docs/W … er/toFixed

.toFixed().replace(/(\d)(?=(\d{3})+\.)/g, '$1 ');

Тада! smile

1,613

(41 ответов, оставленных в Вопросы по работе с системой)

Попробуйте в Вашем хуке beforeWrite выполнить сразу после установки openpass

/**
* Действия перед записью объекта пользователя
* 
* @param array $data - Массив  с данными
*/
public static function ormBeforeWriteUsersUser($data){
     /**
     * @var \User\Model\Orm\User
     */
     $user = $data['orm'];
     $flag  = $data['flag']; //Флаг insert или update
     if ($flag==$user::INSERT_FLAG){ //Делаем только на создание (insert)
          $my_autologin = \RS\Http\Request::commonInstance()->request('my_autologin', TYPE_INTEGER, false); //Получаем флаг из запроса
          if ($my_autologin){ //Если флаг стоит

              $user['pass'] = $user::cryptPass(\RS\Helper\Tools::generatePassword(6));
          }

     }
}

Я думаю, тогда 100% всё будет как надо.

1,614

(12 ответов, оставленных в Вопросы по созданию тем оформления)

Я думаю будет лучше так

.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1 ');

1,615

(41 ответов, оставленных в Вопросы по работе с системой)

значит мне в форму регистрации нужно вставить данный код?
а что тогда использовать вместо? <input type="checkbox" name="reg_autologin" {if $order.reg_autologin}checked{/if} value="1" id="reg-autologin">

Да, только проверка там не нужна на if ведь объекта $order просто в том шаблоне у Вас не существует. И сделайте name другой например просто my_autologin, чтобы не пересеклось ни где. А потом в хуке на него и проверите.

1,616

(41 ответов, оставленных в Вопросы по работе с системой)

Потому что в объектах используются функции beforeWrite(перед записью в БД) и afterWrite(После записи в БД) в которых и происходят все дейтсвия. Если вы откроете класс \Users\Model\Orm\User (/modules/users/model/orm/user.inc.php) и посмотрите в метод
beforeWrite.
То там задаётся сам пароль вот так:

if (!empty($this['openpass'])) {
      $this['pass'] = self::cryptPass($this['openpass']);
}

Т.е. если задан openpass, что Вы и делаете в хуке, то pass будет сформирован из него.
Мы не храним в открытом виде пароли в БД.

1,617

(41 ответов, оставленных в Вопросы по работе с системой)

А для чего проверять на это галочку?

Потому, что запись в пользователя в БД может происходить и через админку. Вот представьте вы создаёте в админ панели пользователя указываете у него пароль. А он потом не подходит. Для этого и нужна проверка на галочку. Или программно создаёте пользователя, хотите присвоить ему пароль и никак не получается. Проверьте на параметр в посте.

А на каком же тогда этапе пароль должен записываться в поле pass?
Не понимаю что то я

На этом этапе Вы и передаёте пароль для записи. Просто генерируете его самостоятельно. Ведь Вы же так хотели.

1,618

(10 ответов, оставленных в Вопросы по созданию тем оформления)

Что то наделали там не так

1,619

(41 ответов, оставленных в Вопросы по работе с системой)

Ну вот значит всё работает. openpass записывается Ваш созданный пароль который генерируется.
Вам осталось проверить ещё на приходящую из запроса Вашу галочку. Что у Вас не работает?

1,620

(41 ответов, оставленных в Вопросы по работе с системой)

Да конечно

Сделайте var_dump и поставьте exit();
Если код работает, то он не даст выполнить код и покажет отработала функция или нет.

1,621

(10 ответов, оставленных в Вопросы по созданию тем оформления)

Ну дело видимо в шаблоне blocks/comment/comment_block.tpl, что-то там не так

1,622

(41 ответов, оставленных в Вопросы по работе с системой)

Почему эта функция не работает?

А Вы доп модуль создали? Инициализировали его?

Вот код, все скрытые поля указаны.

Ну вот referer же видите

1,623

(4 ответов, оставленных в Вопросы по работе с системой)

IP адреса это не 100% гарантия правильного определения города. Так у Всех. Кстати там есть выбор канала по которому находить IP адрес. Можете попробовать dadata. Может будет точнее. Или возможно. Определить город не получилось и по умолчанию отработал Краснодар.

1,624

(10 ответов, оставленных в Вопросы по созданию тем оформления)

Попробуйте \\ заменить на \, возможно Ваш сервер дописывает лишний слэш

1,625

(41 ответов, оставленных в Вопросы по работе с системой)

И почему то перекидывает на страницу с регистрацией, наверно что то нужно добавить как было в примере с авторизацией?

Для перехода на страницу возврата передайте скрытое поле с именем "referer", где в значении укажите url куда вернутся после регистрации. И посмотрите не передаётся ли он у Вас уже. Скорее всего из-за этого.


А если мне нужно что бы было по умолчанию?
почему, так не будет работать?

Поясните подробнее, ато не совсем понятно.