1,726

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

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

1,727

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

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

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

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

Да.

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

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

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

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

1,729

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

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

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

1,730

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

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

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

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

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

1,732

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

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

1,733

(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,734

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

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

1,735

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

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

1,736

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

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

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


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

1,737

(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,739

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

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

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

1,741

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

{$preview=strip_tags($item->getPreview())}
{$preview|truncate:"50"}

Как добавить изображения для подкатегорий?

Всё есть здесь http://forum.readyscript.ru/topic/177/


как описание категорий убрать в нижний уровень перед подвалом?

Какая у Вас тема оформления?

P.S. Руководство по темам оформления:
http://readyscript.ru/text-blog/Kak-soz … adyScript/

1,743

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

Илья пишет:

Можно же использовать функцию function beforeWrite($flag)
и подставить туда запрос на запись в новую бд?
И нужно создать еще один api?Тогда получается нужно создать еще папку orm и туда файл mydiscount.inc.php?

Или можно поступить таким образом?но опять таки нужно папку orm и туда файл mydiscount.inc.php
И в переменных я наверное ошибся?

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

Вы молодец! Идёте в правильном направлении. Я просто говорил про то, что индекс Вам там такой не нужен. Т.к. можно просто использовать параметр у самого поля order_id при объявлении полей ORM объекта

  'index' => true,

1,744

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

Илья пишет:

Все создал, а теперь мне нужно вот это?
   

$this->addIndex(array('site_id', 'order_num'),self::INDEX_UNIQUE);

И что это? Куда вы индекс добавляете?

1,745

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

Купон грузится из корзины заказа где есть все orderitems. Т.е. сразу доступны все элементы. В Вашем случае, нужно получить формулу несколько по другому. У вас ведь не просмотр одного заказа.

1,746

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

Всё очень просто. Вы фильтруете по типу товар, а не по типу купон. У Вас идентификаторы купона и товара разные. Так и должно быть. JOIN по этому и не сходится.
Вам наверное надо создать ещё одну промежуточную таблицу с полями order_id и discount_id. И при сохранении заказа писать в неё связь для всего заказа. Тогда можно через 2 JOIN объеденить то что Вам нужно.

1,747

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

В order_items у Вас есть entity_id, а в discount поле id.

1,748

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

У вас таблица order_discount кикие имеет общие поля? Какие вообще поля  Вас есть в обоих таблицах?

1,749

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

Всё дело в оштбки блока. Она будет исправлена в ближайшем обновлении. Если не хотите ждать, то откройте файл /modules/photo/controller/block/photolist.inc.php и строку:

$link_id = isset($route->$param) ? $route->$param : 0;

Меняете на:

$link_id = isset($route->$param) ? $route->$param : $param;

1,750

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

Спасибо. Разберёмся.