Помощь Поддержка или помощь c Prestashop - 2 часть

Статус
В этой теме нельзя размещать новые ответы.

vector

Постоялец
Регистрация
14 Янв 2007
Сообщения
679
Реакции
121
600 страниц в первой теме - многовато. Согласны?!?
Создана 2 часть самой актуальной темы в нашем разделе - ИМ / Prestashop
------------------------------------------------------------
Как автор темы, позволю задать свои вопросы, для знатоков Prestashop, свободных Фрилансеров.

Имеется интернет-магазин, на Prestashop 1.6.х.х. Магазин радиодеталей.
Необходима доработка нескольких блоков, модулей сайта

Мне(менеджер ИМ), в личном кабинете поступают запросы, после чего, Я вношу их в своем личном кабинете в виде таблички: название компании, и номер компонента с количеством.
Каждый поставщик также имеет свой личный кабинет, где он видит мои запросы только парт номера и кол-во, там он проставляет свои цены, которые вижу только я. Поставщики должны видеть только свои цены.

Все должно выгружаться в виде таблицы .csv по запросу.
Так же должна быть опция рассылки на скайп (и емейл) поставщика новых запросов компонентов с приглашением проставить цены в своем кабинете.
Нужно добавить колонки и функцию "заказ" и "отгрузка".
После того как я отдаю заказ заказчику, он заходит в кабинет и подтверждает заказ (нажимает на кнопку заказано отправлено) и проставляет там номер отслеживания данного заказа. Так я буду знать кому отдал заказ и когда он его отправил.

Имеется дамп категорий и товаров в формате .mysql (от cms drupal) - нужно переконвертировать в базу Prestashop.
--------------------------------------------
Какие модули, в т.ч. платные мне подойдут для реализации данного проекта?
Готов сотрудничать со знатоками, также за вознаграждение. Пишите в ЛК.
 
Прежде чем просить помощь или наоборот пытаться самостоятельно заскурочить ядро-модули, определитесь, всё-таки ты - программист или юзер

советую мини-книгу:
почитал книгу. неплохая . Но мне показалось по тексту первых глав что теперь программировать могут все . как то сам всплыл в сознание слоган "По колена в коде" ).
может там дальше что интересней по теме. . .
Хотя для юных умов это то что нужно , не надо столько экономистов и юристов с высшим образованием в Украине.
Но это только мое субъективное мнение и Offtop )
 
День добрый, а есть ли какое-нибудь решение или модуль, который позволяет товары, которые включены, но не доступны для покупки ставить в конец списка на странице категории вне зависимости от сортировки
Для просмотра ссылки Войди или Зарегистрируйся
 
День добрый! Есть возможность в престе на миниатюры категорий генерировать картинки-заглушки с надписью категории, если картинка не установлена? Вместо существующего "Нет фото".
 
Всем привет ребята:). помогите сменить иконку от шаблона "панда" может кто сталкивался? на моб: телефоне тоже эта иконка
 

Вложения

  • 2017-09-07_17-02-47.png
    2017-09-07_17-02-47.png
    15,9 KB · Просмотры: 11
  • 2017-09-07_17-09-00.png
    2017-09-07_17-09-00.png
    494,9 KB · Просмотры: 10
Всем привет ребята:). помогите сменить иконку от шаблона "панда" может кто сталкивался? на моб: телефоне тоже эта иконка
это картинки для и-ось, меняются в эдиторе темы
 
что именно не получается?
В Характеристиках товара внёс характеристику с названием "(filter) Мощность, кВт".
Задумка такая: заполнить характеристику в каждом товаре, но на странице товара её не показывать. Она будет выводиться только в Фильтре подбора в Категории.

Редактирую /classes/Product.php
В условии выборки WHERE добавляю AND fl.name NOT REGEXP ".*(filter).*", чтобы исключить все х-ки, содержащие (filter). Но она всё-равно выводится у товара. А если этот же запрос делаю напрямую в базе MySQL, то всё ок...

Не могу разобраться что я делаю не так?

