Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

SooR

Пользователи
  • Публикаций

    1 511
  • Зарегистрирован

  • Посещение

Все публикации пользователя SooR

  1. SooR

    кто учился в ШАГе

    Ну не знаю, у нас в Одессе есть ШАГ и Сервер по таким учениям, так вот ШАГ очень хвалят, может и относительно, может и нет, но в последнее время его качество обучения возросло. Может имеет смысл не поступать туда в качестве студента (корочку на полке держать?), а лучше записаться на интересующие курсы при них же?
  2. Кидайте помадорами, но я таки за отечественный хост. Мой выбор уже долгое время ukraine . com . ua.
  3. SooR

    Нарисовал шаблон.

    А главным был выбран именно wood!?)
  4. SooR

    Нарисовал шаблон.

    Деревянный фон надоел.
  5. SooR

    [Разработка] Сниппеты IDE для OpenCart

    RGB, нет), к сожалению, тогда я сниппетами ещё не пользовался. А Фильтр уже давненько как готов, просто не анонсировал, а кто хотел - уже купил.
  6. Приветствую вас. Часто занимаясь разработкой под OpenCart (и не только) каждый разработчик пользуется большим количеством частоиспользуемого (повторного) кода, который многие просто копируют из открытых файлов проекта, или (если не поздняя ночь) пишут заново. Этот шаблонный код обычно короткий и является лишь "фразами общения" с ядром движка, его API. Поэтому, дабы сократить времязатраты на разработку, я ввёл новые фрагменты в сниппеты (snippets) своего IDE для работы с OpenCart. Я пользуюсь бесплатным текстовым редактором PSPad уже более 3х лет, сниппеты у него поддерживаются с достаточной гибкостью для того, чтобы писать именуемые динамические сниппеты с заданием переменных через контекстное меню. Надо сказать, что в бОльшей мере именно это меня и удерживает от замены редактора. Потому что, например, у CodeLobster сниппеты реализованы на XML, это очень удобно и изящно, но содавать большие фрагменты с пользовательскими переменными в любом месте кода - я не смог, так как пользовательская переменная не ограничена символами начала и конца переменной, что лишает её возможности писать слитно с другим текстом (например public function get@s()); Итак, вернёмся к сниппетам для OpenCart. Приведу пример нескольких фрагментов упрощающих жизнь: [post | Insert POST variable] $this->request->post['|'] ; Как видно из фрагмента, комбинация слова post и (в моем случае) сочетания клавиш Shift+Space выведут код $this->request->post['место_для_курсора'] на том месте, где её применили. Ещё пример: [select | Create MySQL select query] $this->db->query("SELECT * FROM " . DB_PREFIX . "|"); ; Комбинация bread Shift+Space вставит запрос выборки к базе данных; [bread | Create breadcrumbs item] $this->data['breadcrumbs'][] = array( 'text' => 'Page|', 'href' => $this->url->link(''), 'separator' => $this->language->get('text_separator') ); ; Элемент хлебных крошек; [text | Insert text = translate] $this->data['text_|'] = $this->language->get('text_'); ; Этот кусок наверняка многих раздражает, но с ним валидней ;) [model | Create model] <?php class Model|%model% extends Model { public function add%model%($data) { $this->db->query("INSERT INTO " . DB_PREFIX . "%database_table% SET "); $%database_table%_id = $this->db->getLastId(); return $%database_table%_id; } public function edit%model%($%database_table%_id, $data) { $this->db->query("UPDATE " . DB_PREFIX . "%database_table% SET WHERE %database_table%_id = '" . (int)$%database_table%_id . "'"); } public function delete%model%($%database_table%_id) { $this->db->query("DELETE FROM " . DB_PREFIX . "%database_table% WHERE %database_table%_id = '" . (int)$%database_table%_id . "'"); } public function get%model%($%database_table%_id) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "%database_table% WHERE %database_table%_id = '" . (int)$%database_table%_id . "'"); return $query->row; } public function get%model%s() { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "%database_table%"); return $query->rows; } public function getTotal%model%s() { $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "%database_table%"); return $query->row['total']; } } ?> ; Ну и с использовнием переменных. Тяжело назвать сниппетом, но почему бы и нет? Этакий мини-конструктор. По применению сниппета можно вписать название модели (%model%), которое автоматом присвоится к названиям методов, а так же имя таблицы (%database_table%), которая послужит данными для создания шаблонной модели. Кстати, переменные объявляются в начале файла сниппетов: ; ----------------------------------------------------------------------------- ; OpenCart ; ----------------------------------------------------------------------------- %model%=@E Название модели, %database_table%=@E Таблица БД, %controller%=@E Название (напр. CommonHome), %route%=@E Route (напр. common/home), .. и так далее. В принципе, список можно продолжать долго, но суть я указал, направление тоже, вам остается двигаться :) Буду рад выслушать новые идеи по ускорению разработки, фрагментах кода и т.д. Прикрепил файл PHP.DEF (для PSPad) где собрал пока все придуманные сниппеты. PHP_DEF.zip
  7. SooR

    Ура! Вышел опенкарт 1.5.5

    На счёт фильтра в 1.5.5: Работает он как обычные теги, без какой-либо логики. Есть значение - вывести всё по нему, если нет - пустая страница. Автокомлиты не понравились, если уж он привязывает фильтры к категориям - почему не сделать селектом. Конечно, легче сделать всё в одном по автокомплиту, не парясь со связми категорий и т.д. В общем быстрое наполнение не получится. Но а вообще, прогресс уже радует, думаю фильтр будет дописываться с каждой / каждой 2-й версией.
  8. Добавление к public function getProducts($data = array()) { Не оптимизировал, т.к. используется в магазине с малым кол-вом товаров. Но при желании можно улучшить. (SELECT sort_order FROM " . DB_PREFIX . "category WHERE category_id = (SELECT c.parent_id FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "product_to_category p2cc ON (c.category_id = p2cc.category_id) WHERE p2cc.product_id = p.product_id AND c.parent_id != '0' ORDER BY c.sort_order DESC) ) AS category и сортировка $sql .= " ORDER BY category, p.sort_order";
  9. hotgomer, к запросу товаров необходимо присоеденить таблицы category[, category_description] и сортировать товар по её c.sort_order[, cd.name], кроме этого, категории для сортировки нужно выбирать по parent_id от текущей.
  10. https://opencartforum.com/topic/2654-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d1%8c-%d1%84%d0%b8%d0%bb%d1%8c%d1%82%d1%80-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d0%be%d0%b2-%d0%b2-%d0%ba%d0%b0%d1%82%d0%b5%d0%b3%d0%be%d1%80%d0%b8%d0%b8-20/page__view__findpost__p__71495
  11. Без понятия о чем вы. Я под эту версию не выкладывал. Откуда качали? Может там и ответят...
  12. "Живая" админка будет 5 августа, о всех нюансах адаптации надо говорить, но в модуле будет предусмотрена функция импорта/экспорта, а так же перенос стандартных атрибутов.
  13. Да. Смотрите на страницу редактирования опции ниже. Значения просто переносим мышкой.
  14. Фильтров много не бывает :-D vqmod не переношу. Будет удобная интерактивная инструкция по установке на не чистый OpenCart. Вывод характеристик входит в модуль фильтра, ничего более заказывать не потребуется.
  15. Да, за границами "бегунков" надо попасть, чтобы они начали двигаться, учту.
  16. RGB, спасибо за отзыв. На счёт первого абзаца, так и сделаю, но в момент релиза. Второй - люди разные, цели и возможности тоже отличаются. Очень сильно. Некоторые, на начальных условиях готовы выложить приличную сумму только за натяжку шаблона и установку парочки модулей, другие пытаются уложиться в скромную сумму и получить максимум от разработчика. Это вполне нормально, скидываются - ну и пусть. Эти люди новички и средствами рисковать не хотят, в т.ч. техническим обеспечением.
  17. Не дорогой :) Пока допиливаю, можете оставлять свои пожелания и предложения здесь. P.S. модуль будет продаваться пока в другом месте, или через личные переговоры.
  18. Over9000, честно, я ниодного не видел. В модуле будет ф-ция импорта и экспорта, sql и csv. Соответственно, правильно отредактированный csv способен решить ваши проблемы :)
  19. Еще есть select :) а в опциях еще есть тип группированый, когда несколько значений становятся одним. Блоки с подсказками обычный div в третьей колонке с бэкграундом, на счет грибов - согласен на все сто. Или самое больное место двига, или в кайф его делать:)
  20. Добавилась лишь только таблица category_option_to_store и пару полей в таблицу category_option. Если в моем модуле отключить счетчик товаров, то даже количество товаров не станет помехой быстродействию. В модуле или будет возможность импортировать стандартные параметры - в таблицы фильтра, или просто переключатель "использовать опции OpenCart или модуля фильтра".
  21. SooR

    [Решено] как убрать нули в весе

    Тогда на public function format($value, $weight_class_id, $decimal_point = '.', $thousand_point = ',') { if (isset($this->weights[$weight_class_id])) { return $value . $this->weights[$weight_class_id]['unit']; } else { return $value; } } Если нули вообще нигде не нужны.
  22. Скрины настроек модуля дадут понять примерные возможности и гибкость:
  23. Она же и является кнопкой "Применить" :) просто несёт в себе ещё и количество найденных товаров. А кнопку назвать можно по-разному. В настройках фильтра есть возможность переключиться в режим "нажал - получил", т.е. без кнопки.
  24. Файл catalogcontrollercommonseo_url.php Заменить } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'"); if ($query->num_rows) { $url .= '/' . $query->row['keyword']; } } unset($data[$key]); } На } elseif ($key == 'path') { $categories = explode('_', $value); $url .= '/catalogue'; foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'"); if ($query->num_rows) { $url .= '/' . $query->row['keyword']; } } unset($data[$key]); }
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.