среда, 26 марта 2014 г.

WASS каталог товаров таблицей и всплывающие фото

1) Убираем старый файл /published/SC/html/scripts/templates/frontend/product_brief.html (для этого достаточно добавить в название old).

2) Создаем новый product_brief.html с содержанием
{* product brief view (from a category or search) *}
{if $product_info ne NULL}
{if $product_info.slug}
{assign var=_product_url value="?ukey=product&productID=`$product_info.productID`&product_slug=`$product_info.slug`"|set_query_html}
{else}
{assign var=_product_url value="?ukey=product&productID=`$product_info.productID`"|set_query_html}
{/if}
{if $widget}{assign var=_form_action_url value="&view=noframe&external=1"}{/if}
<form class="product_brief_block" action='{"?ukey=cart`$_form_action_url`"|set_query_html}' method="post" rel="{$product_info.productID}" {if $widget}target="_blank"{/if}>
    <input name="action" value="add_product" type="hidden" />
    <input name="productID" value="{$product_info.productID}" type="hidden" />
    <input class="product_price" value="{$product_info.PriceWithOutUnit|escape:'html'}" type="hidden" />
    {assign var=_cnt value=''}
 

    <table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
    {if $product_info.product_code && $smarty.const.CONF_ENABLE_PRODUCT_SKU}
    <td style="width:100px">{$product_info.product_code|escape:'html'}</td>{/if}
<td>
<img src="{$smarty.const.URL_PRODUCTS_PICTURES}/camera.png" onmouseover="TagToTip('imgTip{$product_info.productID}')" onmouseout="UnTip()">
<div id="imgTip{$product_info.productID}"><img src="{$smarty.const.URL_PRODUCTS_PICTURES}/{$product_info.picture}" /></div>
</td>
<td style="width:250px"><div class="prdbrief_name"><a {$target} href='{$_product_url}'>{$product_info.name|escape:'html'}</a></div></td>
<td><div class="prdbrief_price"><span class="totalPrice">{$product_info.PriceWithUnit}</span></div></td>
<td>{if $product_info.ordering_available && $product_info.Price>0 && ( $smarty.const.CONF_SHOW_ADD2CART eq 1 ) && ( $smarty.const.CONF_CHECKSTOCK==0 || $product_info.in_stock > 0 ) }
    <div class="prdbrief_add2cart"><input type="image" src="{$button_add2cart_small}" alt="{'str_add_to_cart_string'|translate}" title="{"str_add_to_cart_string"|translate}"
    {if $smarty.const.CONF_SHOPPING_CART_VIEW ne $smarty.const.SHCART_VIEW_PAGE && !$widget} class="add2cart_handler" rel="{if $widget}widget{/if}" {/if} /></div>
    {elseif $smarty.const.CONF_SHOW_ADD2CART eq 1 && $smarty.const.CONF_CHECKSTOCK && !$product_info.in_stock && $product_info.ordering_available}
    <div class="prd_out_of_stock">{lbl_prd_out_of_stock}</div>{/if}</td>
    {if $PAGE_VIEW ne 'mobile' &&  $product_info.allow_products_comparison && $show_comparison}  {* removed ' && $categoryID == $product_info.categoryID' *}
<td><div class="prdbrief_comparison">
        <input id="ctrl-prd-cmp-{$product_info.productID}" class="checknomarging ctrl_products_cmp" type="checkbox" value='{$product_info.productID}' />
        <label for="ctrl-prd-cmp-{$product_info.productID}">{"prd_select_to_comparison"|translate}</label></div></td>{/if}
    </tr></table>
</form>
{/if}

3) скачиваем скрипт http://www.walterzorn.de/en/tooltip/tooltip_e.htm#download
и помещаем в папку /published/SC/html/scripts/js/

4) в файле /published/SC/html/scripts/templates/frontend/category.tpl.html (+category_search.html
category_search_result.tpl.html) подключаем скрипт для работы всплывающей фотографии

<script type="text/javascript" src="/published/SC/html/scripts/js/wz_tooltip.js"></script>

5) не забываем добавить файл camera.png  в папку /published/publicdata/base_name/attachments/SC/products_pictures/

6) можно добавить заголовки у колонок

