Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

auditor

Users
  
  • Posts

    186
  • Joined

  • Last visited

Everything posted by auditor

  1. тогда самое время начать собирать свою базу fingerprint и банить по современным методам.
  2. Не нашел в своем архиве дистрибутива 1.5.4, нашел предыдущую версию, глянул в модель, там действительно, выцепляет только данные с таблицы oc_category: public function getCategory($category_id) { $query = $this->db->query("SELECT DISTINCT *, (SELECT keyword FROM " . DB_PREFIX . "url_alias WHERE query = 'category_id=" . (int)$category_id . "') AS keyword FROM " . DB_PREFIX . "category WHERE category_id = '" . (int)$category_id . "'"); return $query->row; } решением же для вашего вопроса, могу предложить добавить метод выборки данных раздела (файл: admin\model\catalog\category.php) перед функцией, что описана ранее: public function getFullCategory($category_id) { $query = $this->db->query("SELECT DISTINCT *, (SELECT GROUP_CONCAT(cd1.name ORDER BY level SEPARATOR ' > ') FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "category_description cd1 ON (cp.path_id = cd1.category_id AND cp.category_id != cp.path_id) WHERE cp.category_id = c.category_id AND cd1.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY cp.category_id) AS path, (SELECT keyword FROM " . DB_PREFIX . "url_alias WHERE query = 'category_id=" . (int)$category_id . "') AS keyword FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd2 ON (c.category_id = cd2.category_id) WHERE c.category_id = '" . (int)$category_id . "' AND cd2.language_id = '" . (int)$this->config->get('config_language_id') . "'"); return $query->row; } ну и в самом файле, там где ошибка в 74 строке, заменить: $category = $this->model_catalog_category->getCategory($category['category_id']); на: $category = $this->model_catalog_category->getFullCategory($category['category_id']); ~~~ по опциям же, надо смотреть функцию, в том же файле, где ошибки, под названием optionValues, а действовать - по аналогии, в общем - направление дал, вместо вас делать не буду... за лайк решения, заранее спасибо.
  3. В шапке сайта дублируется вывод корзины в 2-х местах, соотв. дублируются и id="cart" и зависимые блоки, наведите порядок с версткой, потом задайте вопрос по новой.
  4. перепроверил, все верно, посмотрите и вы, правильно ли заменили учаток выше, на: if ($result['image'] && file_exists(DIR_IMAGE . $result['image'])) { $my_dop_image = $result['image']; } else { $my_dop_image = 'no_image.png'; } $data['images'][] = array( 'popup' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_height')), 'thumb' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_height')) ); если ошибка не пропадает, то добавьте, пожалуйста, под спойлер, код модифицированного файла, что бы увидеть строку 317 с ошибкой или отпишите в ЛС, с указанием данных для подключения по TeamViewer
  5. для товара находим 2-ва места в которых есть следующий код: if ($product_info['image']) { и заменяем на (это для главного изображения): if ($product_info['image'] && file_exists(DIR_IMAGE . $product_info['image'])) { а для доп. изображений, находим участок: $data['images'][] = array( 'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_height')), 'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_height')) ); и заменяем на: if ($result['image'] && file_exists(DIR_IMAGE . $result['image'])) { $my_dop_image = $result['image']; } else { $my_dop_image = 'no_image.png'; } $data['images'][] = array( 'popup' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_height')), 'thumb' => $this->model_tool_image->resize($my_dop_image, $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_additional_height')) ); p.s. для очистки "битых ссылок" (удаление из базы путей, файлов которых нет на сервере), то надо дополнительно в админке прописать блок, с перебором поля рисунок таблицы товара, объединив массив с таблицей доп. рисунков, и добавить аналогичную проверку на file_exists и в случае не нахождения файла по пути - DELETE запись из базы по ключу product_id
  6. в контроллере, который вызывает товар для отображения (например контроллер модуля последние [latest]): находим: if ($result['image']) { и заменяем на: if ($result['image'] && file_exists(DIR_IMAGE . $result['image'])) { тогда получится не просто проверка на наличие ссылки из базы но и наличие файла по указанному пути из базы, только в этом случае выводить будет изображение, в противном случае, под данное условие не попадает и соотв. будет выведен } else { - тоесть вывод изображения no_image
  7. на скрине отображено "related" - тоесть связанные товары, которые выводятся во вкладке товара под названием "рекомендуемые", контроллера как такового нет, весь код интегрирован в коде товара. Если речь идёт о "автоподборе", то логика подтягивания товаров через метод autocomplete происходит.
  8. доброго времени, от 350 $ возьмусь командой, более точная сумма зависит от ТЗ, версии движка, шаблона.
  9. что бы получить массив с отзывами, следуем дальнейшему алгоритму: шаг 0: подключаем модель отзыва в нужном контроллере (файле) $this->load->model('catalog/review'); шаг 1: добавляем параметры выбора отзывов (можно проставить $limit = 0, если надо выводить все, так же можно переменную с config админки подключить) $limit_reviews = 33; шаг 2: получаемс сам массив: $this->data['reviews'] = array(); $reviews = $this->model_catalog_review->getAllReviews($limit_reviews); foreach ($reviews as $review) { $this->data['reviews'][] = array( 'author' => $review['author'], 'text' => $review['text'], 'rating' => (int)$review['rating'], 'date_added' => date($this->language->get('date_format_short'), strtotime($review['date_added'])) ); } шаг 3: добавь в файл модели (catalog\model\catalog\review.php) новый метод, перед public function getTotalReviewsByProductId($product_id) { public function getAllReviews($limit = 0) { $query = $this->db->query("SELECT review_id, author, rating, text, date_added FROM " . DB_PREFIX . "review WHERE status = '1' ORDER BY date_added DESC LIMIT " . (int)$limit); return $query->rows; } шаг 4: в нужном .TPL файле у тебя будет переменная $reviews содержащая все отзывы магазина, отсортированные по последней дате добавления и в органиченном кол-ве $limit P.S. Вместо спасибо, нажми просто + в репутацию, если помог или понравилось решение. Сорян, с первого раза не понял ТС, набросал универсальное решение для вывода отзывов в любом месте магазина.
  10. Квалификация есть: более 8 лет узкоспециализированной работы с опенкарт разных версий, а вот по поводу времени, то вопрос к Вам: есть ли ТЗ (технические задачи) касательно каждого проекта в отдельности и по общим просьбам, сотрудничаю командой, есть и семантисты, и програмеры, и копирайтеры, с верстальщиком сложно, постоянного пока в штате нет, обращаемся на фриланс.
  11. за 50 у.ё. до 80 как минимум поднять смогу, время - около 2-х часов.
  12. в журнале ошибок есть какая то запись ?
  13. Вітаю, прошу тут ознайомитись з деякими рішеннями, щоб не дублювати готовий код:
  14. Во первых, создать отдельно группу от админов, например "редакторы", во вторых - заказать дополнительно разработку, под свою версию ОС, которая будет выглядеть примерно вот так: где выделенными пунктами обозначены категории, которые разрешены для редактирования, при попытке редактировать неразрешенный раздел - переброс на общий список с товарами.
  15. мой копирайтер подправил: 3 раза повтор ключа в тексте (максималка, больше - переспамленность), нет перелинковок на каталог по СЧ\ВЧ, а так, то вполне читабельно, лишь бы антиплагиат уникальность принял, остальное - норм., фото перед заливкой советую обрабатывать через XnConvert
  16. 1. Смотря за какое кол-во знаков оплата 2. Будет ли вхождение при рерайте с ключевиками (тоесть проработка семантики) 3. Фото для статьи или для самого товара ... огласите цену, по которой Вам предложили ? у моих копирайтеров (не рерайт) СЕО статьи от 200 р. за 1500 збп, с вхождение по ключам, без фото., если заказ на более чем 15 статей, то цена 190 р. за 1500 збп.
  17. Согласен на постоянку, при условии написания задач, оплата - по факту выполненных задач, при постоянном сотрудничестве - скидка.
  18. KeePass, не, не слышал... + автогенератор паролей, юзернейм моеш один иметь, но прописывать под отдельный портал с регой - отдельный пасс
  19. я эти письма уже более 3-х месяцев тому получаю, кстати, пароль оригинальный высылают, НО... зарегистрированный на определённом ресурсе, если есть практика использования при каждой реге новый уникальный пасс - то можно отследить, откуда слито, а вот если ты пользуешся бабской методикой паролирования (один логин\пасс на все реги) то тут таки сложно будет держать самообладание, а вдруг не фейк ? у меня так у знакомой, когда меня вызвали, угнали не только все средства с електронных кошелей, но и рассылку по мылу, скайпу и вайберу... и все из за чего ? правильно... хакнули мыло и с этими же авторизационными данными - пошли по списку, где оказалось - универсальным логином с паролем. так что будьте бдительны, регистрируясь на "трастовых" сайтах, хотя бы элементарно "мастер-пароль" не используйте.
  20. помню несколько лет тому, был взломан опенкартфорум, тогда перепрописали файл response и продвигали свой портал, но что то особой шумихи тогда небыло, переписали сборку, попросили перезаписать файл и всего то, вот и тут, автор заверил что в новых версиях фикс экранирован, а кто варезом пользуется - пусть имеет дыры - это их бремя, а порядочные пользователи - автоматом обновят патч, а владельцу сайта скажите, что бы покупал модули, а если есть чего под кубом, пусть переплатит грамотному кодеру, тот методом исключения проверит, через какой файл шелл вливается и пожертвует модулем или - подберёт аналог, толку из мухи слона тут лепить ?!
  21. Хороший анализ на XSS, а если нет VPS и большинство на обычном тарифе ? Есть ли настройки у мода, не автообновлять данные (не делать запрос на сервер) ? Единственное, что мог бы посоветовать автору - использовать CSRF токен, при валидации автообновления или формы, что бы внешним обращением не обойти валидатор.
×
×
  • Create New...

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.