В новой версии VM убрали возможность устанавливать отправку
писем покупателю при статусе заказа «В ожидании» (pending). Разработчики
вообще убрали статус «в ожидании» с отправки писем покупателю. Причина
этому есть, объяснять не буду, кому интересно, можно посмотреть форум поддержки
Для решения проблемы достаточно в способе оплаты поставить любой из оставшихся статусов заказа…
Рубрика: joomla
Убираем вывод категорий при поиске в Virtuemart 3
templates/шаблон/html/com_virtuemart/category/default.php
Примерно 43 строка:
// Show child categories
if (VmConfig::get (‘showCategory’, 1) and empty($this->keyword)) {
if (!empty($this->category->haschildren)) {
echo ShopFunctionsF::renderVmSubLayout(‘categories’,array(‘categories’=>$this->category->children));
}
}
Ахалай, махалай:
$search=$_GET[‘search’]; //читаем переменную $search
if ($search != «true») { //если $search есть, а при поиске она есть и равна «true», категории не выводим
// Show child categories
if (VmConfig::get (‘showCategory’, 1) and empty($this->keyword)) {
if (!empty($this->category->haschildren)) {
echo ShopFunctionsF::renderVmSubLayout(‘categories’,array(‘categories’=>$this->category->children));
}
}
}
Обозначенный метод тестировался так же с модулем Virtuemart Param Filter — прекрасно работает.
Нет повести печальнее на свете. Как лечить взлом сайта — продолжение.
История. Звонит клиент, при заходе на часть страниц сайта, Аваст ругается на малваре. При этом остальные антивирусы молчат.
Полез разбираться, полуавтоматом просканировал код сайта, ничего не
нашел. Полез смотреть в код страницы, опять ничего подозрительного. Уже
начал ругать Аваст, а зря. Как выяснилось, зловредный код прятался в
статьях и модулях джумлы. Что само по себе необычно, т.к. последствия
взлома обычно вылезают в других местах.
В итоге подозрения пали на дворецкого прошлого
менеджера, который ушел не очень красиво и после которого естественно
никто не сменил пароли. И который накидал со злости навоза гадости в материалы и текстовые модули.
Лечение свелось как обычно к обновлению системы, смене логинов-паролей
ко всему и чисткой дампа базы от зловредных кодов и ссылок на порнуху.
Кстати, мегаполезный инструмент: http://antivirus-alarm.ru Сканирует страницы по разным вирусным базам (и Авастовской тоже).
Рекомендую.
Как повесить на сайт виджет booking.com
Бился, бился, так и не нашел родного генератора виджетов booking.com без регистрации и смс.
В итоге пришлось руками лезть в код более удачливых коллег. Результат:
<script>
(function() {
var randomId = Math.floor(Math.random() * 100000);
var targetElemId = ‘bcom_rwidget_’ + randomId;
document.write(‘
‘);
var script = document.createElement(‘script’);
script.type = ‘text/javascript’;
script.async = true;
script.src = ‘http://www.booking.com/review_widget/ru/hostel-provans.ru.html?tmpl=review_widget/review_widget&wid=’ + targetElemId + ‘&wtype=box_big&hotel_id=505241&widget_language=ru’;
var node = document.getElementsByTagName(‘script’)[0];
node.parentNode.insertBefore(script, node);
}());
</script>
hostel-provans.ru — урл сайта отеля, он же есть в урл карточки отеля на букинге.
hotel_id=505241 — ID отеля, можно взять в коде страницы отеля. Так и ищется по hotel_id
С tripadvisor повезло больше:
http://www.tripadvisor.ru/Widgets-g298529-d4415667-c6-a_widgetKey.selfserveprop-Provence_Hostel-Novosibirsk_Novosibirsky_District_Novosibirsk_Oblast_S.html
Фавиконки. Favicon.ico, что может быть проще, что может быть сложнее.
Прочитав пост на хабре про фавиконки. 100500 размеров фавиконок, внезапно понял, что упустил эту тему из вида и безнадежно отстал со своим стареньким сниппетом кода, вставляемом во все проекты:
Небольшое резюме статьи:
1. В тренде PNG, т.к. формат ICO если еще не умер, то уже скоро.
2. Размер 16х16 уже не в тренде. Вернее в тренде только для десктопных браузеров, но не для тв, смартфонов и прочего популярного зоопарка техники.
Добавлю от себя. Для экономии времени можно использовать генераторы фавиконок. Например http://realfavicongenerator.net На выходе получаем готовый код и набор фавиконок топовых размеров. Картинки лучше просмотреть руками. Если результат не очень, можно внести правки в исходник и перегенерировать заново или перерисовать руками.
Вспомнился мне чего-то цирк 5,6,7,… летней давности про геморрой с версткой под разные браузеры. Видимо и тут в итоге будет один формат. Хочется верить.
Респонсив помогает экономить на хостинге и зарабатывать больше денег.
За последние 3 месяца у клиентского интернет магазина,
значительно вырос трафик с контекста и органической выдачи поисковиков.
Выросло и потребление ресурсов хостинга. Мой любимый timeweb не долго это терпел, прислал предупреждение (за что их люблю — заботятся о клиентах).
После исследования проблемы и оптимизации ресурсов, сэкономил для клиента 6т.р. в год на переходе на новый тарифный план.
Оптимизировал скорость загрузки интернет магазина.
Тут, куда не посмотри, кругом одни плюсы:
+ Лишних денег за дорогой тариф платить не надо;
+ Сайт начал грузиться быстрее — хорошо для посетителей — комфортнее пользоваться сайтом — удобнее покупать;
+ Быстрее грузится — лучше поведенческие факторы — seo работает эффективней — больше посетителей.
Оптимизируем скорость загрузки Joomla
Основной принцип оптимизации — убить то, что можно убить (JS, CSS, картинки, лишний код). То, что убить нельзя — подрезать по максимуму.
CSS — оптимизировать, минимизировать, сократить число файлов стилей (читай обращений к серверу). Часть CSS, отвечающую за отрисовку первого экрана, вытащить из подгружаемых файлов и вставить в шаблон.
JS — минимизировать и оптимизировать способ подгрузки.
Картинки используемые для шаблона, по возможности засунуть в спрайты, все картинки ужать по максимуму.
Грузим JS асинхронно. Есть готовый халявный плагин: смотреть-качать. В настройках прописываем относительные урлы js (можно скопировать из кода страницы), которые надо грузить асинхронно.
Если какие-то библиотеки вовсе не нужны для работы, их можно отрубить через шаблон:
перед:
<jdoc:include type=»head» />
вставляем:
<?php
unset($this->scripts[$this->baseurl.’ОТНОСИТЕЛЬНЫЙПУТЬ_ДО_JS’]);
?>
Например:
<?php
unset($this->_scripts[$this->baseurl.’/media/system/js/mootools-more.js’],
$this->_scripts[$this->baseurl.’/media/system/js/modal.js’]);
?>
Оптимизируем css http://habrahabr.ru/post/244815/
Как оптимизировать картинки — вагон мануалов, софта и онлайн-сервисов.
Для оценки проделанной работы, 2 основных инструмента:
webpagetest.org
developers.google.com/speed/pagespeed/insights
Очень рекомендую: Видео с доклада Виталия Фридмана «Responsive Web-дизайн: Трюки и уловки»
Лечение проблемы в таблице MySQL Joomla jos_session (jos session)
1. REPAIR TABLE jos_session обычно решает проблему.
2. Для профилактики можно сделать TRUNCATE TABLE jos_session;
+ рецепт из сети, сам не тестировал, надобности не было.
Если авторизация не используется, можно поставить тип для jos_session -> memory.
jos_session таблица хранится с использованием механизма хранения MyISAM — давайте хранить эту таблицу в памяти с помощью двигателя MEMORY хранения!
Для начала нам нужно изменить тип данных поля, так как двигатель MEMORY хранения не поддерживает BLOB / TEXT столбцы:
ALTER TABLE `jos_session` CHANGE `data` `data` VARCHAR( 5000 )
CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
5000 символов, как правило, достаточно для обработки данных сессии. Теперь давайте изменим двигателя:
ALTER TABLE `jos_session` TYPE = memory
MEMORY MySQL система хранения гораздо быстрее, чем MyISAM. Единственное, что сессии будут потеряны, если сервер не работает — но в 99,9999999999999999999% вам не нужно думать об этом, пользователи достаточно повторно Войти.
http://www.wilox.ru/joomla/oshibka-v-tablice-joomla-jos_session-jos-sessionustranenie-i-eyo-vosstanovlenie-v-mysql.html
Меняем порядок сортировки товаров в категории Virtuemart 2
administrator/components/com_virtuemart/models/product.php
Исправить ASC НА DESC в строке 127
Код:
$filter_order_Dir = strtoupper(JRequest::getWord(‘order’, ‘ASC’));
на
Код:
$filter_order_Dir = strtoupper(JRequest::getWord(‘order’, ‘DESC’));
«500 — JHtmlContent: :prepare» при публикации модуля новостей
Причину не нашел, но лекарство есть:
modules/mod_articles_news/helpers.php
закомментировать строчку:
$item->introtext = JHtml::_(‘content.prepare’, $item->introtext, », ‘mod_articles_news.content’);