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

Yesvik

Ветеран сообщества
  
  • Posts

    1,939
  • Joined

  • Last visited

Everything posted by Yesvik

  1. Options +FollowSymlinks # Prevent Directoy listing Options -Indexes # Prevent Direct Access to files <FilesMatch "\.tpl"> Order deny,allow Deny from all </FilesMatch> # SEO URL Settings RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\?*$ index.php?_route_=$1 [L,QSA] RewriteCond %{REQUEST_METHOD} ^GET$ RewriteCond %{QUERY_STRING} ^$ [OR] RewriteCond %{QUERY_STRING} ^route=common/home$ [NC] RewriteRule ^index\.php$ /? [R=301,L] AddDefaultCharset UTF-8
  2. Очень часто мелькают темы в которых упоминается про категории которые создают большую нагрузку, например в поиске или для drop-down меню. При этом всё что предлагают - отключать такие блоки при большом количестве категорий. Но на самом деле отключать не обязательно... Рекурсивный метод выборки данных самый распространённый, но не единственный. В случаях когда надо извлекать всё дерево категорий можно обойтись одним запросом не зависимо от количества уровней и количества элементов. Себе я делал так: В модель категорий добавил метод public function getAllCategories() { $category_data = $this->cache->get('category.all.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id')); if (!$category_data || !is_array($category_data)) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' AND c.sort_order <> '-1' ORDER BY c.sort_order, LCASE(cd.name)"); $category_data = array(); foreach ($query->rows as $row) { $category_data[$row['parent_id'] ][$row['category_id'] ] = $row; } $this->cache->set('category.all.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id'), $category_data); } return $category_data; } Метод возвращает массив всех узлов. Кадый узел это массив с ключом равным parent_id элементов массива. Все узлы и элементы в узлах отсортированы в соответствии с тем как задано в админке.Для построения многоуровневого списка надо обойти весь массив начиная от корня (узел 0) и при выводе каждой категории проверять наличие узла с ключом равным идентификатору категории. Если узел есть то выводим потомков, нету - выводим следующую категорию. Для drop-down меню я в контроллере модуля категорий добавил свойство protected $categories = array();и метод protected function getAllCategories($parent_id = 0, $current_path = '') { $output = ''; if (array_key_exists($parent_id, $this->categories)) { $results = $this->categories[$parent_id]; $output .= '<ul>'; foreach ($results as $result) { if (!$current_path) { $new_path = $result['category_id']; } else { $new_path = $current_path . '_' . $result['category_id']; } $output .= '<li>'; $children = ''; if (array_key_exists($result['category_id'], $this->categories)) { $children = $this->getAllCategories($result['category_id'], $new_path); } $href = $this->model_tool_seo_url->rewrite(HTTP_SERVER . 'index.php?route=product/category&path=' . $new_path); // if ($this->category_id == $result['category_id']) { // будет помечена только активная категория if (in_array($result['category_id'], $this->path)) { // будут помечены активная категория и все категории до корня $output .= '<a class="active" href="' . $href . '">' . $result['name'] . '</a>'; } else { $output .= '<a href="' . $href . '">' . $result['name'] . '</a>'; } $output .= $children; $output .= '</li>'; } $output .= '</ul>'; } return $output; } В методе index такие изменения // $this->data['category'] = $this->getCategories(0); $this->categories = $this->model_catalog_category->getAllCategories(); $this->data['category'] = $this->getAllCategories(); Всё... теперь при холодном старте только 1 запрос к БД, а не сотня как мне доводилось видеть.А если не надо отмечать активные категории, например для superfish, можно смело кешировать результат работы метода getAllCategories и вообще забыть о нагрузке от категорий.
  3. Нет, только торговым площадкам поддерживающим YML
  4. Энергичность и ритм - попахивает собранием сектантов...Если человек имеет минимальные навыки то освоить OpenCart не составит труда. Если человеку надо разьяснять азы - какое отношение это имеет к OpenCart?
  5. Всё подробно описано тут http://partner.market.yandex.ru/legal/tt/ http://help.yandex.ru/webmaster/?id=1111247
  6. Директория в которой хранятся изображения известна, так что достаточно имён.
  7. Независимо от радиуса изгиба рук с этого сервера надо бежать.
  8. Символы понятные... русская С вместо английской C
  9. Проблема та-же, но не с шаблонами, а с файлами локализации которые ты правил.
  10. catalog/view/theme/default/stylesheet/stylesheet.css #category ul ul {margin-left:0}
  11. У тебя заявлен тип предложений "vendor.model". Для этого типа элемент vendor обязательный, а в указанных в ошибке предложениях элемент vendor пустой. Твоим товарам больше подходит упрощённый тип, там vendor не обязательный элемент. Ещё тебе обязательно надо прописать элемент <adult>true</adult>
  12. Эта фраза никаких действий не требует.
  13. Скорее всего рефы. Но держать такой модуль в OpenCart это изврат...
  14. В шаблоне хидера находиш строку url = 'index.php?route=product/search';и меняеш вот так url = 'index.php?route=product/search?model=1';Если надо искать и по модели и по описанию - то вот так url = 'index.php?route=product/search?model=1&description=1';
  15. Каждый раз, когда вижу сообщения о подобных ошибках, вспоминаю незаслуженно проигнорированную сообществом тему https://opencartforum.com/topic/2707-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC-%D0%BD%D0%B0-%D0%B7%D0%B0%D0%BC%D0%B5%D1%82%D0%BA%D1%83-%D1%83%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-%D1%82/
  16. Когда создаёш поддомен надо указать в какую директорию должен смотреть этот поддомен. Так вот тут надо указать ту-же директорию в которой установлен основной магазин.Правда бывают хостинги которые не спрашивают директорию для поддомена, а самостоятельно создают директорию и направляют поддомен в неё... тут без ТП не обойтись.
  17. Файлы темы тут не при чем.В ошибке всё конкретно написано... в 42-й строке файла system/library/currency.php попытка изменить заголовок не удалась так как заголовок уже отправлен первой строкой файла catalog/language/russian/module/adsense.php С большой долей вероятности можно утверждать что catalog/language/russian/module/adsense.php редактировался и был сохранён в UTF-8 с BOM. В php файлах всё что находится за пределами тегов <?php ?> отправляется в браузер. Так как BOM это трёх-байтовый (0xEF, 0xBB, 0xBF) подарок от Майкрософта который добавляется в начало файла то эти 3 байта оказываются перед <?php и отправляются в браузер инициируя отправку заголовков. В 42-й строке файла system/library/currency.php при установке куки валюты выясняется что поздно пить Боржоми... заголовки уже отправлены.
  18. Идентификатор категории обязательный элемент товарного предложения передаваемого в Яндекс.Маркет Карта пополнения баланса iTunes Gift Card номиналом 150$ не принадлежит ни одной категории.
  19. Проблема в файле catalog/language/russian/common/ footer.php Вероятнее всего файл редактировали и сохранили в UTF-8 с BOM
  20. Я раскидывал языки по директориям, но потом остановился на варианте с поддоменами.
  21. Ага... получается я тебя не так понял... Я решил что ты дал ссылку на свой сайт и тебя не устраивает как строятся ссылки.
  22. catalog/language/russian/module/ тут лежат файлы русского языка для всех модулей. Конкретно "Ссылки" смотри в файле blinks.php
  23. Это не в файле, это в настройках надо указать какой модуль с какой стороны и в каком порядке выводится.
  24. Построил у себя поддомен apple и подобного не наблюдаю. На http://www.opencart.su/ все ссылки внутренние, и на поддномене http://apple.opencart.su/ так же все ссылки внутренние. Я теряюсь в догадках что и как ты сделал.
×
×
  • 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.