PHP:
    public static function getFrontFeaturesStatic($id_lang, $id_product)
    {
        if (!Feature::isFeatureActive()) {
            return array();
        }
        if (!array_key_exists($id_product.'-'.$id_lang, self::$_frontFeaturesCache)) {
            self::$_frontFeaturesCache[$id_product.'-'.$id_lang] = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
                SELECT name, value, pf.id_feature
                FROM '._DB_PREFIX_.'feature_product pf
                LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
                LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.')
                LEFT JOIN '._DB_PREFIX_.'feature f ON (f.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
                '.Shop::addSqlAssociation('feature', 'f').'
                WHERE pf.id_product = '.(int)$id_product.' AND fl.name NOT REGEXP ".*(filter).*"
                ORDER BY f.position ASC'
            );
        }
        return self::$_frontFeaturesCache[$id_product.'-'.$id_lang];
    }
<-------------- добавлено через 11879 сек. -------------->
зачем лезть в ядро сайта, если такие проверки на уровне вывода в файле шаблона вполне эффективно решаются?

в данном случае так можно по примеру решить задачу:

Код:
{foreach from=$features item=feature}
{if !(isset($feature.name)&&($feature.name=='(filter) Мощность, кВт'))}
<tr class="{cycle values="odd,even"}">
{if isset($feature.value)}
<td>{$feature.name|escape:'html':'UTF-8'}</td>
<td>{$feature.value|escape:'html':'UTF-8'}</td>
{/if}
</tr>                  
{/if}                  
{/foreach}
На данном этапе я именно так и сделал. Но в примере я привёл 1 характеристику, а на самом деле их кол-во измеряется несколькими десятками.
Менеджер может добавить ещё несколько и забудет предупредить программиста...
Хотелось обойтись "малой кровью" и отфильтровать по маске на этапе выборки из базы и всё положить в /override/.
 
После очередного обновления возникла ошибка, на панели управления пульт перестал показывать реальные значения, живет своей жизнью, то меньше показывает значения, то больше.
Как можно восстановить нормальную работу пульта?
 

Вложения

  • screen 2017-09-09 в 16.47.33.jpg
    screen 2017-09-09 в 16.47.33.jpg
    55,5 KB · Просмотры: 13
Помогите! Уже который день бьюсь и безрезультатно. Ищу функцию в *.php , которая формирует массив для дальнейшего выводы в шаблоне


что именно не получается?

в Престе не идеальная, но вполне логичная для понимания модель используется:
Для просмотра ссылки Войди или Зарегистрируйся




в Престе 1.6 выборка из базы данных находится в соответствующем классе:

/classes/Product.php

public function getFrontFeatures($id_lang)
public static function getFrontFeaturesStatic($id_lang, $id_product)

и т.д.




формирование массива - в контроллере

/controllers/front/ProductController.php


public function initContent()
...
'features' => $this->product->getFrontFeatures($this->context->language->id),
...



соответственно можно или в функции править или прямо в контроллеле
<-------------- добавлено через 23632 сек. -------------->
В Характеристиках товара внёс характеристику с названием "(filter) Мощность, кВт".
Задумка такая: заполнить характеристику в каждом товаре, но на странице товара её не показывать. Она будет выводиться только в Фильтре подбора в Категории.

Редактирую /classes/Product.php
В условии выборки WHERE добавляю AND fl.name NOT REGEXP ".*(filter).*", чтобы исключить все х-ки, содержащие (filter). Но она всё-равно выводится у товара. А если этот же запрос делаю напрямую в базе MySQL, то всё ок...

Не могу разобраться что я делаю не так?

PHP:
    public static function getFrontFeaturesStatic($id_lang, $id_product)
    {
        if (!Feature::isFeatureActive()) {
            return array();
        }
        if (!array_key_exists($id_product.'-'.$id_lang, self::$_frontFeaturesCache)) {
            self::$_frontFeaturesCache[$id_product.'-'.$id_lang] = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
                SELECT name, value, pf.id_feature
                FROM '._DB_PREFIX_.'feature_product pf
                LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
                LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.')
                LEFT JOIN '._DB_PREFIX_.'feature f ON (f.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
                '.Shop::addSqlAssociation('feature', 'f').'
                WHERE pf.id_product = '.(int)$id_product.' AND fl.name NOT REGEXP ".*(filter).*"
                ORDER BY f.position ASC'
            );
        }
        return self::$_frontFeaturesCache[$id_product.'-'.$id_lang];
    }


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

