1,651

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

И еще вопрос, как можно скрыть navContainer от не зарегистрированного пользователя? куда вставить проверку?

Проверка пользователь залогинен или нет, можно так:

{if $is_auth}
  //Пользователь зарегистрирован
{/if}

Добрый день. Подскажите пожалуйста, как правильно сделать, что бы форма входа сразу отображалсь в шапке(а то сейчас она во всплывающем окне). Я пробовал редактировать шаблон, но у меня возникло затруднение в следующем. При нажатии кнопки войти меня перекидыват на страницу авторизации site.ru/auth/ и только на этой странице получается вход, скажите как это исправить?
Я так понимаю дело в action="{$router->getUrl('users-front-auth')}"

Вся причина в том, что ещё в форме, которая отправляется используется скрытое поле с идентификатором контроллера. Подсмотрите на странице авторизации этот код у формы и добавьте себе это скрытое поле.

1,652

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

Всё дело в том, что наша платформа использует практически все последние фишки в языке выжимая его по максимуму. Но для этого используются дополнительные модули, коих у Вас может и не быть. Скорее всего здесь и причина. Правильный и современный подход, это использовать современные программы для сервера. Например OpenServer. И пользутесь и у Вас голова не болит. Ручками ничего не нужно делать. Один клик и Всё работает. Перейдите на него и у Вас всегда всё будет хорошо, т.к. xampp уже устарел и так нужно в большинстве случаев всё делать руками. 2016 году это уже не актуально. Я лично за комфорт. А Вы?

1,653

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

Хорошо. Мы протестируем. Но я больше чем на 90% уверен это в следствие неправильной настройки у Вас происходит, хотя могу и ошибаться. О результатах я сообщу сюда же. Просто ожидайте. Справа вверху есть подписаться на ответы.

1,654

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

{$item.short_content}

1,655

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

Там ожитается в ответе json. Видимо вернулась строка. Это может быть в следвии какой-то ошибке. Вам от сервера, что приходит.
P.S. Включите предварительно показ ошибок
http://readyscript.ru/faq/#faq-errors

1,656

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

А это после какого действия?

1,657

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Правильно это надо сделать так:

public static function OrmAfterwriteShopOrder($data) 
{

    $order = $data['orm']; 
    $coupons = $order->getCart()->getCouponItems(); //Получение купонов заказа
    if (!empty($coupons)) {
         foreach ($coupons as $uniq=>$coupon){
               $cartitem = $coupon['cartitem']; //Получаем связь купона
         }

         //Предварительно удалим старые связи
         \RS\Orm\Request::make()
                     ->delete()
                     ->from(new \Newpage\Model\Orm\Mydiscount())
                     ->where(array{
                              'order_id' => $order['id']
                     })->exec();

         $order_id = new \Newpage\Model\Orm\Mydiscount();
         $order_id['order_id'] = $order['order_num'];
         $order_id['discount_id'] = $cartitem['entity_id'];
         $res = $order_id->insert();

    }   


    

}

1,658

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Переберите цикл и возьмите. Вы же знаете как циклы перебирать? Если нет, то Вам нужно учить PHP, т.к. это базовые знания по программированию. Иначе дальше Вы ни на шаг не провинитесь.

Почитайте книгу
http://www.internet-technologies.ru/books/book_190.html

или посмотрите видеоуроки по программированию на php

1,659

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Ну вот берите. В чём проблема? smile

1,660

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Правильно. Так и должно быть. Должна выдавать ошибка передачи данных, т.к. ожидается в ответе json, а из-за var_dump вернётся от сервера просто строка форматированная. Посмотрите с помощью firebug, что пришло в ответе от сервера.

1,661

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Чтобы посмотреть что у Вас выводится, нужно сохранить заказ. Вы можете сделать это в админ панели в разделе заказа какого-либо. Когда нажмёте сохранить, пойдёт запрос на сохранение. И Вы можете в ответе сервера посмотреть, что он вернёт. А вернуть он должен то, что у Вас в var_dump

1,662

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Ну а Вы предварительно не смотрите, что в переменной?

<pre>
var_dump($coupons);
</pre>
exit();
Дмитрий пишет:

В моей теме нет папки catalog /templates/ВАША ТЕМА/moduleview/catalog/
мне нужно ее создать?

Да.

Где лежит category.tpl?

/modules/catalog/view/blocks/category/
Скопировать нужно аналогично предыдущему примеру.

Вообще, чтобы понимать где шаблон и как его копировать на изменение. Нужно почитать прикреплённый Выше мной материал.

