Модуль YandexCMSModule Prestashop

Ваш модуль самое лучшее, что случалось моим прайсом) но в нем возникла ошибка, которую не могла победить. у меня огромное количество комбинаций, и у каждой из них есть свой id, так вот ваш модуль выводит ссылку на товар без этого ID, и атрибуты тоже выводятся без их ID, в итоге ссылка формируетя на дефолтную комбинацию товара и проверка у яндекса не проходит.
если конктретнее , то вот какой должна быть ссылка Для просмотра ссылки Войди или Зарегистрируйся , а вот такой она получается Для просмотра ссылки Войди или Зарегистрируйся

к сожаления, я не сильна в PHP, и исправить это сама не могу(
можете подсказать как это исправить?
1. Этот модуль не совсем мой, я его лишь поправил немного. Мы об одном и том же говорим? Вот ссылка куда я выкладывал модуль: Для просмотра ссылки Войди или Зарегистрируйся
2. Это странно, так как у меня есть товары с 200+ комбинациями, и вроде бы всё было нормально, проверка у яндекса проходила. Они ничего не изменили в своих правилах?
3. С модулем сейчас погляжу что можно сделать.

UPD:
поглядел в модуль, там при экспорте идёт перебор всех комбинаций, для каждой комбинации в элементе offer содаётся атрибут id следующим образом: если это просто товар, то ставится его ID, если же комбинация, то id="id_товара"+"с"+"id_комбинации"
В принципе, у яндексов только одно требование - чтобы у каждого offer'a был уникальный id, так что мне кажется, что модуль должен работать правильно.
 
Последнее редактирование:
1. Этот модуль не совсем мой, я его лишь поправил немного. Мы об одном и том же говорим? Вот ссылка куда я выкладывал модуль: Для просмотра ссылки Войди или Зарегистрируйся
2. Это странно, так как у меня есть товары с 200+ комбинациями, и вроде бы всё было нормально, проверка у яндекса проходила. Они ничего не изменили в своих правилах?
3. С модулем сейчас погляжу что можно сделать.
хотела обойти это через изменение правила формирования url , но в настройках id клмюинации и атрибута указан как обязательный параметр. можеь у вас другая версия просты стоит и там другие правила формирования url?
 
хотела обойти это через изменение правила формирования url , но в настройках id клмюинации и атрибута указан как обязательный параметр. можеь у вас другая версия просты стоит и там другие правила формирования url?

Я понял. У вас комбинации состоят из более чем одного атрибута, и тут начинается ж...а. Что в модуле, взятом мною за основу, что в яндексном, для генерации URL используется плоская структура из таблиц. Грубо говоря, URL собирается так: "id_атрибута"+"имя_группы_атрибута"+"имя_атрибута", а у вас для одного товара этих атрибутов аж 3 штуки. То есть, сам PS вполне с ними управляется, а вот как из этого сделать нормальный URL для я.маркета никто не придумал.

Действительно, у престы дурацкая система перезаписи URL'ов, насколько я понимаю, из-за неё комбинации не попадают в индекс, тут нужно спрашивать у более опытных товарищей - так ли это.
Насколько я понимаю, для гугла или яндекса всё, что в вашем URL идёт после символа # просто не учитывается при индексировании, да и страница остаётся как-бы одна и та же.

Я по этой причине сейчас перехожу на форк престы, там сразу можно делать без ID. Ну и конечно у моих товаров всё попроще - атрибутов поменьше.

UPD:
Сейчас посмотрел, у меня есть товар с комбинациями из двумх атрибутов, и с URL в сгенерённом yml всё в порядке:
Код:
<url>http://my.site/category/12345-product-name#/name_of_attribute_1/name_of_attribute_2</url>

UPD1: Припоминаю, что я делал один трюк, может он вам поможет в этой ситуации. Нужно при заведении самого атрибута там указывать его URL, а затем такой же при создании комбинации. Конечно, придётся наколбасить атрибутов больше, чем нужно, ну а что делать?
 
Последнее редактирование:
У меня есть модуль яндекс кассы от preastalab c отсроченным платежом через яндекс кассу, кнопка выводится в истории заказов с возможностью оплатить , хотела сделать так же с этим модулем , вывела в нужном хуке, но способы оплаты не появились в истории заказа. Что-нибудь подобное не пытались с этим модулем сделать, или может там есть уже подобная возможность, мне для PS 1.6?
 
У меня есть модуль яндекс кассы от preastalab c отсроченным платежом через яндекс кассу, кнопка выводится в истории заказов с возможностью оплатить , хотела сделать так же с этим модулем , вывела в нужном хуке, но способы оплаты не появились в истории заказа. Что-нибудь подобное не пытались с этим модулем сделать, или может там есть уже подобная возможность, мне для PS 1.6?
Нет, не пытался. Глядя на всё это великолепие с "родным" яндексным модулем и модулями от престалаб и от прочих, начинаю подумывать в сторону покупки дорогого коммерческого модуля со свеми я.сервисами...
Всё-таки, платежи есть платежи, тут вопрос - кто будет нести ответственность в случае появления косяков в процессе юзанья модуля.
И если честно, не совсем понятен смысл вашего вопроса. Если вы о модуле выгрузки каталога в yml, то он встраивается только в 2 хука: один - вкладка на странице редактирования товара, другой - действие при обновлении товара. Причем, как я уже неоднократно отмечал, модуль немного криво работает в 1.6, как раз на странице редактирования товара.
 
У меня есть и дорогой коммерческий, ещё кривее работает)
 