Результат (при наведении на фотоаппарат появляется превью товара, первая загруженная):
1395841207-clip-66kb

суббота, 15 марта 2014 г.

Закончен переезд сайтов!

С начала своей деятельности в сети испробовала несколько платформ для размещения статей. 4 года назад, когда только ушла в декрет начала писать статьи и размещала их на Народ.ру. Спустя 3-4 месяца Народ уже не устраивал, но деньги на хостинг тратить не хотелось и выбор пал на бесплатное размещение на платформе-конструкторе Укоз. Там немного освоилась с html и способами монетизации сайтов. Через 1.5 года этого тоже оказалось недостаточно. О недостатках Укоз я писала в этом посте.
Следующий выбор был в пользу MODx Revo. Выбирала исходя из отзывов других вебмастеров, рейтингов движков. Писали, что легок в управлении, гибкий и подходит для сложных проектов (порталы, доски объявлений и проч.). На деле же оказалось несколько тяжеловато. При том, что можно прикрутить абсолютно любой дизайн, даже содранный с другого сайта, его нужно было разбивать на чанки. Разбираться со сниппетами и плейсхолдерами. Найти приличные сниппеты даже для простой доски объявлений оказалось затруднительно. Окончательно подорвало веру в движок то, что из-за неверной генерации ссылок разрослась структура у сайтов и это сильно понизило их в выдаче. 
Теперь я перевела все сайты на Drupal 7. В отзывах было, что он сложный для начинающих. Но по факту мне с ним на порядок проще работать, чем с MODx. 
Сегодня переношу последний сайт. Он прошел весь этот путь, т.к. он был самый первый.
Все эти переезды и смены урл страниц его постоянно подкашивали. 2 раза терялся ТИЦ, посещаемость падала до 10 чел. в сутки.
Надеюсь это всё!
Ненавижу переезды как в жизни, так и в виртуале. Геморно, хлопотно и где-то ложки потеряешь.

четверг, 6 марта 2014 г.

Drupal 7 похожие материалы к статье без заморочек

Искала возможность вывести похожие материалы к статье и встречала разные модули и настройки к ним. В частности поставила Views, но не подружилась с ним, т.к. по мануалу все настроила, 3 ссылки на статьи получила, но они были везде одинаковые. Может у меня руки не правильно приделаны)
Но вот нашла вполне подходящий и легкий способ. С помощью сниппета
В файл template.php вашей темы нужно вставить этот код:

function [THEMENAME]_preprocess_node(&$vars) {
  if (!$vars['page'] || !$vars['node'] || !isset($vars['field_tags']) || !count($vars['field_tags'])) {
    return;
  }
 
  $tids = array();
  foreach ($vars['field_tags'] as $tag) {
    $tids[] = $tag['tid'];
  }
 
  $query = db_select('node', 'n');
  $query->fields('n', array('nid', 'title'));
  $query->addExpression('COUNT(*)', 'hits');
  $query->leftJoin('taxonomy_index', 'ti', 'n.nid = ti.nid');
  $query->condition('n.type', $vars['type']);
  $query->condition('n.status', NODE_PUBLISHED);
  $query->condition('ti.tid', $tids, 'IN');
  $query->condition('n.nid', $vars['nid'], '<>');
  $query->groupBy('n.nid');
  $query->orderBy('hits', 'DESC');
  $query->orderBy('n.created', 'DESC');
  $query->range(0, 3);
 
  $vars['content']['similar'] = node_title_list($query->execute(), 'Похожие материалы');
  $vars['content']['similar']['#weight'] = 2;
}
При этом [THEMENAME] нужно заменить на название вашей темы, а field_tags на ваш словарь таксономии.
И еще у меня в этом файле уже был кусок кода с function [THEMENAME]_preprocess_node(&$vars) и чтобы не вышло ошибок и пустого листа нужно вставить дополнение после окончания того куска. И удалить закрывающую скобку того куска и у вставляемого удалить function [THEMENAME]_preprocess_node(&$vars) {
Надеюсь понятно)

суббота, 1 марта 2014 г.

Итоги февраля 2014

