Весь контент Pascha
- 
	
		
		Сортировка товаров в OpenCart
		
		Практический каждый более или менее наполненный товарами интернет-магазин использует некоторые критерии сортировки товаров на сайте. В одном интернет магазине это может быть показ по дате добавления, в другом же это сортировка по популярности того или иного продукта. Сортировка товаров в интернет магазине позволяет выставлять элементы в нужном порядке. Это позволяет существенно оптимизировать реализацию товаров на витрине и конечно же вопрос релевантности никто ещё не отменял. Понятие релевантности в сети интернет сегодня уже используется довольно широко, начиная от поисковых систем, заканчивая сайтом с новостной лентой. И это хорошо работает, когда популярные записи всегда стремятся в топ, а менее просматриваемые уходят в низ по списку. Однако в одних случаях это работает в автоматическом режиме, в других выставляется вручную. В обеих случаях есть свои преимущества и недостатки. В данной заметке мы поговорим про сортировку товаров в OpenCart. Поле «Порядок сортировки» в OpenCart В движке OpenCart как и во многих других движках существует поле, обозначаемое как «Порядок сортировки» товара. При редактировании карточки товара, мы можем видеть такое поле Как уже ясно из самого названия, оно используется для выставления значения позиции в каталоге для конкретного товара. Таким образом, в каталоге товары могут быть выстроены в нужном порядке вручную. При сортировке товаров по этому полю, выборка элементов происходит посредством указанной в запросе ORDER BY sort_order. Запрос в базу как правило производится из самого модуля. Сортировку товаров в OpenCart по умолчанию мы можем выставлять различным образом, и далее речь пойдёт об этом. Как поменять сортировку товаров в OpenCart по умолчанию Существуют множество полей, по которым мы может выполнять сортировку товаров в каталоге. Некоторые системы позволяют настраивать подобные вещи непосредственно в администраторской части сайта. В OpenCart это делается программно, т.к. всё же нет постоянной необходимости менять поле, по которому будут сортироваться товары в каталоге. Как уже говорилось выше, запрос в базу данных выполняется из самого модуля. Однако порядок выборки товаров мы может задавать через контроллер. По этой причине нет необходимости лезть в код модуля, куда целесообразнее это сделать через контроллер. Контроллер, который участвует в выводе товаров категории в OpenCart располагается по такому пути: /catalog/controller/product/category.php Открыв данный файл, следует найти запись такого вида: if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } В общем запись которая находится в условии else обозначает значение по умолчанию. Таким образом, переменная $sort определяет имя поля по умолчанию, которое будет использовано для сортировки товаров. Поменяв имя поля на другое, мы можем изменить поле, по которому будет сортироваться товары в категории. Существуют некоторое множество полей, по которому мы можем сортировать товары в каталоге. Далее поговорим об этих полях. Поля доступные для сортировки в OpenCart Есть несколько ключевых полей в базе данных, по которым целесообразно выполнять сортировку товаров: ‘pd.name’, — Наименование товара; ‘p.model’, — Поле, обозначающеии модель товара; ‘p.quantity‘, — Поле, обозначающее остаток товара на сайте; ‘p.price’, — Поле с ценой товара; ‘rating’, — Поле с рейтингом товара; ‘p.sort_order’, — Отдельное поле для ручной сортировки; ‘p.date_added’ — Поле с датой добавления товара; Для примера, если мы хотим поменять сортировку товаров в каталоге по дате добавления, нам следует в переменной $sort выставить значение p.date_added. Кроме того, существуют так же возможность указания направления сортировки (ASC или DESC). Для этого используется переменная $order, которая может содержать два значения: ASC – сортировка по возрастанию; DESC – порядок сортировки по убыванию. В большинстве случаем, изменения этих двух параметров бывает достаточно. После внесения изменений в скрипт не забывает почистить кэш, перед тем как проверить работу скрипта.
 - 
	
		
		Дополнительная информация о товаре/ AddiinfoProduct
		
		исправлено Добавлено для наглядности реализовано (если блок текста более 100px -скрывается под спойлер - появляется кнопки читать еще/скрыть) p.s. Архив обновлен согласно предложенным доработкам
 - 
	
		
		Дополнительная информация о товаре/ AddiinfoProduct
		
		Данное дополнение - пилотное. Делалось под определенную задачу: Визуализация и описание основных узлов и деталей продаваемого устройства . Предполагаю что может использоваться по типу "аля- лукбук" (для ИМ одежды), изображений сертификатов и лицензий конкретного товара (к примеру мед. оборудования) и пр. При интересе и предложениях будет дорабатываться. После приобретения дополнения все обновления будут доступны к скачиванию без ограничений по стоимости и времени.
 - 
	
		
		Дополнительная информация о товаре/ AddiinfoProduct
		
		Просмотр файла Дополнительная информация о товаре/ AddiinfoProduct Дополнение выполняет задачу вывода дополнительной информации + изображение в карточке товара. Неограниченное количество строк. Неограниченное количество знаков текста. В версии 1.0 выводится в карточке товара над "табами". Язык- русский. Установка - менеджер дополнений- ocmod Версия Опенкарт - 2.3 Демо фронт Админка- demo/demo Делалось под определенную задачу: Визуализация и описание основных узлов и деталей продаваемого устройства . Предполагаю что может использоваться по типу "аля- лукбук" (для ИМ одежды), изображений сертификатов и лицензий конкретного товара (к примеру мед. оборудования) и пр. Добавил Pascha Добавлено 21.07.2022 Категория Меню, дизайн, внешний вид
 - 
	
		
		Дополнительная информация о товаре/ AddiinfoProduct
		
		Дополнение выполняет задачу вывода дополнительной информации + изображение в карточке товара. Неограниченное количество строк. Неограниченное количество знаков текста. В версии 1.0 выводится в карточке товара над "табами". Язык- русский. Установка - менеджер дополнений- ocmod Версия Опенкарт - 2.3 Демо фронт Админка- demo/demo Делалось под определенную задачу: Визуализация и описание основных узлов и деталей продаваемого устройства . Предполагаю что может использоваться по типу "аля- лукбук" (для ИМ одежды), изображений сертификатов и лицензий конкретного товара (к примеру мед. оборудования) и пр.1,300.00 RUB
 - 
	
		
		При активации модулей вылетает ошибка: Signature hash does not match!
		
		При установке модулей из маркетплейса прямо с веб-сайта вы можете столкнуться с сообщением об ошибке типа «Signature hash does not match!», решение этой проблемы для OpenCart версии 3.0.2.0 следующее: Войдите в свою учетную запись OpenCart https://www.opencart.com/index.php?route=account/login На панели инструментов вы увидите «Ваши магазины», щелкните по нему, затем нажмите кнопку «Добавить магазин». затем добавьте информацию о своем магазине, которая является доменным именем. Затем нажмите «Отправить», вы получите подробную информацию о вашем имени пользователя и секретном ключе. зайдите на свой сайт и войдите в админку. Перейдите в Расширения >> Торговая площадка и нажмите кнопку настройки. Появится всплывающее окно, в котором вы вводите имя пользователя и секретный ключ, введите их, которые вы получили выше, на панели управления учетной записью opencart.com. Или просто устанавливайте модули стандартным способом (через установку ocmod или по FTP) ))))
 - 
	
		
		Как вывести несколько определённых опций в одном контейнере?
		
		как по мне, так немного костыль и плюсом не совсем понятно какую цель преследует данное решение, но вывод в product.tpl (раскидываем по блокам в зависимости от ID опции) 2 блока <div id="block1"></div> и <div id="block2"></div> <?php if ($option['type'] == 'checkbox') { ?> <?php if ($option['option_id'] == '13' || $option['option_id'] == '15') { ?> <div id="block1"> <div class="form-group<?php echo ($option['required'] ? ' required' : ''); ?>"> <label class="control-label"><?php echo $option['name']; ?></label> <div id="input-option<?php echo $option['product_option_id']; ?>"> <?php foreach ($option['product_option_value'] as $option_value) { ?> <div class="checkbox"> <label> <input type="checkbox" name="option[<?php echo $option['product_option_id']; ?>][]" value="<?php echo $option_value['product_option_value_id']; ?>" /> <?php if ($option_value['image']) { ?> <img src="<?php echo $option_value['image']; ?>" alt="<?php echo $option_value['name'] . ($option_value['price'] ? ' ' . $option_value['price_prefix'] . $option_value['price'] : ''); ?>" class="img-thumbnail" /> <?php } ?> <?php echo $option_value['name']; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label> </div> <?php } ?> </div> </div> </div> <?php } ?> <?php } ?> <?php if ($option['type'] == 'checkbox') { ?> <?php if ($option['option_id'] == '14') { ?> <div id="block2"> <div class="form-group<?php echo ($option['required'] ? ' required' : ''); ?>"> <label class="control-label"><?php echo $option['name']; ?></label> <div id="input-option<?php echo $option['product_option_id']; ?>"> <?php foreach ($option['product_option_value'] as $option_value) { ?> <div class="checkbox"> <label> <input type="checkbox" name="option[<?php echo $option['product_option_id']; ?>][]" value="<?php echo $option_value['product_option_value_id']; ?>" /> <?php if ($option_value['image']) { ?> <img src="<?php echo $option_value['image']; ?>" alt="<?php echo $option_value['name'] . ($option_value['price'] ? ' ' . $option_value['price_prefix'] . $option_value['price'] : ''); ?>" class="img-thumbnail" /> <?php } ?> <?php echo $option_value['name']; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label> </div> <?php } ?> </div> </div> </div> <?php } ?> <?php } ?> опции с указанным ID разделены и отображаются в разных блоках теперь переместим куда хотим к примеру опции в <div id="block2">....</div> где требуется вставим блок с уникальным классом...примерно так <div id="product"> <div id="block2_clone"></div> </div> </div> использую и <div id="product">, так как только в таком случае опции будут работать и учитываться при покупке ну и собственно скрипт для перемещения ( пишем над <?php echo $footer; ?> ) <script> $('#block2').appendTo( $('#block2_clone') ); </script> Результат достигнут.
 - 
	
		
		Как в футере разбить статьи в разные колонки
		
		Ну и для тех, кому в принципе нужно разбиение какого то длинного текста на колонки, можете применить column-count почитать можно тут
 - 
	
		
		Как в футере разбить статьи в разные колонки
		
		Недавно, согласно предоставленному макету нужно было разбить статьи в 2 разные колонки. ( предварительно убрав то что не нужно) Сайт был для предоставления услуг, то есть пункты подобные "Возврат товара" и прочие были упразднены и потому футер предполагалось переверстать и пересортировать пункты. Итак, не став сильно заморачиваться и принял решение использовать для этих целей сортировку статей. Для этого в catalog/view/theme/default/template/information/information.tpl Формируем первую колонку <?php if ($informations ) { ?> <div class="col-sm-4"> <h5>Название первой колонки с статьями</h5> <ul class="list-unstyled"> <?php foreach ($informations as $information) { ?> <?php if ($information['sort_order'] < 100 ) { ?> <li><a href="<?php echo $information['href']; ?>"><?php echo $information['title']; ?></a></li> <?php } ?> <?php } ?> </ul> </div> <?php } ?> Пояснение: В данную колонку будут помещаться все статьи которым определено "отображать в футере" и номером сортировки менее 100 Формируем вторую колонку <?php if ($informations) { ?> <div class="col-sm-4"> <h5>Название второй колонки с статьями</h5> <ul class="list-unstyled"> <li><a href="/">Главная</a></li> <?php foreach ($informations as $information) { ?> <?php if ($information['sort_order'] > 100 ) { ?> <li><a href="<?php echo $information['href']; ?>"><?php echo $information['title']; ?></a></li> <?php } ?> <?php } ?> <li><a href="<?php echo $sitemap; ?>"><?php echo $text_sitemap; ?></a></li> </ul> </div> <?php } ?> Пояснение: В данную колонку будут помещаться все статьи которым определено "отображать в футере" и номером сортировки более 100 Вот такое простенькое и возможно слегка костыльное решение для сайтов, где предполагается много статей, которые необходимо разместить в подвале сайта.
 - 
	
		
		Как в Opencart настроить редирект с http на https
		
		Иногда "слетают" стили на собственно сайте или затруднен вход в админку сайта (при отсутствии корректного отображения страницы входа) Костыль- но работает Прежде всего убедитесь, что вы подключили SSL сертификат на вашем серерве\хостинге, более подробно об этом вы можете узнать у своего хостинг-провайдера в службе поддержки. 1. Для начала, откройте панель управления вашим магазином и перейдите в раздел Система > Настройки > Редактировать Затем откройте вкладку "Сервер" и выберите Использовать SSL: (да) 2. Откройте файл config.php (который расположен в корневой директории вашего сайта) с помощью текстового редактора. Найдите строку: // HTTP define('HTTP_SERVER', 'http://site.ru/'); // HTTPS define('HTTPS_SERVER', 'http://site.ru/'); Замените эти строки как указано ниже: // HTTP define('HTTP_SERVER', 'https://site.ru/'); // HTTPS define('HTTPS_SERVER', 'https://site.ru/'); 3. Откройте файл admin/config.php и найдите строки: // HTTP define('HTTP_SERVER', 'http://site.ru/admin/'); define('HTTP_CATALOG', 'http://site.ru/'); // HTTPS define('HTTPS_SERVER', 'http://site.ru/admin/'); define('HTTPS_CATALOG', 'http://site.ru/'); Замените как указано ниже: // HTTP define('HTTP_SERVER', 'https://site.ru/admin/'); define('HTTP_CATALOG', 'https://site.ru/'); // HTTPS define('HTTPS_SERVER', 'https://site.ru/admin/'); define('HTTPS_CATALOG', 'https://site.ru/'); Сохраните файлы, этим самым мы обозначим доступность сайта по защищенному протоколу. p.s. 1. При данной правке учитывайте, что по окончанию действия сертификата Ваш сайт будет "криво" отображаться и нужно будет сделать "обратные" правки 2. Как правило после любых действий стоит очистить кеш изображений 3. Случается что картинки вставленные через текстовой редактор (описания, статьи и пр.) не отображаются - потребуется заново отредактировать вновь указав путь до картинки в менеджере изображений (или в режиме кода исправить путь до картинки с http на https)
 - 
	
		
		Как в Opencart настроить редирект с http на https
		
		Если вы подключили SSL сертификат, для того чтобы ваш магазин открывался по безопасному протоколу HTTPS рекомендуется настроить редирект с http:// на https:// Даже если пользователь наберет http://, его перенаправит на безопасный протокол https:// Изменения необходимо вносить в файл .htaccess Откройте для редактирования на вашем сервере через фтп-клиент или файл-менджер файл .htaccess, обычно он находится в корневой директории вашего сайта. После строки: RewriteEngine On Добавьте следующую запись: RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] Данное правило должно работать практически на любом хостинге, однако если у вас редирект не сработал, добавьте такую запись: RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] Сохраните файл, теперь редирект с протокола http на https готов.
 - 
	
		
		Все картинки на сайте адаптивны
		
		1. это пример (заготовка) скрипта который мною применялся в случае когда парсились товары с описанием в котором были изображения ( то есть они не вставлялись в ручную и потому им не задавались размеры в процентах, тем самым в мобильной версии появлялся горизонтальный скролл 2. предположим что Вы решили прикрутить к некоторым изображениям увеличение по клику не используя какие бы то ни было дополнения... само собой Вам нужно каждому изображению помимо подключения скрипта присвоить к примеру класс minimized этот скрит может стать основой и еще куча вариантов когда этот скрипт будет полезен в разработке... поверьте мне в своей работе я этот скрипт использую до сих пор регулярно а с теми картинками у которых есть уже такой класс...ни чего не случится страшного))) проверьте... ну и для перфекционистов не сложно понять, что можно указать точное вхождение указав родительский блок картинки, к примеру <script> $('#tab-description img').each(function() { /<- ТУТ указываем родительский блок изображения / $(this).addClass('img-responsive'); }); </script>
 - 
	
		
		Вывод определенного количества атрибутов в категории и модулях
		
		Начну с того, что в сети очень много решений по выводу атрибутов в категории и по аналогии в модулях. Как правило общепринято делать так Шаг первый В контроллерах : (category.php, compare.php, manufacturer.php, search.php, special.php) в массив после 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..', вставляем 'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']), Шаг второй В файлах представления (tpl) там где необходимо <?php if($product['attribute_groups']) { ?> <?php foreach($product['attribute_groups'] as $attribute_group) { ?> <?php if(!strpos($attribute_group['name'], "—")) {?> <?php foreach($attribute_group['attribute'] as $attribute) { ?> <b><?php echo $attribute['name']; ?></b> <?php echo $attribute['text']; ?><br> <?php } ?> <?php } ?> <?php } ?> <?php } ?> Казалось бы все прекрасно и работоспособно... но когда оказывается что в разных товарах разное количество атрибутов и товары в списке категорий начинают "плясать" , уж не говорю, когда этих самых атрибутов у товара штук 20 ))) И вот начинают сыпаться вопросы: А как вывести определенные атрибуты или атрибуты из определенной группы атрибутов и пр.... и пр.... Естественно, мудрые люди начинают давать советы и инструкции по вытаскиванию групп атрибутов или самих атрибутов по ID (писать их не стану, найти в сети их не сложно). Сегодня я Вам поведаю dfv как просто и эфективно вывести определенное количество атрибутов (будь их хоть 100 у товара) Сразу предупреждаю, что никаких сортировок, выборок и прочего, тупо вывод определенного количества атрибутов. Итак, первый шаг мы делаем аналогично выше написанному А вот вместо кода во втором шаге - пишем вот такой код с счетчиком <ul class="atr"> <?php if($product['attribute_groups']) { ?> <?php $i = 0; ?> <?php foreach($product['attribute_groups'] as $attribute_group) { ?> <?php if(!strpos($attribute_group['name'], "—")) {?> <?php foreach($attribute_group['attribute'] as $attribute) { ?> <li><span class="text"><?php echo $attribute['name']; ?></span><span class="page"><?php echo $attribute['text']; ?></span></li> <?php $i++;?> <?php if($i > 3) { ?> <?php break 2; ?> <?php } ?> <?php } ?> <?php } ?> <?php } ?> <?php } ?> </ul> Обращаю внимание на эту строчку кода <?php if($i > 3) { ?> Вот тут как раз мы и задаем сколько мы будем отображать атрибутов... практика показала, что при указании <?php if($i > 3) { ?> Выведется 4 строчки атрибутов при <?php if($i > 2) { ?> Выведется 3 строчки атрибутов. Надеюсь, что логика ясна . Ну а остальное - только ваша фантазия и умелая рука верстальщика, для придания всему этому красивого и гармонирующего с вашим шаблоном сайта вида.
 - 
	
		
		Показать/скрыть пароль
		
		По дефолту в Опенкарте, как правило, при вводе данных в поле пароля, видны только точки. Вjзьму для примера форму регистрации на сайте: не очень удобно для Ваших пользователей сайта не правда ли? Этой задачей и озадачились мои заказчики и попросили сделать отображение/скрытие значения в поле пароля, ну что же... воспользуемся "жабаскриптом". *Покажу сразу готовую конструкцию: <input type="password" name="password" id="password-show" class="modal-input" value="" placeholder="<?php echo $popup_logreg_login_password_placeholder; ?>" /> <img class="show-password" src="catalog/view/theme/default/image/eyesi.png" alt="" title="Показать/скрыть пароль" /> тут для нас значимы и необходимы id="password-show" и class="show-password" (вы можете вставлять свои, но и по аналогии поменять то же самое в скрипте, который размещаете где нибудь в конце страницы: <script> var pass = $('#password-show'); $('.show-password').click(function() { pass.attr('type', pass.attr('type') === 'password' ? 'text' : 'password'); }); </script> ну и пропишем стили (само собой они у Вас будут свои, но даю для примера) .show-password { position: absolute; right: 25px; margin-top: -18px; cursor: pointer; } получаем поле + "глазик" жамкаем на "глазик и получаем отображение пароля жамкаем повторно и снова получаем точки вместо пароля...
 - 
	
		
		Все картинки на сайте адаптивны
		
		Можно конечно каждой картинке в текстовом редакторе в режиме "источник" прописывать class="img-responsive" конечно, можно, но зачем если эта "небольшая проблемка" решается несколькими строчками "жабаскрипта": <script> $('img').each(function() { $(this).addClass('img-responsive'); }); </script> *само собой вставляем его в конец кода подвала footer перед </body></html>
 - 
	
		
		Фиксированное меню при прокрутке страницы
		
		из новинок: приблуда фиксации блока при скролле средствами css position: sticky; (дочерний блок фиксируется в пределах родительского блока ) пример 1 прикрепить элемент к верхнему краю ./КЛАСС ФИКСИРУЕМОГО БЛОКА/) { position: sticky; position: -webkit-sticky;/* Safari */ top: 0; } пример 2 прикрепить элемент к нижнему краю ./КЛАСС ФИКСИРУЕМОГО БЛОКА/) { position: sticky; position: -webkit-sticky;/* Safari */ bottom: 0; }
 - 
	
		
		Фиксированное меню при прокрутке страницы
		
		На самом деле не так страшен черт как его малюют. Приступим: Для начала обернем блок ( я от балды просто обернул код вывода меню навигации) , который надо зафиксировать при прокрутке в <div id="scroll-menu" class="default"> ... </div> Далее пишем простой ""жабаскрипт" смены класса данного блока при определенном расстоянии <script> $(document).ready(function(){ var $menu = $("#scroll-menu"); $(window).scroll(function(){ if ( $(this).scrollTop() > 100 && $menu.hasClass("default") ){ $menu.removeClass("default").addClass("fixed"); } else if($(this).scrollTop() <= 100 && $menu.hasClass("fixed")) { $menu.removeClass("fixed").addClass("default"); } });//scroll }); </script> *тут 100 - это расстояние прокрутки вверх или вниз на 100px (шапки бывают разной высоты, поэтому полной универсальности не ждите... пропишите сколько нужно) вставляем этот скрипт в шапку перед </head> Ну и стиль для фиксированного блока: #scroll-menu.fixed{ position: fixed; top: 0; z-index:99; margin:auto; width: 100% } все, господа.... просто?
 - 
	
		
		Разные шапки на главной и на других страницах
		
		og_url – url адрес текущей страницы $home – переменная содержащая ссылку на главную страницу то бишь условие <?php if ($home == $og_url) { ?> условно переведем как, "если ссылка на страницу равна ссылке на главную страницу" при таком же условии, в дистрибутиве OcStore из коробки убирается ссылка на лого на главной странице ( ссылка на странице на саму себя). Но если Вам не нравится, "курите" так: <?php if (!isset($this->request->get['route']) || (isset($this->request->get['route']) && $this->request->get['route'] == 'common/home')) { ?> <!-- здесь вставить что-то только для главной страницы --> <?php } else {?> <!-- здесь вставить что-то для всех остальных страниц, кроме главной --> <?php } ?>
 - 
	
		
		Разные шапки на главной и на других страницах
		
		Вариант 2 (полная замена шапки на главной) 1. Копируете в полном объеме header.tpl и обзываете его, к примеру header_home.tpl (естественно, в этом файле правим код под требуемый) грузим этот файлик туда же, где и первый в папку common 2.открываем файл контроллера header.php и там меняем это if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/header.tpl')) { $this->template = $this->config->get('config_template') . '/template/common/header.tpl'; } else { $this->template = 'default/template/common/header.tpl'; } на это if (!isset($this->request->get['route']) || (isset($this->request->get['route']) && ($this->request->get['route'] == 'common/home'))) { if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/header_home.tpl')) { $this->template = $this->config->get('config_template') . '/template/common/header_home.tpl'; } else { $this->template = 'default/template/common/header_home.tpl'; } } else { if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/header.tpl')) { $this->template = $this->config->get('config_template') . '/template/common/header.tpl'; } else { $this->template = 'default/template/common/header.tpl'; } } 3. идем далее в home.tpl там меняем <?php echo $header; ?> на это <?php echo $header_home; ?> Теперь у нас на главной своя шапка, отличная от шапки всех остальных страниц
 - 
	
		
		Разные шапки на главной и на других страницах
		
		Вариант1 (стандартный) Приступим к несложным махинациям и переоденем шапочку сайта других страниц кроме главной. К примеру нам нужно изменить контент в пределах <header>....</header> Идем по пути catalog/view/theme/default/template/common/header.tpl ищем <header> и перед ним вставляем <?php if ($home == $og_url) { ?> далее ищем </header> и после него вставляем <?php } else { ?> <header> Тут какой то новый контент </header> <?php } ?> *SeoPro в настройках должно быть включено обязательно! После проделанных манипуляций кэш естественно обновляем
 - 
	
		
		ОБЩЕЕ КОЛИЧЕСТВО ТОВАРА В МАГАЗИНЕ
		
		Решение простое как три рубля ( три строчки кода) итак приступим, разместим, к примеру в шапке сайта в catalog/controller/common/header.php $result = $this->db->query("SELECT COUNT(*) AS `count` FROM `" . DB_PREFIX . "product` WHERE `status` = 1"); $data['products_total_count'] = $result->row['count']; в catalog/view/theme/default/template/common/header.tpl там где хотим: <div class="statistikblock"> В настоящий момент в магазине: <span class="statistik"><?php echo $products_total_count; ?></span> товаров </div> p.s. Естественно что это упрощенный вариант для понимания и при мультиязычности сайта все тексты должны выводится языковыми переменными
 - 
	
		
		Выделяем цену товара
		
		Иногда дизайнеры "хохмят" и требуется выделить цену, оставив собственно валюту обычным шрифтом. На просторах форума и инета предлагают лезть в БД и вставлять в таблицу теги.... я б не стал ))) Вставим простой скриптик в footer.tpl <script> (function($) { $.fn.paintFirstWord= function(font) { var str = this.text(); var splited = str.split(' '); var replaced = str.split(splited[0]).join('<span style = "font-weight:'+font +';">'+splited[0]+'</span>'); this.html(replaced); }; $('.price').each( function() { $(this).paintFirstWord('700'); }); }); </script> Немного разжую чего к чему: font - это наша переменная которой мы что то там зададим в $(this).paintFirstWord(' что то тут свое '); p.s. В моем случае это - 700 $('.price').each( function() { - тут прописали класс в котором к первому элементу применится наш интегрируемый стиль p.s. В моем случае это - .price <span style = "font-weight:'+font +';">'+splited[0]+'</span> - тут пропишем интегрируемый стиль p.s. В моем случае это - font-weight: Теперь, когда Вы разобрались со скриптом, можно дерзать)))
 - 
	
		
		Запрет на добавление в корзину товара больше чем в наличии
		
		
- Вопрос по повреждённой таблице базы данных mysql
 изменил с 64 на 255 ScreenRecorderProject2.mp4- Переход на шаблон Revolution
 Все будет работать так же... не переживайте Если код счетчика Вы размещали не модулем, а напрямую кодом в файл footer, то просто перенесите его в код подвала нового шаблона - Вопрос по повреждённой таблице базы данных mysql