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

aakazakow

Newbie
  
  • Posts

    45
  • Joined

  • Last visited

Everything posted by 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. Микроданные 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/
  7. Доброго времени суток. Мой сайт 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" , постепенная загрузка перестает работать
  8. Спасибо за помощь, разобрался ... Забыл что для стикеров CSS файл редактировал.
  9. на картинках стоит padding: 5px; если его отключить, то все встает на место , но я бы хотел оставить paging. Поэтому хочу отредактировать сам стикер, но не могу найти место где его редактировать
  10. Спасибо, наконец в админке отображается то что действительно вписал, а не 30 и 100... Подскажите как поместить стикер немного левее и выше в категориях ( немножко не в том месте расположен) Пример категория- коктейльные платья
  11. у хостинга стояли ограничения...хостинг уменьшил ограничения и чат заработал
  12. Установил LiveZilla,клиентская часть работает исправно (вижу кто заходит на сайт), но после открытия чата пишет ошибку и не коннектится до конца. постоянно пишет "загрузка" Кто знает с чем это связано ? (грешу на хостинг, но они говорят, что все исправно) http://qtiq.ru/chat/chat.php см. скрин
  13. Каким образом это сделать расскажите пожалуйста? Не могу разобраться... поддомен создал. хостинг -Hostland
  14. Создал поддомен для сайта типа moscov.mysite.ru с одной базой (общим каталогом) Хостинг Hostland Создал поддомен, но возникла проблема с указанием пути на основной магазин ! Перечитал форум не могу вникнуть каким образом Указать путь на основной магазин ?
  15. Нашел проблему. В свое время почистил файл "www/catalog/model/account"-customer Тему можно закрыть.
  16. ocStore версия 1.5.1.3 сайт находится на хостинге много изменений Суть проблеммы- 4 месяца назад удалил 2 строки в регистрации пользователя (Фамилию+ Адрес 2). Но сейчас в них возникла необходимость. Были восстановлены данные в controller и view . Поля стали отображаться, но после регистрации пользователя они не сохраняются (т.е. остаются пустыми и в админке и в личном кабинете пользователя) Причем если их вписать в личном кабинете или в админке они сохранятся Пользовался поиском- ничего подобного не нашел! (не могу сам разобраться)
×
×
  • 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.