ПРИХОД:
Google Adsense 1,50 $
Mainlink.ru  40,88 руб.
Liex.ru - 0.05 $ (перестали поступать заявки на временное размещение статей).
Партнерка интернет-магазина товаров для ремонта -
RotaBan - 

Биржа контента Etxt (реф) 36,07 руб.
РАСХОД:
покупка статей 61,62+94,43+197,6+133=289,05 руб.

среда, 8 января 2014 г.

Drupal обновление ядра

Вот опять пришло письмо от том, что "Доступно обновление для используемой версии Drupal. В интересах надёжности работы сайта, следует обновить систему как можно скорее."
Дело в том, что Друпал постоянно развивается и обновляется не смотря на то, что на бесплатный и открытый. Drupal это труд множества разработчиков, программистов, дизайнеров по всему миру.
Теперь приступим к самому процессу обновления... (кст данный процесс подходит только для обновления между релизами. Напимер, с 7.24 на 7.25, но не переход на новую версию, например, Drupal 8)
1) Если обновление делается на рабочем сервере, то прежде чем начать рекомендую сделать резервную копию баз данных.
2) Переводим сайт в режим обслуживания Главная » Управление » Конфигурация » Разработка
3) Скачиваем движок по ссылке, которая находится в 
Главная » Управление » Отчёты » Доступные обновления
4) Распакуйте скачанный архив
5) Замените все файлы на сервере на новые через ftp (я не обновляю robots.txt и .htacces)
6) Заходим в Главная » Управление » Отчёты » Доступные обновления и видим надпись
Все ваши модули и темы оформления актуальны.
Happy end!

P.S.  у меня на одном движке установлено несколько сайтов и при заходе в Доступные обновления по второму адресу также видим, что Все ваши модули и темы оформления актуальны.
А в отчете о состоянии видно, что стоит Drupal 7.25

Вы здесь

среда, 1 января 2014 г.

Меняем созданные материалы на ходу

Изначально на сайте создавала страницы с данными с Типом содержимого Article, но после мне понадобилось вставить туда карту Яндекс и я установила модуль Карты Яндекс для Drupal.
Модуль очень удобный и полезный.
Но... встала проблема, что же делать с уже созданными 42 страницами, ведь в них нужно вставить карту.
Вариант 1: как показано на видео добавить в статью значение тега TAG FOR INSERT IN ARTICLE (Конфигурации -> Яндекс карты для Drupal! -> Редактирование карты
{modmapyandex_id=n} вставляется в текст статьи при выбранном Full HTML.
Однако до этого эту карту еще нужно создать.

Вариант 2: В MySQL изменить тип содержимого в таблице Node с article на yandexmap
В таблице ymap сделать копии строк и подставить туда нужное содержимое адреса и названии карты, а также изменить в конце nid на айди страницы, к которой прикрепляется карта (если не пользуетесь синонимами урл, то видно в адресной строке).

Кст. Удобно заменять ссылки в каком-либо поле.
UPDATE имя-таблицы SET имя-поля =
REPLACE(имя-поля, 'что ищем',   'на что заменяем');
В моем случае
UPDATE 'node' SET 'type' =
REPLACE(type, 'article',   'yandexmap');

Скрываем надоевшие предупреждения Notice и Warning на Drupal 7

Эти сообщения являются не ошибкой, а лишь предупреждениями и уведомлениями для программиста. В процессе работы готового сайта они не нужны и их можно отключить.
Для отключения этих сообщений необходимо правильно настроить PHP. Существует несколько способов как это сделать.
Изменение параметра error_reporting в php.ini
Изменить уровень вывода ошибок можно в файле php.ini (конфигурационный файл PHP). Для этого необходимо найти в файле php.ini параметр error_reporting и установить значение E_ERROR. Например, вот так:
error_reporting = E_ERROR
Использование .htaccess
На удаленном сервере, поддерживающем .htaccess можно изменить уровень вывода ошибок добавив в файл .htaccess, расположенный в корне сайта, следующую строчку:
php_value error_reporting 1

НО... в Drupal7 все это сделать еще проще!!!
Заходим в Конфигурации и в разделе Разработка открываем ссылку Логи и ошибки. Ставим указатель на слово "нет" и сохраняем настройки. Вуаля и никакие хвосты не мозолят глаза!