в данном случае так можно по примеру решить задачу:

Код:
{foreach from=$features item=feature}
{if !(isset($feature.name)&&($feature.name=='(filter) Мощность, кВт'))}
<tr class="{cycle values="odd,even"}">
{if isset($feature.value)}
<td>{$feature.name|escape:'html':'UTF-8'}</td>
<td>{$feature.value|escape:'html':'UTF-8'}</td>
{/if}
</tr>                 
{/if}                 
{/foreach}
<-------------- добавлено через 35777 сек. -------------->
В Характеристиках товара внёс характеристику с названием "(filter) Мощность, кВт".
Задумка такая: заполнить характеристику в каждом товаре, но на странице товара её не показывать. Она будет выводиться только в Фильтре подбора в Категории.

Редактирую /classes/Product.php
В условии выборки WHERE добавляю AND fl.name NOT REGEXP ".*(filter).*", чтобы исключить все х-ки, содержащие (filter). Но она всё-равно выводится у товара. А если этот же запрос делаю напрямую в базе MySQL, то всё ок...

Не могу разобраться что я делаю не так?

PHP:
    public static function getFrontFeaturesStatic($id_lang, $id_product)
    {
        if (!Feature::isFeatureActive()) {
            return array();
        }
        if (!array_key_exists($id_product.'-'.$id_lang, self::$_frontFeaturesCache)) {
            self::$_frontFeaturesCache[$id_product.'-'.$id_lang] = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
                SELECT name, value, pf.id_feature
                FROM '._DB_PREFIX_.'feature_product pf
                LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
                LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.')
                LEFT JOIN '._DB_PREFIX_.'feature f ON (f.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
                '.Shop::addSqlAssociation('feature', 'f').'
                WHERE pf.id_product = '.(int)$id_product.' AND fl.name NOT REGEXP ".*(filter).*"
                ORDER BY f.position ASC'
            );
        }
        return self::$_frontFeaturesCache[$id_product.'-'.$id_lang];
    }
<-------------- добавлено через 11879 сек. -------------->

На данном этапе я именно так и сделал. Но в примере я привёл 1 характеристику, а на самом деле их кол-во измеряется несколькими десятками.
Менеджер может добавить ещё несколько и забудет предупредить программиста...
Хотелось обойтись "малой кровью" и отфильтровать по маске на этапе выборки из базы и всё положить в /override/.

первое правило работы с опенсорс CMS: если ты не разрабатываешь ядро - не трогай ядро, мало ли что в будущем туда напичкают или пофиксят разработчики

поэтому в 1.6 можно вполне функциями smarty Для просмотра ссылки Войди или Зарегистрируйся можно много чего полезного при выводе на экран сделать, в данном случае просто проверку на вхождение твоего "секретного" слова-ключа в название характеристики:

Код:
{foreach from=$features item=feature}
{if $feature.name|strpos:"(filter)" === false}
                    <tr class="{cycle values="odd,even"}">
                        {if isset($feature.value)}
                        <td>{$feature.name|escape:'html':'UTF-8'}</td>
                        <td>{$feature.value|escape:'html':'UTF-8'}</td>
                        {/if}
                    </tr>                 
{/if}                 
{/foreach}



можно и в запросе к базе выбирать то, что нужно, только регулярку лучше не использовать и нужно играться с кавычками
Код:
AND fl.name NOT LIKE '%(filter)%'
<-------------- добавлено через 26265 сек. -------------->
После очередного обновления возникла ошибка, на панели управления пульт перестал показывать реальные значения, живет своей жизнью, то меньше показывает значения, то больше.
Как можно восстановить нормальную работу пульта?

если разговор про
1.6.1.17
то там есть баги
Для просмотра ссылки Войди или Зарегистрируйся

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