

Maks
Користувачі-
Публікації
140 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Усі публікації користувача Maks
-
Последняя версия opencart 1.5.3.1, у меня и у вас версия 1.5.1.3 . Поэтому в последних версиях не стоит искать указанные мной строки. Исходного моего opencart у меня сейчас нет, поэтому проверить насколько были изменены файлы, у меня нет. Файл прикрепил... product.php
-
Какая версия у Вас указана в index.php ? Вы скачивали версию с myopencart ?
-
это и есть решение для 1.5.1.3, просто я ошибся в номере версии. я поправил свой первый пост по этому вопросу.
-
Скорее всего вы проверяли только главную страницу, а это не предусматривается. Проверьте то для чего это сделано, а именно категорию или продукт, все работает. К примеру ссылку на слипы для новорожденных: http://smallmister.r...yh-i-mladencev/
-
По просьбе трудящихся, дополняю пояснениями по выводу Last-Modified в категориях Итак... В файле /catalog/controller/product/category.php после строки $this->data['seo_h1'] = $category_info['seo_h1'];добавляем $this->data['date_modified'] = $category_info['date_modified'];В файл /catalog/view/theme/default/template/product/category.tpl в самое начало, добавляем (ИДЕНТИЧНО варианту для единиц товара) <?php $LastModified_unix = strtotime($date_modified); // время последнего изменения страницы $LastModified = gmdate("D, d M Y H:i:s GMT", $LastModified_unix); $IfModifiedSince = false; if (isset($_ENV['HTTP_IF_MODIFIED_SINCE'])) $IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5)); if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) $IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5)); if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) { header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); exit; } header('Last-Modified: '. $LastModified); ?> У тех, у кого, PHP начнет материться такими сообщениями как "Warning: Cannot modify header information..." сохраните, указанный в Warning'е, файл в формате "UTF-8 Without BOM". У меня материля на filter.php(больше всего времени ушло на выяснение причин). Мало того, ещё и сам файл не сохранялся в нужный формат (не была доступна ф-ия преобразования), пришлось пересоздать файл. Кому помог того велкам к кнопочке "+1"
-
Для версии 1.5.1.3 решается все очень тривиально В базе данный есть такое поле как [date_modified] его и будем выводить в качестве Last-Modified, более логичного варианта не вижу Итак для единицы товара В файле /catalog/controller/product/product.php после строки $this->data['date_available'] = $product_info['date_available'];добавляем $this->data['date_modified'] = $product_info['date_modified'];после строки 'date_available' => $result['date_available'],добавляем 'date_modified' => $result['date_modified'], В файл /catalog/view/theme/default/template/product/product.tpl в самое начало, добавляем <?php $LastModified_unix = strtotime($date_modified); // время последнего изменения страницы $LastModified = gmdate("D, d M Y H:i:s GMT", $LastModified_unix); $IfModifiedSince = false; if (isset($_ENV['HTTP_IF_MODIFIED_SINCE'])) $IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5)); if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) $IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5)); if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) { header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); exit; } header('Last-Modified: '. $LastModified); ?> Для категорий делаем так же. Если кому то интересно, напишу позже как это сделать... Как это работает можно посмотреть на моем сайте www.SmallMister.ru
-
Вопрос решен. Решение на удивление очевидно и лежит на поверхности Моя задача стояла в замене категории и подкатегории Вот мое решение: Допустим нам URL'ы форматов category1_old/category2_old/product1 category1_old/category3_old/product2 category1_old/category3_old/product3 необходимо заменить на URL'ы category1_new/category2_new/product1 category1_new/category3_new/product2 category1_new/category3_new/product3 Тогда пишем следующий код в .htaccess RewriteRule category1_old/(.*)$ category1_new/$1 [R=301,L] RewriteRule category2_old/(.*)$ category2_new/$1 [R=301,L] RewriteRule category3_old/(.*)$ category3_new/$1 [R=301,L] Таким образом для подмены части URL и 301го редиректа для 4х товаров мы используем 3 строки
-
Присоединяюсь к вопросу lewys Очень нужен ответ на этот вопрос!!!
-
У данного модуля есть недочет, он не работает с сортировкой. Если попытаться отсортировать по любому из полей, то фильтрация по категории сбрасывается... Кто нибудь знает решение этого вопроса?
-
Добавлю мои 5 копеек Вариант отображения в виде списка url и формирования html кода ссыли, при этом анкор ссылки формируется из seo_title, вариант языка "русский" Мне это нужно было чтобы сопоставить проиндексированные ссылки яшей с ссылками на товары моего сайта, для себя сделал полезный неутешительный вывод - проиндексировано 340 из 740 Собственно код SELECT concat("http://доменное_имя/", ua2.keyword, "/", ua1.keyword) as url, concat(concat("<a href='http://доменное_имя/", ua2.keyword, "/", ua1.keyword,"'>"),seo_title,"</a></br>") as link FROM ( SELECT concat( 'product_id=', p.product_id ) AS product_query, seo_title, price, quantity, model, concat( 'category_id=', pc.category_id ) AS category_query FROM `opnc_product_description` pd LEFT JOIN opnc_product p ON (p.product_id=pd.product_id) LEFT JOIN opnc_product_to_category pc ON (pc.product_id=p.product_id) WHERE p.date_available <= NOW() AND p.status = '1' AND pd.language_id = '1' )pd LEFT JOIN opnc_url_alias ua1 ON ( pd.`product_query` = ua1.`query` ) LEFT JOIN opnc_url_alias ua2 ON ( pd.`category_query` = ua2.`query` )
-
Добавлю свои 5 копеек. необходимо в функции "getTotalProducts", в условии на подсчет количества товаров в категории также добавить "AND p.quantity > '0'" Это необходимо для корректного отображения количества товаров в категориях (для тех кто это отображает), а также для корректного отображения количества страниц, с выводимыми товарами. Для тех кто использует модуль предыдущий следующий товар желательно также добавить вышеизложенное условие в функциях "getProduct" и "getPrevNextProduct"
-
Прошу не пинать, не нашел подобной темы Специфика моего сайта такова, что товар часто заканчивается. Дабы не отталкивать покупателя, я отключаю такой товар. Для каждой из позиций пишется описание оптимизированное под яшу, и соответственно эффект после отключения пропадает. ЧПУ для отключенного товара не работает. Каким образом это обойти?
-
monax, freelancer, спасибо! Установил, работает корректно
-
[РЕШЕНО] Добрый день Проблема следующая. Изначально пришел заказ с отсутствующей вкладкой "адрес доставки" в админке Попытался повторить ситуацию, удалось выяснить что эта проблема как минимум связана с парой товаров. т.е. если товар присутствует в заказе то "адрес доставки пропадает" Сегодня опять пришел заказ с такой же ситуацией. В чем проблема? У кого какие идеи? P.S. OpenCart v.1.5.1.3 установлена быстрая форма заказа от RB Из последнего что устанавливал это "Модуль расчета стоимости доставки, в зависимости от стоимости покупки и зоны доставки для OpenCart v.1.5.1.3" - http://=^_^=.ru/mod...y-dostavki.html
-
Добрый деньЧто вы понимаете под "языковой файл"?
-
Возможно ли выставить в виде анкоров "следующий, предыдущий" наименования товаров? Эта штука полезна только для SEO. ИМХО...
-
Вопрос решен с помощью модуля http://=^_^=.ru/module/module-151/157-modul-rascheta-stoimosti-dostavki-v-zavisimosti-ot-stoimosti-pokupki-i-zony-dostavki.html
-
У меня предусмотрено две точки самовывоза. Соответственно нужно добавить второй самовывоз. Возможно ли это сделать без особых изменений? Кто сталкивался, подскажите где копать?
-
Как и обещал, реализовал настройку и вывод на сайт анкора ссылок в категориях Порядок действий аналогичен измененям при добавлении анкоров в карточки товаров. 1. В таблицу "_category_description" добавить поле seo_ankor Запрос: ALTER TABLE `[ПРЕФИКС БД]_category_description` ADD `seo_ankor` varchar(255) COLLATE utf8_general_ci NOT NULL 2. по желанию скопировать данные из seo_h1 в новое поле Запрос: UPDATE `[ПРЕФИКС БД]_category_description` SET `seo_ankor`=`seo_h1` 3. Изменяем файлы 3.1. Файл: [корень_сайта]\admin\controller\catalog\category.php После строки: $this->data['entry_seo_h1'] = $this->language->get('entry_seo_h1');Добавляем: $this->data['entry_seo_ankor'] = $this->language->get('entry_seo_ankor'); 3.2. Файл: [корень_сайта]\admin\language\english\catalog\category.php После строки: $_['entry_seo_h1'] = 'HTML Tag H1:';Добавляем: $_['entry_seo_ankor'] = 'Ankor for link:'; 3.3. Файл: [корень_сайта]\admin\language\russian\catalog\category.php После строки $_['entry_seo_h1'] = 'HTML-тег H1:';Добавляем $_['entry_seo_ankor'] = 'Анкор ссылки:'; 3.4. Файл: [корень_сайта]\admin\model\catalog\category.php 3.4.1 Строку(13): $this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'"); Меняем на: $this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_ankor = '" . $this->db->escape($value['seo_ankor']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'"); 3.4.2. Строку(47): $this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'"); Меняем на: $this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_ankor = '" . $this->db->escape($value['seo_ankor']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'"); 3.4.3 После строк: foreach ($query->rows as $result) { $category_description_data[$result['language_id']] = array( 'seo_title' => $result['seo_title'], 'seo_h1' => $result['seo_h1'], Вставляем строку: 'seo_ankor' => $result['seo_ankor'], 3.5. Файл: [корень_сайта]\admin\view\template\catalog\category_form.tpl Перед строками: <tr> <td><?php echo $entry_seo_h1; ?></td> <td><input type="text" name="category_description[<?php echo $language['language_id']; ?>][seo_h1]" maxlength="255" size="100" value="<?php echo isset($category_description[$language['language_id']]) ? $category_description[$language['language_id']]['seo_h1'] : ''; ?>" /></td> </tr> Добавляем: <tr> <td><?php echo $entry_seo_ankor; ?></td> <td><input type="text" name="category_description[<?php echo $language['language_id']; ?>][seo_ankor]" maxlength="255" size="100" value="<?php echo isset($category_description[$language['language_id']]) ? $category_description[$language['language_id']]['seo_ankor'] : ''; ?>" /></td> </tr> 3.6. Файл: [корень_сайта]\catalog\controller\product\category.php 3.6.1. Строки: if ($category_info) { $this->data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path), 'separator' => $this->language->get('text_separator') ); } Меняем на строки: if ($category_info) { if($category_info['seo_ankor']) { $this->data['breadcrumbs'][] = array( 'text' => $category_info['seo_ankor'], 'href' => $this->url->link('product/category', 'path=' . $path), 'separator' => $this->language->get('text_separator') ); } else { $this->data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path), 'separator' => $this->language->get('text_separator') ); } } 3.6.2. После строки: [code$this->data['seo_h1'] = $category_info['seo_h1'];[/code] Добавляем: $this->data['seo_ankor'] = $category_info['seo_ankor']; 4. Заходим в админке в свойства категории, меняем поле [общие]\[Анкор ссылки:] 5. На сайте видим P.S. При отсутствии анкора берется поле названия категории, т.е. так как по умолчанию Поле во вкладке "English" не используется
-
У OpenCart есть недостаток давно раздражавший меня (v. 1.5.1.3) Речь об отсутствии возможности задания анкоров ссылок как для товара так и для категорий. Использовать их нужно как минимум в хлебных крошках. Взявшись за это дело и потратив 2 часа нашел нижеследующее решение для анкора ссылок в карточке товара: 1. В таблицу "_product_description" добавить поле seo_ankor Запрос: ALTER TABLE `[ПРЕФИКС БД]_product_description` ADD `seo_ankor` varchar(255) COLLATE utf8_general_ci NOT NULL 2. по желанию скопировать данные из seo_h1 в новое поле Запрос UPDATE `[ПРЕФИКС БД]_product_description` SET `seo_ankor`=`seo_h1` 3. Изменяем файлы 3.1. Файл: [корень_сайта]admincontrollercatalogproduct.php После строки: $this->data['entry_seo_h1'] = $this->language->get('entry_seo_h1');Добавляем: $this->data['entry_seo_ankor'] = $this->language->get('entry_seo_ankor'); 3.2. Файл: [корень_сайта]adminlanguageenglishcatalogproduct.php После строки: $_['entry_seo_h1'] = 'HTML Tag H1:';Добавляем: $_['entry_seo_ankor'] = 'Ankor:'; 3.3. Файл: [корень_сайта]adminlanguagerussiancatalogproduct.php После строки $_['entry_seo_h1'] = 'HTML-тег H1:';Добавляем $_['entry_seo_ankor'] = 'Текст анкора:'; 3.4. Файл: [корень_сайта]adminmodelcatalogproduct.php 3.4.1 Строку: $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");Меняем на: $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "', seo_ankor = '" . $this->db->escape($value['seo_ankor']) . "'"); 3.4.2. Строку: $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");Меняем на: $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "', seo_ankor = '" . $this->db->escape($value['seo_ankor']) . "'"); 3.4.3 После строк: foreach ($query->rows as $result) { $product_description_data[$result['language_id']] = array( 'seo_title' => $result['seo_title'], 'seo_h1' => $result['seo_h1'],Вставляем строку: 'seo_ankor' => $result['seo_ankor'], 3.5. Файл: [корень_сайта]adminviewtemplatecatalogproduct_form.tpl Перед строками: <tr> <td><?php echo $entry_seo_h1; ?></td> <td><input type="text" name="product_description[<?php echo $language['language_id']; ?>][seo_h1]" maxlength="255" size="100" value="<?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['seo_h1'] : ''; ?>" /></td> </tr> Добавляем: <tr> <td><?php echo $entry_seo_ankor; ?></td> <td><input type="text" name="product_description[<?php echo $language['language_id']; ?>][seo_ankor]" maxlength="255" size="100" value="<?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['seo_ankor'] : ''; ?>" /></td> </tr> 3.6. Файл: [корень_сайта]catalogcontrollerproductproduct.php 3.6.1. Строки: $this->data['breadcrumbs'][] = array( 'text' => $product_info['name'], 'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']), 'separator' => $this->language->get('text_separator') );Меняем на строки: if ($product_info['seo_ankor']) { $this->data['breadcrumbs'][] = array( 'text' => $product_info['seo_ankor'], 'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']), 'separator' => $this->language->get('text_separator') ); } else { $this->data['breadcrumbs'][] = array( 'text' => $product_info['name'], 'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']), 'separator' => $this->language->get('text_separator') ); } 3.6.2. После строки: $this->data['seo_h1'] = $product_info['seo_h1'];Добавляем: $this->data['seo_ankor'] = $product_info['seo_ankor']; 4. Заходим в админке в позицию товара, меняем поле [общие][текст анкора] 5. На сайте видим P.S. При отсутствии анкора берется поле названия товара, т.е. так как по умолчанию Поле во вкладке "English" не используется P.P.S. Чуть позже сделаю аналогичное для категорий товаров Для категорий тоже сделано. См. следующий пост. Просьба к народным умельцам - собрать XML для VQMod Спасибо всем за внимание! Надеюсь сделал полезную вещь для всех.