Код:
public function hookdisplayOrderDetail($params)
    {
    //    if ($params['order']->module != $this->name)
    //        return;
        if ($params['order']->hasBeenPaid())
            return;
        $this->smarty->assign(array(
            'p_types' => array_intersect_key($this->paymentType, array_flip(unserialize(Configuration::get('yamoney_type')))),
            'id_cart' => $params['order']->id_cart,
            'this_path' => $this->_path
        ));
        return $this->display(__FILE__, 'payment.tpl');
    }
вот хук выводящий модуль в истории заказа. Это из модуля от престалаб.

В модуле от яндекс примерно то же самое, но подлинее. Смысл, что клиент делает заказ , созванивается с менеджером о наличии товара, а потом только из личного кабинета может оплатить свой заказ.
 
вот хук выводящий модуль в истории заказа. Это из модуля от престалаб.

Так это же платёжный модуль, а вы меня спрашивали про модуль экспорта в yml. Или я чего-то не понимаю? Или вы хотите, чтобы я его допилил? В принципе, можно, но нескоро, времени на это нету катастрофически.
 
Писала сообщение, где-то пропало. Вы мой вопрос наверное с другим перепутали, меня это волнует. Если допилите хорошо.
Код:
public function hookdisplayOrderDetail($params) {               
        if ($params['order']->hasBeenPaid())
            return;
        $this->context->smarty->assign(array(
            'summ' => number_format($total_to_pay, 2, '.', ''),
            'this_path' => $this->_path,
            'this_path_ssl' => Tools::getHttpHost(true, true) . __PS_BASE_URI__ . 'modules/' . $this->name . '/',
        ));

        $display = '';
        if (Configuration::get('YA_P2P_ACTIVE')) {
            $vars_p2p = Configuration::getMultiple(array(
                        'YA_P2P_NUMBER',
                        'YA_P2P_ACTIVE',
                        'YA_P2P_MIN',
            ));

            $this->context->smarty->assign(array(
                'DATA_P2P' => $vars_p2p,
                'price' => number_format($total_to_pay, 2, '.', ''),
                'cart' => $this->context->cart,
            ));

            $display .= $this->display(__FILE__, 'payment.tpl');
        }

        if (Configuration::get('YA_BILLING_ACTIVE')) {
            $vars_billing = Configuration::getMultiple(array(
                        'YA_BILLING_ACTIVE',
                        'YA_BILLING_ID',
                        'YA_BILLING_PURPOSE',
                        'YA_BILLING_END_STATUS',
            ));

            $this->context->smarty->assign(array(
                'DATA_BILLING' => $vars_billing,
                'price' => number_format($total_to_pay, 2, '.', ''),
                'cart' => $this->context->cart,
            ));

            $display .= $this->display(__FILE__, 'payment_ya_billing.tpl');
        }

        if (Configuration::get('YA_ORG_ACTIVE')) {
            $vars_org = Configuration::getMultiple(array(
                        'YA_ORG_SHOPID',
                        'YA_ORG_SCID',
                        'YA_ORG_ACTIVE',
                        'YA_ORG_TYPE',
                        'YA_ORG_MIN',
            ));

            $this->context->smarty->assign(array(
                'DATA_ORG' => $vars_org,
                'yandex_logo' => Configuration::get('YA_ORG_PAYLOGO_ON'),
                'id_cart' => $params['cart']->id,
                'customer' => new Customer($params['cart']->id_customer),
                'address' => new Address($this->context->cart->id_address_delivery),
                'total_to_pay' => number_format($total_to_pay, 2, '.', ''),
                'this_path_ssl' => Tools::getShopDomainSsl(true, true)
                . __PS_BASE_URI__ . 'modules/' . $this->name . '/',
                'shop_name' => Configuration::get('PS_SHOP_NAME'),
            ));

            $payments = Configuration::getMultiple(array(
                        'YA_ORG_PAYMENT_YANDEX',
                        'YA_ORG_PAYMENT_CARD',
                        'YA_ORG_PAYMENT_MOBILE',
                        'YA_ORG_PAYMENT_WEBMONEY',
                        'YA_ORG_PAYMENT_TERMINAL',
                        'YA_ORG_PAYMENT_SBER',
                        'YA_ORG_PAYMENT_PB',
                        'YA_ORG_PAYMENT_MA',
                        'YA_ORG_PAYMENT_QW',
                        'YA_ORG_PAYMENT_CR',
                        'YA_ORG_PAYMENT_ALFA',
            ));

            if (Configuration::get('YA_ORG_INSIDE')) {
                if ($payments['YA_ORG_PAYMENT_YANDEX']) {
                    $this->smarty->assign(array(
                        'pt' => 'PC',
                        'buttontext' => $this->l('Payment from the purse in Yandex.Money.'),
                    ));

                    $display .= $this->display(__FILE__, 'kassa.tpl');
                }

                if ($payments['YA_ORG_PAYMENT_CARD']) {
                    $this->smarty->assign(array(
                        'pt' => 'AC',
                        'buttontext' => $this->l('Arbitrary payment with Bank card.'),
                    ));

                    $display .= $this->display(__FILE__, 'kassa.tpl');
                }

                if ($payments['YA_ORG_PAYMENT_MOBILE']) {
                    $this->smarty->assign(array(
                        'pt' => 'MC',
                        'buttontext' => $this->l('Payment with mobile phone account.'),
                    ));

                    $display .= $this->display(__FILE__, 'kassa.tpl');
                }

                if ($payments['YA_ORG_PAYMENT_WEBMONEY']) {
                    $this->smarty->assign(array(
                        'pt' => 'WM',
                        'buttontext' => $this->l('Payment of the purse in system WebMoney.'),
                    ));

                    $display .= $this->display(__FILE__, 'kassa.tpl');
                }

                if ($payments['YA_ORG_PAYMENT_TERMINAL']) {
                    $this->smarty->assign(array(
                        'pt' => 'GP',
                        'buttontext' => $this->l('Payment in cash through cash desks and terminals.'),
                    ));

                    $display .= $this->display(__FILE__, 'kassa.tpl');
                }

                if ($payments['YA_ORG_PAYMENT_SBER']) {
                    $this->smarty->assign(array(
                        'pt' => 'SB',
                        'buttontext' => $this->l('Payment via Sberbank: payment by SMS or Sberbank Online.'),
                    ));

                    $display .= $this->display(__FILE__, 'kassa.tpl');
                }
                if ($payments['YA_ORG_PAYMENT_ALFA']) {
                    $this->smarty->assign(array(
                        'pt' => 'AB',
                        'buttontext' => $this->l('Payment via Alfa-Click.'),
                    ));

                    $display .= $this->display(__FILE__, 'kassa.tpl');
                }
                if ($payments['YA_ORG_PAYMENT_PB']) {
                    $this->smarty->assign(array(
                        'pt' => 'PB',
                        'buttontext' => $this->l('Payments via Promsvyazbank.'),
                    ));

                    $display .= $this->display(__FILE__, 'kassa.tpl');
                }
                if ($payments['YA_ORG_PAYMENT_MA']) {
                    $this->smarty->assign(array(
                        'pt' => 'MA',
                        'buttontext' => $this->l('Payment via MasterPass.'),
                    ));
                    $display .= $this->display(__FILE__, 'kassa.tpl');
                }

                if ($payments['YA_ORG_PAYMENT_QW']) {
                    $this->smarty->assign(array(
                        'pt' => 'QW',
                        'buttontext' => $this->l('Payment via QIWI Wallet.'),
                    ));
                    $display .= $this->display(__FILE__, 'kassa.tpl');
                }
                if ($payments['YA_ORG_PAYMENT_CR']) {
                    $this->smarty->assign(array(
                        'pt' => 'CR',
                        'buttontext' => $this->l('Pay in Parts'),
                    ));
                    $display .= $this->display(__FILE__, 'kassa.tpl');
                }
            } else {
                $display .= $this->display(__FILE__, 'kassa_outside.tpl');
            }
        }

        return $display;
    }
Вот как в яндекс модуле сделала, может что не правильно, в админке всё нормально вывелось.
 
В принципе, вижу ошибку.
 
Назад
Сверху