Jump to content

Engineer

Пользователи
  • Content Count

    69
  • Joined

  • Last visited

 Content Type 

Profiles

Forums

Downloads

Статьи

История версий

Store

Blogs

Downloads Plus Support

module__dplus_manager

Everything posted by Engineer

  1. При указании разметки в ответе новый форум, похоже, чихал с высокой колокольни на нее Переводы строки, блок кода точно в упор не видит. А на выходных это еще работало.
  2. Новый форум - это нечто. Полностью сожрало разметку. Попробую повторить. Правильно поняли, что "что-то не так" $json['total'] - это не число товаров в корзине, а уже отформатированная строка ответа " Икс товаров на Игрек тугриков". Число товаров в корзине - это $this->cart->countProducts(), код который вам нужен должен выглядеть где-то так Например: if($this->cart->countProducts() == 0) $json['total'] = ... if($this->cart->countProducts() == 1) $json['total'] = ... Обратите внимание, сравнение в php не = (как у вас в коде - это присвоить значение), а == $data['text_items'] - это, тащем-та, тот самый шаблон, вида "%s товаров - %s денег". Он вообще не для правки в коде :) На вашем месте я бы вообще определил в языковом файле language/(язык)/checkout/cart.php несколько текстов для разных вариантов вида: $_['text_items1'] = "%s товаров - %s денежных единиц. Немного подкреплюсь" и использовал бы их.if($this->cart->countProducts() == 1) $json['total'] = sprintf($this->language->get('text_items1'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total)); Что делает код: если число товаров в корзине равно единице, то в заполняет места в шаблоне (первый аргумент функции sprintf, до первой запятой) для подстановки ( %s ) параметрами. Первый - от первой до второй запятой в функции sprintf (второй аргумент) считает число товаров и купонов, второй - после второй запятой (третий аргумент), сумма. Если не нужен вывод числа товаров, суммы - правите шаблоны и убираете из sprintf ненужные параметры.
  3. Правильно поняли, что "что-то не так" $json['total'] - это не число товаров в корзине, а уже отформатированная строка ответа " Икс товаров на Игрек тугриков". Число товаров в корзине - это $this->cart->countProducts(), код который вам нужен должен выглядеть где-то так. if($this->cart->countProducts() == 0) $json['total'] = ... if($this->cart->countProducts() == 1) $json['total'] = ... Обратите внимание, сравнение в php не = (как у вас в коде - это присвоить значение), а == $data['text_items'] - это, тащем-та, тот самый шаблон, вида "%s товаров - %s денег". Он вообще не для правки в коде :) На вашем месте я бы вообще определил в языковом файле language/(язык)/checkout/cart.php несколько текстов для разных вариантов: $_['text_items1'] = "%s товаров - %s денежных единиц. Немного подкреплюсь" и использовал бы их. Например:if($this->cart->countProducts() == 1) $json['total'] = sprintf($this->language->get('text_items1'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total)); Что делает этот код: если число товаров в корзине равно единице, то в заполняет места в шаблоне (первый аргумент функции sprintf, до первой запятой) для подстановки ( %s ) параметрами. Первый - от первой до второй запятой в функции sprintf (второй аргумент) считает число товаров и купонов, второй - после второй запятой (третий аргумент), сумма. Если не нужен вывод числа товаров, суммы - правите шаблоны и убираете из sprintf ненужные параметры.
  4. Да, разумно и справедливо. Владелец может быть и не в курсе, как выполнена работа. Если нормальный человек - купит и извинится, потому что все понимает. А если не понимает или очень жадный - и на таких есть методы. Кстати, в рамках борьбы с варезом можно было бы ввести услугу аудита за символическую плату (сколько там той работы проверить дополнения). И владелец магазина может после этого спать спокойно, и можно даже какие-то плюшки за это предусмотреть.
  5. Спрос рождает предложение. Убейте спрос на варез, и тогда предложение ворованных у вас модулей даже задаром никому не будет интересно. Владельцам магазинов, в раскрутку которых вложено и времени, и средств, и которые пойманы за руку на использовании вареза, куда проще "сделать предложение, от которого они не смогут отказаться", чем анонимусу-нулевику. С них есть, что взять, на них проще надавить. Те же "письма счастья" провайдерам, в гугл с просьбой блокировать выдачу в поиске за нарушение цопирайта - это перебои в работе магазина даже до суда, это больно. И да, за урегулирование вопроса и мирное соглашение брать в разы больше цены модуля. Тогда и финансирование разных "комиссий" и "комитетов" по защите будет не с авторов, и не с добросовестных покупателей, а с воров/юзеров вареза. И это устроит всех, кроме последних :)
  6. На самом деле вопрос напрямую связан с ioncube и другими шифровальщиками/обфускаторами. ПО с открытым кодом не панацея, но сила его в том, что из толпы пользующихся рано или поздно десяток заметят подобные бекдоры, ошибки, и это будет поправлено. Поэтому, кстати, опенсорсные сервера теснят проприетарные - ошибки, критические уязвимости находятся и устраняются быстрее. Шифрование убивает это на корню и означает, что все это отдается на произвол одного человека, а значит подобные ситуацию могут раз за разом повторяться. И пока возникнут подозрения, пока подозрения перерастут в уверенность, пройдет достаточно времени, чтобы "обрадовать" часть владельцев магазинов с таким "подарком". Ну и да, куб - нарушение лицензии, под которой распространяется Opencart. Это радужная перспектива анальных кар, как для разработчиков кубированых модулей, так и владельцев магазинов (их конечный скрипт тоже производная от кода под GPL) Пусть ставят свечки за здоровье Даниэля, который пока не следует примеру "всемирно известных компаний" с их рейдами за чистоту лицензирования. Имхо, правильный ответ надо искать в другой плоскости: как "палить" магазины с ворованными модулям. Тогда и в модулях останется открытый код, что будет лучшей гарантией против подобных ситуаций, и разработчики модулей получат свое вознаграждение.
  7. Блин, парни, откуда такая любовь удалять гланды через задний проход? Чуть теории. Манипуляции с содержимым виджета корзины происходят с помощью функций add и remove контроллера catalog/controller/checkout/cart.php. Если "не сложилось", например попытались добавить товар без обязательной опции, в ответе будет json['redirect'] на страницу товара. Если все хорошо, в ответе json будет поле total, которое скрипт на странице подхватывает и вставляет как текст в виджет корзины. $json['total'] = .... это оно. По умолчанию, "из коробки" вывод формируется в виде "{количество} товаров - {сумма}", независимо от количества товаров и суммы, даже нулевого. Если хочется, чтобы в зависимости от количества выводились разные надписи, то вместо коробочного единого текста делаете if или switch по $this->cart->countProducts() (это функция подсчета числа товаров в корзине) и там уже по вариантам количества ( ноль, не ноль, другие цифры) делаете свой вывод. В итоге вместо дефолтного присваивания у вас будет конструкция вида: Если А $json['total'] = ... Если B $json['total'] = .... и т.д. Можно добавить в языковый файл корзины разных текстов и их использовать для таких случаев. Вышеизложенное для опенкарта из коробки. Если стоит тема и что-то правит по-своему, надо разбирать ее и править по тому же принципу
  8. Не должно быть критично. А вообще, для опорных цифр, ориентиров, сделайте копию магазина, соберите все товары в одну категорию и в файле catalog/model/catalog/product.php сделайте маленькую правку: 1. найдите функцию getProducts 2. и строчку в ней, где задаются лимиты на вывод закомментируйте ее и вместо нее пробуйте $sql .= " LIMIT 0,100" 200,300...1000, 5000, 10000 и т.п. Открывайте ту категорию, куда все собрали, и смотрите, как быстро выводит. Тк скзать, научным тыком определите, когда ваш магазин на вашем хостинге в ваших условиях начнет захлебываться.
  9. Скорее всего этим вы просто убьете магазин. В опенкарте есть одна особенность реализации получения списка товаров : после предварительного запроса для получения списка товаров подходящих по условиям(категория и т.д.) для каждого(!) товара из этого списка потом вызывается функция с отдельным sql-запросом к БД. Из-за этого стандартные 20-50 товаров на странице еще не так болезненно, но если в категории сотни товаров и вы захотите получить все сразу, то получите бешеную нагрузку на сервер сзади и тормоза на выходе спереди. Если товаров еще больше, то "стремительным домкратом" растут шансы на то, что вывода вообще не будет. Сервер просто убьет по таймауту php скрипт, пока тот дожидается ответа от БД. Если же вывод всех товаров так критичен, что просто жить без этого никак, надо в первую очередь переписывать модель( и возможно оптимизировать под вас). Все остальное - внешняя возможность выбора "все товары", использование ее по умолчанию, передача этого нового параметра внутрь для исполнения - только вершина айсберга.
  10. Скорее всего у блока вылетевшего в шапку в стиле position: absolute, а у его родителя-контейнера не выставлен position: relative. Вот его и позиционирует по координатам не внутри родителя, а на странице
  11. 1. Хотелось бы взглянуть на сайт (ссылку). 2. Какая тема/шаблон использованы. 3. Чем пользовались для стикеров (модуль, что-то свое)
  12. Вывод задается в шаблоне: catalog/view/theme/default/template/product/category.tpl Если тема не дефолтная, соответственно меняется путь. Там ищете $description - переменная в которой описание категории, будет выглядеть как-то так. Смысл фрагмента: если есть картинка для категории $thumb или описание $description - вывести их. Смотрите по разметке, куда его вам хочется перенести - переносите код туда, и вуаля!
  13. У меня знакомая из РФ, из Е-бурга влетела на Гепатит С. Пренеприятнейшая дрянь. Ну и по ходу лечения начала узнавать цены. Софосбувир(кажется) стоил чуть ли не на порядок дороже ( раз в 6-7) чем дженерик из Индии. Та же формула, то же действующее вещество, просто без раскрутки, рекламы, бренда, лейбла и т.п. Дженериком, ну нонейм, торгуют чуть ли не из под полы, всячески стопорят лицензирование, разрешения. Вот на этой накрутке в 6-7 раз и можно проводить семинары для врачей, приплачивать дилерские аптекам и прочее. Нужен только лох, который будет за все это платить. А тему принудительного лицензирования, как в Индии, когда изобретателю платят фиксированный процент от сбыта и делают у себя, почему и выходит в разы дешевле, прикрыли, что в России, что в Украине - "снижает инвестиционную привлекательность". Такие дела.
  14. Да. Я правда не на сайтах обращал внимание на это, а в самих аптеках. В рецепте одно, но всегда могут предложить такое же лекарство, с таким же действующим веществом, но от другого производителя под другим названием и с другой ценой. В общем, кто-то (и я полагаю этот кто-то - заказчик) должен предоставить список аналогов, из которого можно сделать таблицу и следить за ее наполнением. Тогда и поиск можно делать умно и быстро.
  15. Как мне кажется, если нет формализации критериев и процедуры, как подбирать аналоги, сфинкс не поможет. А если она есть, то это решается добавлением пары полей/таблиц с продуманной индексацией, подпиливанием поиска и аж шуршит все.
  16. А какие еще опции используются для штор(товара)? Цвет, что-то с материалом, или размер высота х ширина единственная? И размеры полотен исходных материала общие, или для разных материалов могут отличаться? Ну например, в одном случае 1,5м, в другом два, и от этого будет меняться формула расчета цены?
  17. Скачать/Купить дополнение Improved cache Для работы модуля требуется vqmod, копируем файл в каталог xml и машем крылышками. Стандартное время жизни кэша данных в опенкарт - 1 час. Данное дополнение немного хакает ядро, позволяя программистам и разработчикам установить большее время жизни для данных. Как использовать после установки? Например, в файле моделей для производителей ищем строчку $this->cache->set('manufacturer.' . (int)$this->config->get('config_store_id'), $manufacturer_data); и правим на $this->cache->set('manufacturer.' . (int)$this->config->get('config_store_id'), $manufacturer_data, 24); передавая дополнительный параметр 24, теперь данные будут жить 24 часа. Для других моделей, использующих кэш, аналогично. Изменение обратно совместимо, для вызовов, которые не используют данную возможность, не передают новый параметр, в ядре подставляется значение по умолчанию "1", и данные будут жить стандартный час (3600 секунд) Версии 1.5.5* 1.5.6.* Добавил Engineer Добавлено 31.03.2014 Категория Кэширование, сжатие, ускорение
  18. Если имеете вечером время, стукните в скайп ( в профиле) - обсудим. Но, конечно, хотелось бы четче сформулировать ТЗ, поля "и т.д." в таблице не создашь :oops:
×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.