P.S. Ещё один момент. Для правки тем оформления, нужно отклонировать Вашу тему оформления в Управление -> Шаблоны->Справа вверху клонировать тему. И поставьте галочку переключиться на новую тему. После чего можете спокойно с ней работать. Иначе после обновления Ваши изменения затрутся, т.к. темы обновляются тоже.

1,664

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Ну, а для чего я Вам написал выше:

Получить купоны можно так:
$coupons=$order->getCart()->getCouponItems()

1,665

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Правильно и купон. Возьмите его из объекта заказа как и order_num.

<pre>
var_dump($order);
</pre>
exit();
Ярослав пишет:

Добавил поле CSS для категорий:
https://yadi.sk/d/iPyJJl4fsuYeU
Обратите внимание, название модуля поменял с evaddons на evcss, так как ранее название пересекалось с другим моим модулем. Поэтому старый модуль надо удалить.

Файл uninstall в конфиге Вам не нужен. Если класс пустой, его можно не использовать. Выкладывайте в Маркет smile

1,667

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Кстати, Вы используте в работе какую-либо IDE?

1,668

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Итак поясняю:

 public static function OrmAfterwriteShopOrder($data) 
    {

    //Получаем объект заказа из массива данных 
    $order = $data['orm']; //ЗДЕСЬ ОБЪЕКТ ЗАКАЗА \Shop\Model\Orm\Order

    //Здесь я зачем-то переназначаю переменную $order в, которой находится объект заказа уже.
    $order = new \Newpage\Model\Orm\Mydiscount(); //ЗДЕСЬ объект промежуточной Вашей таблицы
    //Записываю значение в поле order_id для таблицы
    $order['order_id'] = "1";
    //Запись значения в БД.
    $res = $order->insert();

    }

order_num можно взять из объекта заказа. Переменную для записи в БД нужно иметь свою отдельную.
Получить корзину заказа, можно через
$order->getCart()

Получить купоны можно так:
$order->getCart()->getCouponItems()

Чтобы посмотреть какого типа переменная и что в ней содержится в любом php файле можно так:

<pre>
var_dump(Имя переменной);
</pre>
exit(); //Останавливает всё

P.S.
Так, как у Вас явные пробелы в ООП, я специально не даю прямых ответов на вопросы связанные с объектно-ориентированным программированием. Я даю наводящие вопросы, чтобы Вы самостоятельно немножко разобрались. Поэтому Вы не обижайтесь, а пробуйте, я постараюсь дать максимальную возможною справочную информацию.

1,669

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Напишите код для afterwrite заказа, я Вам подскажу где.

1,670

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Да. Правильно.
Я Вам дал ссылку с хуками http://readyscript.ru/dev-manual/dev_hooks.html

1,671

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

У вас записывается заказ. Так подвестесь на хук записи заказа и там заносите в БД Ваш ORM объект. Там же и будет доступен сам объект заказа.
Ато получается Вы кодом сказали, что записывать надо самого себя. BeforeWrite в ORM объекте срабатывает перед записью самого себя. А чтобы сделать действия с другим объектом перед или после записи, то нужно использовать хук. В Вашем случае надо записывать Ваш ORM после записи заказа.

Смотрите хук afterwrite http://readyscript.ru/dev-manual/dev_hooks.html


Что касается переменных, то они не берутся из неоткуда. Их надо как-то присваивать. Глобальных переменных в RS практически нет. Это я к тому, что $order_num нужно сначала объявить чему-то равной, чтобы потом с ней оперировать.

1,672

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Что означает у Вас данный код:

function beforeWrite($flag)
    {
        $order = new \Newpage\Model\Orm\Mydiscount();
        $order['order_id'] = $order_num;
        $res = $order->insert();
    }  

И почему вы вешаетесь на запись именно Вашего ORM MyDiscount? Вы ведь должны вешаться на запись самого заказа. Разве не так? И ещё вопрос, откуда вы предполагаете брать $order_num?

Ну тогда копируете из
/modules/catalog/view/list_products.tpl шаблон в
/templates/ВАША ТЕМА/moduleview/catalog/list_products.tpl и потом меняете его содержимое перенося, то что Вам нужно в нужное место.
Описание категории выводится в {$category.description}

1,674

(59 ответов, оставленных в Вопросы по разработке модулей и API системы)

Ну в данном случае можно обойтись без файла API. Он Вам незачем. Вы ведь просто ORM объект будете сохранять А так всё правильно.

Вам ответят в поддержке. Проблема не стандартная. Просто ожидайте.