Как повесить на сайт виджет 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’);

Virtuemart2 добавление бейджиков «Распродажа», «Скидки», «Новинка»…

В таблицу _virtuemart_products, добавляем поле с аналогичными атрибутами как и у product_sku с именем product_badge

============================

Складываем в папку images картинки
new.png
hot.png
sale.png

============================

administrator\components\com_virtuemart\views\product\tmpl\product_edit_information.php строка 48 или около того

<tr>
<td width=»21%» >
<div style=»text-align:right;font-weight:bold;»><?php echo «badge» ?></div>
</td>
<td width=»79%» height=»2″>
<select size=»3″ name=»product_badge» id=»product_badge»>
<option <?php if («$product->product_badge» == «0») { echo «selected»; } ?> value=»0″>-</option>
<option <?php if («$product->product_badge» == «new») { echo «selected»; } ?> value=»new»>NEW</option>
<option <?php if («$product->product_badge» == «sale») { echo «selected»; } ?> value=»sale»>SALE</option>
<option <?php if («$product->product_badge» == «hit») { echo «selected»; } ?> value=»hit»>HIT</option></select>
</td>
</tr>

============================

administrator/components/com_virtuemart/tables/products.php ]

вставляем
var $product_badge= »;

после
var $product_sku= »; (в последних версиях VM var $product_sku= null;)

============================

В шаблон категории default.php

В то место, где надо вывести бейджик:

<?php if («$product->product_badge» > «0») { ?>
<img class=»badge» src=»images/<? echo $product->product_badge; ?>.png» width=»95″ height=»25″ />
<?php } ?>

============================

css по вкусу

Как снять ограничение у настраиваемых полей Virtuemart 2

Ограничение в 255 символов на список значений в настраиваемых полях, снимается в 2 шага:

administrator\components\com_virtuemart\helpers\html.php

public static function input($name,$value,$class=’class=»inputbox»‘,$readonly=»,$size=’37’,$maxlength=’255′,$more=»){

255 поменять на нужное значение.

+ надо поправить поле custom_value в таблице _virtuemart_customs

Лечение проблемы Virtuemart с пропадающими ценами.

administrator\components\com_virtuemart\tables\product_prices.php

в функцию «__construct(&$db)»

Вместо:
$this->setPrimaryKey(‘virtuemart_product_price_id’);

Поставить:
$this->setPrimaryKey(‘virtuemart_product_id’);

Глюк проявляется на ранних версиях VM 20.0.20