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

aakazakow

Новичок
  
  • Публикаций

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

  • Посещение

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

  1. Подскажите как в Блоге убрать точное время (часы, минуты) оставив при этом дату ?
  2. после всех переделок, получается максимум такой вид http://сайт.ru/faq/?topic=8 ,а хотелось бы чтобы отображалось http://сайт.ru/faq/kak-zakazat/html <?php class ControllerCommonSeoPro extends Controller { private $cache_data = null; public function __construct($registry) { parent::__construct($registry); $this->cache_data = $this->cache->get('seo_pro'); if (!$this->cache_data) { $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias"); $this->cache_data = array(); foreach ($query->rows as $row) { $this->cache_data['keywords'][$row['keyword']] = $row['query']; $this->cache_data['queries'][$row['query']] = $row['keyword']; } $this->cache->set('seo_pro', $this->cache_data); } } public function index() { // Add rewrite to url class if ($this->config->get('config_seo_url')) { $this->url->addRewrite($this); } else { return; } // Decode URL if (!isset($this->request->get['_route_'])) { $this->validate(); } else { $route = $this->request->get['_route_']; unset($this->request->get['_route_']); $parts = explode('/', trim(utf8_strtolower($route), '/')); /* BEGIN Actions */ if (preg_match('#^(actions/)(.*)#', $route, $matches)) { $parts = explode('/', trim(utf8_strtolower($matches[2]), '/')); if($parts[0] == '' AND count($parts) == 1) { $parts = explode('/', trim(utf8_strtolower($route), '/')); } } /* END Actions */ /* BEGIN News & Reviews */ if (preg_match('#^(news/)(.*)#', $route, $matches)) { $parts = explode('/', trim(utf8_strtolower($matches[2]), '/')); if($parts[0] == '' AND count($parts) == 1) { $parts = explode('/', trim(utf8_strtolower($route), '/')); } } /* END News & Reviews */ list($last_part) = explode('.', array_pop($parts)); array_push($parts, $last_part); $rows = array(); foreach ($parts as $keyword) { if (isset($this->cache_data['keywords'][$keyword])) { $rows[] = array('keyword' => $keyword, 'query' => $this->cache_data['keywords'][$keyword]); } } if (count($rows) == sizeof($parts)) { $queries = array(); foreach ($rows as $row) { $queries[utf8_strtolower($row['keyword'])] = $row['query']; } reset($parts); foreach ($parts as $part) { $url = explode('=', $queries[$part], 2); if ($url[0] == 'category_id') { if (!isset($this->request->get['path'])) { $this->request->get['path'] = $url[1]; } else { $this->request->get['path'] .= '_' . $url[1]; } } elseif (count($url) > 1) { $this->request->get[$url[0]] = $url[1]; } } /* BEGIN Actions */ } elseif ( (isset($keyword_in[0]) AND $keyword_in[0] == 'actions') OR (isset($parts[0]) AND $parts[0] == 'actions') ) { $this->request->get['route'] = 'information/actions'; /* END Actions */ /* BEGIN News & Reviews */ } elseif ( (isset($keyword_in[0]) AND $keyword_in[0] == 'news') OR (isset($parts[0]) AND $parts[0] == 'news') ) { $this->request->get['route'] = 'information/news'; /* END News & Reviews */ } else { $this->request->get['route'] = 'error/not_found'; } if (isset($this->request->get['product_id'])) { $this->request->get['route'] = 'product/product'; if (!isset($this->request->get['path'])) { $path = $this->getPathByProduct($this->request->get['product_id']); if ($path) $this->request->get['path'] = $path; } } elseif (isset($this->request->get['path'])) { $this->request->get['route'] = 'product/category'; } elseif (isset($this->request->get['manufacturer_id'])) { $this->request->get['route'] = 'product/manufacturer/product'; } elseif (isset($this->request->get['information_id'])) { $this->request->get['route'] = 'information/information'; /* BEGIN Actions */ } elseif (isset($this->request->get['actions_id'])) { $this->request->get['route'] = 'information/actions'; /* END Actions */ /* BEGIN News & Reviews */ } elseif (isset($this->request->get['news_id'])) { $this->request->get['route'] = 'information/news'; /* END News & Reviews */ } else { if (isset($queries[$parts[0]])) { $this->request->get['route'] = $queries[$parts[0]]; } } $this->validate(); if (isset($this->request->get['route'])) { return $this->forward($this->request->get['route']); } } } public function rewrite($link) { if (!$this->config->get('config_seo_url')) return $link; $seo_url = ''; $component = parse_url(str_replace('&', '&', $link)); $data = array(); parse_str($component['query'], $data); $route = $data['route']; unset($data['route']); switch ($route) { /* BEGIN Actions*/ case 'information/actions': if (!isset($data['actions_id'])) { $seo_url .= '/actions'; } break; /*END Actions*/ /* BEGIN News & Reviews */ case 'information/news': if (!isset($data['news_id'])) { $seo_url .= '/news'; } break; /* END News & Reviews */ case 'product/product': if (isset($data['product_id'])) { $tmp = $data; $data = array(); if ($this->config->get('config_seo_url_include_path')) { $data['path'] = $this->getPathByProduct($tmp['product_id']); if (!$data['path']) return $link; } $data['product_id'] = $tmp['product_id']; if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); if (!$data['path']) return $link; } break; case 'product/product/review': case 'information/information/info': return $link; break; default: break; } if ($component['scheme'] == 'https') { $link = $this->config->get('config_ssl'); } else { $link = $this->config->get('config_url'); } $link .= 'index.php?route=' . $route; if (count($data)) { $link .= '&' . urldecode(http_build_query($data, '', '&')); } $queries = array(); foreach ($data as $key => $value) { switch ($key) { /* BEGIN Actions */ case 'actions_id': $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'"); if ($query->num_rows) { $seo_url .= '/actions/' . rawurlencode($query->row['keyword']); unset($data[$key]); $postfix = 1; } break; /* END Actions */ /* BEGIN News & Reviews */ case 'news_id': $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'"); if ($query->num_rows) { $seo_url .= '/news/' . rawurlencode($query->row['keyword']); unset($data[$key]); $postfix = 1; } break; /* END News & Reviews */ case 'product_id': case 'manufacturer_id': case 'category_id': case 'information_id': $queries[] = $key . '=' . $value; unset($data[$key]); $postfix = 1; break; case 'path': $categories = explode('_', $value); foreach ($categories as $category) { $queries[] = 'category_id=' . $category; } unset($data[$key]); break; default: break; } } if(empty($queries)) { $queries[] = $route; } $rows = array(); foreach($queries as $query) { if(isset($this->cache_data['queries'][$query])) { $rows[] = array('query' => $query, 'keyword' => $this->cache_data['queries'][$query]); } } if(count($rows) == count($queries)) { $aliases = array(); foreach($rows as $row) { $aliases[$row['query']] = $row['keyword']; } foreach($queries as $query) { $seo_url .= '/' . rawurlencode($aliases[$query]); } } if ($seo_url == '') return $link; $seo_url = trim($seo_url, '/'); if ($component['scheme'] == 'https') { $seo_url = $this->config->get('config_ssl') . $seo_url; } else { $seo_url = $this->config->get('config_url') . $seo_url; } if (isset($postfix)) { $seo_url .= trim($this->config->get('config_seo_url_postfix')); } else { $seo_url .= '/'; } if(substr($seo_url, -2) == '//') { $seo_url = substr($seo_url, 0, -1); } if (count($data)) { $seo_url .= '?' . urldecode(http_build_query($data, '', '&')); } return $seo_url; } private function getPathByProduct($product_id) { $product_id = (int)$product_id; if ($product_id < 1) return false; static $path = null; if (!is_array($path)) { $path = $this->cache->get('product.seopath'); if (!is_array($path)) $path = array(); } if (!isset($path[$product_id])) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . $product_id . "' ORDER BY main_category DESC LIMIT 1"); $path[$product_id] = $this->getPathByCategory($query->num_rows ? (int)$query->row['category_id'] : 0); $this->cache->set('product.seopath', $path); } return $path[$product_id]; } private function getPathByCategory($category_id) { $category_id = (int)$category_id; if ($category_id < 1) return false; static $path = null; if (!is_array($path)) { $path = $this->cache->get('category.seopath'); if (!is_array($path)) $path = array(); } if (!isset($path[$category_id])) { $max_level = 10; $sql = "SELECT CONCAT_WS('_'"; for ($i = $max_level-1; $i >= 0; --$i) { $sql .= ",t$i.category_id"; } $sql .= ") AS path FROM " . DB_PREFIX . "category t0"; for ($i = 1; $i < $max_level; ++$i) { $sql .= " LEFT JOIN " . DB_PREFIX . "category t$i ON (t$i.category_id = t" . ($i-1) . ".parent_id)"; } $sql .= " WHERE t0.category_id = '" . $category_id . "'"; $query = $this->db->query($sql); $path[$category_id] = $query->num_rows ? $query->row['path'] : false; $this->cache->set('category.seopath', $path); } return $path[$category_id]; } private function validate() { if (empty($this->request->get['route']) || $this->request->get['route'] == 'error/not_found') { return; } if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { return; } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { $url = str_replace('&', '&', $this->config->get('config_ssl') . ltrim($this->request->server['REQUEST_URI'], '/')); $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'SSL')); } else { $url = str_replace('&', '&', $this->config->get('config_url') . ltrim($this->request->server['REQUEST_URI'], '/')); $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'NONSSL')); } if (rawurldecode($url) != rawurldecode($seo)) { header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently'); $this->response->redirect($seo); } } private function getQueryString($exclude = array()) { if (!is_array($exclude)) { $exclude = array(); } return urldecode(http_build_query(array_diff_key($this->request->get, array_flip($exclude)))); } } ?>
  3. Подскажите, пожалуйста как устранить баг с модулем FAQ (модуль часто задаваемых вопросов). Вопросы выглядят так http://сайт.ru/faq.html?topic=6 , сделать по аналогии с модулем новостей не получилось.
  4. Спасибо, antracit. Заменил файл сео про. Хотел сделать по аналогии Faq (модуль часто задавемых вопросов) Но получается не очень :) сайт.ру/faq/faq.html?topic=13
  5. Установил на сайт, всё работает. Спасибо большое, за проделанную Вами работу. Очень полезное дополнение ! Но только есть проблема с правильным отображением "Новостей" И QiWi стал ошибку выдавать 2013-03-19 23:08:29 - qiwi error hash Подскажите пожалуйста как решить ?
  6. Необходим установленный VQMod, ничего редактировать не нужно
  7. Микроданные Schema.org для страниц категорий https://opencartforum.com/files/file/539-%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-schemaorg-%D0%B4%D0%BB%D1%8F-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B9/
  8. Доброго времени суток. Мой сайт http://QtiQ.ru Приобрел два модуля для категории и для продукта. Модуль супер, но возникли некоторые проблемы, а именно: 1) Модуль к продуктам- У меня на товаре стоит "наличие- на складе" ( в админке кол-во товара указано 0 шт. при отсутствии товара: на складе.) Но гугл считывает товар как "нет в наличии" - как поменять значение на "на складе" ? 2)Модуль к категориям- У меня установлено дополнение для постепенной загрузки изображений и код выглядит так <a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" width="<?php echo $product['thumb_w']; ?>" height="<?php echo $product['thumb_h']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a></div> Если добавляю itemprop="image" , постепенная загрузка перестает работать
  9. Спасибо за помощь, разобрался ... Забыл что для стикеров CSS файл редактировал.
  10. на картинках стоит padding: 5px; если его отключить, то все встает на место , но я бы хотел оставить paging. Поэтому хочу отредактировать сам стикер, но не могу найти место где его редактировать
  11. Спасибо, наконец в админке отображается то что действительно вписал, а не 30 и 100... Подскажите как поместить стикер немного левее и выше в категориях ( немножко не в том месте расположен) Пример категория- коктейльные платья
  12. у хостинга стояли ограничения...хостинг уменьшил ограничения и чат заработал
  13. Установил LiveZilla,клиентская часть работает исправно (вижу кто заходит на сайт), но после открытия чата пишет ошибку и не коннектится до конца. постоянно пишет "загрузка" Кто знает с чем это связано ? (грешу на хостинг, но они говорят, что все исправно) http://qtiq.ru/chat/chat.php см. скрин
  14. Каким образом это сделать расскажите пожалуйста? Не могу разобраться... поддомен создал. хостинг -Hostland
  15. Создал поддомен для сайта типа moscov.mysite.ru с одной базой (общим каталогом) Хостинг Hostland Создал поддомен, но возникла проблема с указанием пути на основной магазин ! Перечитал форум не могу вникнуть каким образом Указать путь на основной магазин ?
  16. Нашел проблему. В свое время почистил файл "www/catalog/model/account"-customer Тему можно закрыть.
  17. ocStore версия 1.5.1.3 сайт находится на хостинге много изменений Суть проблеммы- 4 месяца назад удалил 2 строки в регистрации пользователя (Фамилию+ Адрес 2). Но сейчас в них возникла необходимость. Были восстановлены данные в controller и view . Поля стали отображаться, но после регистрации пользователя они не сохраняются (т.е. остаются пустыми и в админке и в личном кабинете пользователя) Причем если их вписать в личном кабинете или в админке они сохранятся Пользовался поиском- ничего подобного не нашел! (не могу сам разобраться)
×
×
  • Создать...

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

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