четверг, 20 ноября 2014 г.

Дерево категорий с раскрытыми 2 уровнями + скрытие определенной категории вместе с ее подкатегориями

Цель увидеть раскрытым category_tree со 2м уровнем и не видеть техническую категорию, в которой находятся товары, готовящиеся к добавлению или снятые временно с витрины.

1. Удаляем все из файла category_tree.html и пишем там

{newtree}

Затем в папке /kernel/includes/smarty/plugins создаем файл function.newtree.php, в котором пишем:

<?php
  function smarty_function_newtree($params, &$smarty){
$disp='';
  $disp.='<ul>';
  $sql='SELECT categoryID, slug, parent, '.LanguagesManager::sql_prepareField('name').' AS name from '.CATEGORIES_TABLE. ' where parent=1 AND is_hidden=0 order by sort_order,name';
  if($r=mysql_query($sql))
  while($res=mysql_fetch_assoc($r)){
  $disp.='<li class="parent';
  if($_GET['categoryID'] == $res['categoryID']) $disp.='_current';
  if($res['slug']!='')
  $disp.='"><a class="l1" href="/category/'.$res['slug'].'/">'.$res['name'].'</a>';
  else
  $disp.='"><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';
  $disp.=subcat($res['categoryID']).'</li>';
  }
$disp.='</ul>';
  return $disp;
  }

function subcat($parid){
  $disp='';
  $sql='SELECT categoryID, slug, parent, '.LanguagesManager::sql_prepareField('name').' AS name from '.CATEGORIES_TABLE. ' where parent='.$parid.' order by sort_order, name';
  if($r=mysql_query($sql)){
  $disp.='<ul>';
  while($res=mysql_fetch_assoc($r)){
  $disp.='<li class="child';
  if($_GET['categoryID'] == $res['categoryID']) $disp.='_current';
  if($res['slug']!='')
  $disp.='"><a href="/category/'.$res['slug'].'/">'.$res['name'].'</a>';
  else
  $disp.='"><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';
  $disp.=subcatt($res['categoryID']).'</li>';
  }
  $disp.='</ul>';
  }
  return $disp;
  }

function subcatt($parid){
$sql2='select parent from SC_categories where categoryID='.$_GET['categoryID'];
if($r2=mysql_query($sql2)){
   $res2=mysql_fetch_assoc($r2);
  $disp='';
  $sql='SELECT categoryID, slug, parent, '.LanguagesManager::sql_prepareField('name').' AS name from '.CATEGORIES_TABLE. ' where parent='.$parid.' order by sort_order, name';
if($r=mysql_query($sql)){
  $disp.='<ul>';
  while($res=mysql_fetch_assoc($r)){

  if($res2['parent']==$parid || $_GET['categoryID'] == $res['parent'] ) {
  $disp.='<li class="children';
  if($_GET['categoryID'] == $res['categoryID']) $disp.='_current';
  if($res['slug']!='')
  $disp.='"><a href="/category/'.$res['slug'].'/">'.$res['name'].'</a>';
  else
  $disp.='"><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';
  $disp.=subcatt($res['categoryID']).'</li>';

}
  }
  $disp.='</ul>';
  }
  return $disp;
  }}
?>

2. для скрытия категории необходимо сделать

в published/SC/html/scripts/templates/backend/category.html

Код:

<tr>
    <td class="lcolumnr">{"is_hidden"|translate}:</td>
    <td><input type="checkbox" class="checknomarging" name="is_hidden" value="1" {if $CategoryInfo.is_hidden eq 1} checked="checked"{/if}/></td>
</tr>

создать в SC_categories колонку is_hidden со значением по умолчанию 0

Далее для сохранения изменений
нужно в published/SC/html/scripts/modules/test/_methods/b_category_settings.php где-то 113 строчка дописать$categoryEntry->is_hidden = $this->getData('is_hidden');
в массив $categoryEntry = new Category;

чтобы получить is_hidden в шаблон, чтоб работать с ним, нужно заменить в published/SC/html/scripts/core_functions/category_functions.php в функции function catGetSubCategoriesSingleLayer( $categoryID ) вот на этот запрос:

Код:

$q = db_query("SELECT categoryID,is_hidden, ".LanguagesManager::sql_prepareField('name')." AS name, products_count, slug FROM ".
            CATEGORIES_TABLE." WHERE parent='$categoryID' order by sort_order, name");

суббота, 11 октября 2014 г.

Опыт продвижения бизнес-портала

Пару месяцев назад задалась целью продвинуть свой бизнес-портал по строительству и ремонту. В целом задача это была непростая, т.к. портал ранее не продвигался и тематика очень конкурентная, но рекламное агентство Аригано справилось даже с этим.
Обратилась к ним по рекомендации знакомого айтишника, который заказывал у них создание бизнес-портала. Так они зная специфику работы с многостратичными бизнес-порталами подобрали индивидуальную программу продвижения по среднечастотным запросам, дали дельные советы по юзабилити (более понятное меню навигации, более компактная верхняя часть страницы и др.).
Сейчас продвигают несколько десятков ключевиков. Из них половина уже показывает хороший результат (хотя прошло только 2 месяца), что не могло не сказаться на росте трафика.

воскресенье, 14 сентября 2014 г.

День рождения для детей

В конце августа у  моей старшей дочери был День рождения. Ей исполнилось 4 года. Особой подготовки к празднеству не было. Мы сходили с друзьями и их дочкой в детский развлекательный центр.
А вот следующий первый маленький юбилей стоит отметить уже более основательно. При этом нужна качественная организация детского праздника, которую может обеспечить только крупная и хорошо зарекомендовавшая себя фирма, вроде такой как "Царский кейтеринг". Кстати, у них есть прекрасная идея - отметить день рождения на природе. Такой вариант идеален для летнего праздника. На свежем воздухе много места для игр и забав, никто не стеснен в движениях и кричать, хохотать и смеяться можно вдоволь.
Если брать во внимание перечень услуг агентства по организации праздников, то взрослым вообще можно расслабиться и отдаться веселью вместе с малышами, ведь на такой пикник можно заказать гриль меню и заказать аренду посуды, а также барбекю.
Доверить проведение праздника профессионалам считаю разумным выбором. Это позволит сохранить свои нервы, силы и гарантированно получить незабываемую атмосферу веселья.

суббота, 13 сентября 2014 г.

Нужные запросы в MYSQL

Подставить значение "0" в столбец, если в нем что-то указано
UPDATE `таблица` SET `столбец`=0 WHERE 1

Удалить все товары в Корне
DELETE FROM `SC_products` WHERE `categoryID` =1

Скрыть все товары в Корне
UPDATE `SC_products` SET `enabled` =0 WHERE `categoryID` =1

пятница, 5 сентября 2014 г.

Развитие сайтов - 4 мес. после старта

Старт с исходными данными здесь

Сейчас положение такое
СайтТИЦPRПосещаемостьЦель на 1 год
Сайт 1 заработок в декрете02будни 25 (-25), выходные 10 (-10)700
Сайт 2 региональный сайт о детских садах00будни 140 (+125), выходные 45 (+37)420
Сайт 3 строительная тематика000-3350 
Сайт 4 для женщин011-3100
Сайт 5 рецепты из морепродуктов001-3100
Пришлось сменить домен у строительного сайта, т.к. по неопытности приобрела б/у домен с плохой как оказалось историей за 3 года до моей покупки. Результат плохой истории - сайт под фильтром. Кст, по этому его изначально Яндекс не индексировала, а прошедшая в мае индексация всех страниц это лишь изменение правил. С мая сайты под фильтром участвуют в поиске, но это не вывод из под фильтра и ТИЦ у такого сайта будет -2. Т.ч. заработать на таком сайте много не получится, а выводить из под фильтра посчитала себе дороже.

Сайт о заработке для женщин в декрете за это время потерял ТИЦ и просел в выдаче, что конечно же сказалось на посещаемости.

Сайт о садиках наоборот удивил ростом, за счет 3 удачных новостей.

Есть место еще под 1 сайт, но пока не определилась с тематикой.

Сменила хостинг Джино на более выгодный

Кто ищет выгодней, тот всегда найдет...
Пришло время платить за хостинг на Джино, на нем было 2 сайта (+1 свободное место на 1 сайт). Оплата в месяц был небольшой 150 р/мес за виртуальный хостинг с mysql и php, но как оказалось есть еще меньше.
На тех же условиях Mchost стоит на 30% дешевле - всего 109 р/мес. А учитывая, что при переносе к ним сайтов и при наличии промо-кода можно получить 3 месяца бесплатного хостинга, то это ну очень уж заманчивое предложение от которого не откажешься.
К тому же, меня порадовала служба поддержки через онлайн чат. Общение было приятным и быстрым.

понедельник, 1 сентября 2014 г.

Итоги за август 2014 г.

ПРИХОД:

Google Adsense 6,54 (+0,54) $ = 229 руб.
Mainlink.ru 9,77 (-1,37) р. и 0,43 (-0,25) $ = 24,82 (-10,12) руб. 
Sape 91,77 (-2,14) руб.
RotaBan -
Биржа контента Etxt (реф) - 
РАСХОД:
домены - 370 р.

пятница, 1 августа 2014 г.

Итоги июль 2014 г.

ПРИХОД:

Google Adsense 6 (+1,72) $ = 210 руб.
Mainlink.ru 11,14 р. и 0,68 $ = 34.94 (-0,3) руб. 
Sape 93,91 (-12,58) руб.
RotaBan -
Биржа контента Etxt (реф) - 3.75 руб.
РАСХОД:
нет

среда, 2 июля 2014 г.

Итоги за июнь 2014г

ПРИХОД:

Google Adsense 4,28 (+1,44) $ = 149,8 руб.
Mainlink.ru 11,44 р. и 0,68$ = 35.24 (+11,52) руб. 
Sape 106.49 (+87.24) руб.
RotaBan -
Биржа контента Etxt (реф) - (-8.49) руб.
РАСХОД:
-

За месяц на примере 1 сайта с тиц 10 и pr2 стало видно, что переход на Sape выгодно. На Майнлинк это сайт в месяц получал около 30-35 руб. при установке 20-30 ссылок на сайте, а на Sape около 100 руб при установке 7-9 ссылок.

Решила попробовать инвестиции в ПАММ-счета. В июне "вложила" целых 300 руб., чтобы посмотреть как это работает. 
FXopen был выбран для старта, но у них замороченная система верификации. Нужен скан паспорта (ладно) и квитанция об оплате ЖКХ, связи из банка, где виден ваш адрес проживания (на хрена?! ну не плачу я в арендуемой квартире ЖКХ через банк, тут вообще ТСЖ с кассой). В общем в топку.
В итоги выбрала Alpari - также есть ПАММы с низким входом и никакой верификации.

воскресенье, 8 июня 2014 г.

Зеленая зима в Сибири

Абсолютно не радует сибирское лето. Скоро середина июня, а снимать куртки все еще не хочется из-за прохлады и периодических дождей.
Традиционно в июне уже открывался купальный сезон. Люди косяками тянулись к Оби и другим водоемам. Сейчас же по берегам топчутся разве что рыбаки одетые как полярники на севере. Даже в прогнозе погоды не указывают температуру воды в Оби и Обском водохранилище, дабы не пугать людей.
А ведь в прошлом году мы в июне семьей выбирались на пикник на Зеленый мыс. Сами не купались, но по соседству размещалась семья, которая привезла на прицепе гидроцикл. На гидроцикле катались то мама, то папа с дочерью. При этом никто не ежился от холода. Забавно было наблюдать как визжит девчонка лет 8-9 от скорости и брызг.
В этом же году сезон активного отдыха явно смещается на вторую половину лета. Ни лодок, ни катеров, ни тем более гидроциклов на воде пока не увидишь.

воскресенье, 1 июня 2014 г.

Итоги мая 2014 г

ПРИХОД:

Google Adsense 2,84 (-1,01) $ = 99,4 руб.
Mainlink.ru 23.72 (-34.68) руб. оставила только сайты с ТИЦ менее 10 и поэтому доход упал
Sape 19.25 руб. пошли первые заявки. Цены существенно выше, чем в Майнлинк. Т.ч. здесь ожидаю увеличение в след.месяце
RotaBan -
Биржа контента Etxt (реф) - 8.49 (-6,89) руб.
РАСХОД:
недорогой хостинг - 250 руб. (на ~2 мес)

пятница, 23 мая 2014 г.

Май пора пикников и шашлыков

В России традиционно открытие дачного сезона отмечается пикником на улице и ароматными шашлыками. Наша семья тоже не пропускает это событие и в эти мы планировали устроить на даче пикничек на свежем воздухе.
Тут правда вышла заминка, т.к. старый мангал прохудился и ремонту уже не подлежал (кст. он был допотопный и простой как 3 рубля). Поэтому пришлось озадачиться поиском нового мангала для чего я первым делом залезла в интернет. В процессе поиска меня привлекли мангалы и наборы для каминов в магазине region-peterburg.ru. Там было из чего выбирать и стационарные мангалы, и мобильные мангалы на колесиках. Кстати, последний очень удобен в использовании, ведь во время жарки бывают случаи, когда его нужно срочно перенести в другое место. Например, мешает проходу или пошел дождь. А эту модель достаточно просто перекатить в другое место или под навес, чего не сделаешь с мангалом, который втыкается в землю.
Еще одним продуманным усовершенствованием считаю полочку для дров и столешницу. Вот этого точно не хватало раньше. Приходилось городить городушки возле мангала, что-то падало, что-то проливалось.
Так что, после недолгого совещания сделали выбор в пользу дачного мангала на колесиках с деревянным столом
  

суббота, 17 мая 2014 г.

А чулок может быть надежней?

Проблема когда денег нет, но их не меньше когда они появляются!Имея хоть небольшое сбережение хочется его сохранить и желательно приумножить, да так, чтобы инфляция не "съела". И вот тут-то проблемы и начинаются.
Как и большинство россиян я мало знакома с финансовыми инструментами и самым доступным и понятным остается банк. Так накопив копеечку я иду в банк и открывают вклад. Вроде бы хеппиэнд, но судя по последним новостям http://bank-kredit24.ru/u-banka-navigator-otozvali-liczenziyu.html все большее количество банков лишается лицензии. При таком несчастливом исходе в случае если в банке вклады застрахованы сумму вклада в пределах страховки вернут (а вот ожидаемые проценты вряд ли). Ну а если не застрахованы, то вообще можно попрощаться с деньгами.
Таким образом, даже такой способ сохранения сбережений не самый надежный и тоже требует держать руку на пульсе событий.
Так на сайте bank-kredit24.ru можно ознакомиться со всеми новостями об отзыве лицензий у банков.

среда, 14 мая 2014 г.

Деньги где вы?!

Не знаю как у вас, а у меня создается впечатление, что они меня боятся и обходят стороной. Доход на сайтах падает не успев еще подняться. Прошедшие 2 месяца на Гугле был хороший рост дохода, я аж обрадовалась, что если так каждый месяц будет прибавляться, то цели из прошлого поста станут уже более достижимыми.
Ан нет...
В этом месяце на сегодняшний день - 65 % доходности по сравнению с прошлым. Лиды есть, а кликов нет.
С этим нужно что-то делать, хоть оккультизмом или фен-шуем заманивать)))
Нашла статейку на тему фен-шуй для привлечения денег и стала искать где же я нагрешила и что упустила.
1. уважительное отношение к деньгам (не то слово, даже копейки не выбрасываю)
2. умение их считать (ага и недосчитываться тоже)
3. кстати, прикольно совпало мой кошелек красного цвета, как раз для тех, чей год рождения оканчивается на 6 (фуф муж не прогадал с подарком)

Нужно сделать:
1. найти крайний левый угол помещения и поставить туда кружку с монетками
2. повесить ту даже хотя бы искусственную лозу винограда
3. выбросить сломанную бытовую технику и мебель (проблематично, пока живем на съемной квартире - это барахло неприкосновенно)
4. уходя из дома оставлять 1 купюру в прихожей под зеркалом, так чтобы отражалась)

В общем делать не переделать)

понедельник, 5 мая 2014 г.

Не хватает посетителей на сайте или как увеличить посещаемость сайта? (Старт май 2014)

Мои сайты, как и мои доходы замерли...
Из 5 сайтов посещаются хоть как-то только 2 сайта и то у обоих непробиваемый потолок в 15 и в 50 человек. Выше никак не поднимается. Эти редкие гости еще и по рекламе Гугл иногда нажимают, но CTR всего 1,19% цена за клик 0,12$  и 30 кликов (за последние 30 дней).

Исходные данные
ТИЦPRПосещаемостьЦель
Сайт 1 заработок в декрете102будни 35-50, выходные 10-20700
Сайт 2 региональный сайт о детских садах и центрах развития00будни 8-15, выходные 2-8420
Сайт 3 строительная тематика01посещаемость плачевная 1-4350 

Третьим добавила еще 1 сайт, его наконец-то спустя 1 год! увидел Яндекс. Вообще странно, материал уникальный, без рекламы, а в течение года 1-2 страницы в поиске, а вот сейчас уже прорыв - 17 страниц (ттт надеюсь будет расти). Кст, у Гугла все ОК, там даже PR 1 присвоили, а страниц 30.

Т.о. чтобы получать ежемесячно чек о Гугла нужно в день в среднем 3,33 $ = 28 кликов = около 2500 просмотров или при текущей глубине просмотра 1,7 - 1470 посетителей в день!!!

Итог один - чтобы увеличить доход нужно увеличить посещаемость!

среда, 30 апреля 2014 г.

Мне еще в кружок по фото...

Мне с детства нравится фотографировать, еще с тех пор как папа дал мне сделать первый кадр на пленочном черно-белом "Зените". Но так сложилось, что в детстве кружков по фото рядом не было, а уже будучи взрослой все не находится времени.
Фотографии, которые делаю сейчас на телефон это моветон и безвкусица. А ведь на них запечатлеются лучшие моменты жизни - взросление моих детей. Девочки растут быстро, а вот хороших кадров для детских альбомов очень мало.
Поэтому решила воскресить свое хобби и обзавестись хорошим фотоаппаратом (что выбрать почитала совет здесь) и получить навык обращения с ним. На сайте, который мне порекомендовали друзья есть много видеоуроков и курсов, как платных, так и бесплатных. Мне для начала подошел курс «5 секретных шагов к великолепной фотографии».
Как освою его, так напишу новый пост.

Итоги апреля 2014 г

ПРИХОД:

Google Adsense 3,85 (+1,69) $ = 138,6 руб.
Mainlink.ru 58,4 (-4,08) руб.
RotaBan -
Биржа контента Etxt (реф) - 15,38 руб.
 
РАСХОД:
домены - 0 руб.

четверг, 3 апреля 2014 г.

Еще немного о том, чем я занимаюсь в Интернет


http://superhappy.ru/kak-sovmestit-semyu-i-rabotu-na-domu-intervyu.html

Спасибо Марии Хайнц за проявленный интерес)

Реанимируем Менеджер Фото при переходе на PHP 5.3

При переходе хостинга на php 5.3 вылезла
1я ошибка
Deprecated: Function split() is deprecated in
это скорее даже предупреждение что функция split() больше не поддерживается и ее нужно заменить на preg_split ()
Для этого открываем файл published/SC/html/scripts/tinymce/plugins/images/connector/php/index.php
и все найденные split меняем на preg_split

2я ошибка
Notice: Undefined index: JPG Support in
не знаю насколько верно, но включила расширение * в настройках модуля php v5.3. Оно позволяет работать с мета-данными jpeg- и 
tiff-изображений

3я ошибка
Fatal error: Image: Imagetype (jpg) not supported for reading. in
нужно внести изменения в файл published/SC/html/scripts/tinymce/plugins/images/connector/php/Image_Toolbox.class.php
1) в определении массива var $_types = array должно быть 
                        2 => array (
'ext' => 'jpg',
'mime' => 'image/jpeg',
'supported' => 0
2) заменить ['JPG Support'] на ['JPEG Support'] (у меня 186 строка)

Вот и все! Предупреждений и ошибок нет, а фотографии нормально отображаются, обновляются, загружаются и вставляются.

вторник, 1 апреля 2014 г.

Итоги марта 2014

ПРИХОД:

Google Adsense 2,16 (+0,66) $
Mainlink.ru 62,48 руб.
Liex.ru - 0,06 $ (неинтересные заявки только на вечные ссылки, статьи на время и навсегда перестали заказывать)
Партнерка интернет-магазина товаров для ремонта -
RotaBan -
Биржа контента Etxt (реф) -
 
РАСХОД:
домены - 150 руб.

воскресенье, 30 марта 2014 г.

Вставляем фото в каталог продуктов в админке

Исходный движок местами очень непродуман и неудобен для пользователей. В частности, чтобы увидеть есть ли фото у товара нужно заходить в карточку и пролистывать вниз страницы. Согласитесь трудозатратно даже при небольшом количестве товаров, а при каталоге в несколько тысяч товаров вообще нереальный геморрой.

Решение:

1) в файле /published/SC/html/scripts/templates/backend/categories_products.html

вначале файла добавляем

<link rel="stylesheet" href="{$smarty.const.URL_ROOT}/3rdparty/highslide/highslide.css" type="text/css" />
    <script type="text/javascript" src="{$smarty.const.URL_ROOT}/3rdparty/highslide/highslide.js"></script>
    <script type="text/javascript">    
        hs.graphicsDir = '{$smarty.const.URL_ROOT}/3rdparty/highslide/graphics/';
        hs.registerOverlay(
            {ldelim}
                thumbnailId: null,
                overlayId: 'controlbar',
                position: 'top right',
                hideOnMouseOut: true
            {rdelim}
        );
        hs.outlineType = 'rounded-white';
    </script>

после

<td><a href="{$product_url}">{$GridRows[i].product_code|escape:'html'}&nbsp;</a></td>

добавляем код

<td>{if $GridRows[i].thumbnail}<a target="_blank" onclick="return hs.expand(this)" href='{$smarty.const.URL_PRODUCTS_PICTURES}/{if $GridRows[i].big_picture}{$GridRows[i].big_picture|escape:'url'}{else}{$GridRows[i].picture|escape:'url'}{/if}'><img src="{$smarty.const.URL_PRODUCTS_PICTURES}/{$GridRows[i].thumbnail|escape:'url'}" /></a>{/if}</td>

2) в /published/SC/html/scripts/modules/test/_methods/b_categories_products.php

добавляем ПОСЛЕ

$gridEntry->registerHeader("prdset_product_code", 'product_code', false, 'asc');

строку

$gridEntry->registerHeader("prdset_product_picture");

Хотела еще добавить сортировку по наличию и отсутствию фото, но не осилила
Так не работает

$gridEntry->registerHeader("prdset_product_picture", 'product_picture', false, 'asc');


Переделываем Есть вопросы? в форму быстрого заказа

Вид на сайте:

Письмо на почту:

Чтобы получить
1) меняем содержимое файла /published/SC/html/scripts/templates/frontend/product_details_request.html на:

{if !$CPT_CONSTRUCTOR_MODE}
{if $PAGE_VIEW ne 'printable'}
<div class="pageSeparator"></div>
<a name="product-request"></a>

<p>
    <a name="inquiry"></a>
    {if $sent eq NULL}

    <h2>{"feedback_title_productpage"|translate|replace:"[product_name]":"`$product_info.name`"|escape:'html'}</h2>

<!--    <p>{"feedback_description_general_2"|translate}</p> -->

    {$MessageBlock__prd_request}

    <input name="message_subject" value="{"b_zakaz"|translate}{$product_info.name|escape:'html'}" type="hidden" >
    <input name="productID" value="{$product_info.productID}" type="hidden" >
   
{"str_your_name"|translate}, {"str_your_tel"|translate}<br />
    <input name="customer_name"  value="{$prd_request.customer_name|escape:'html'}" type="text" size="40"><br />

    {"usr_custinfo_email"|translate}<br />
    <input name="customer_email" value="{$prd_request.customer_email|escape:'html'}" type="text" size="40" >


    <p>{"feedback_description_productpage"|translate}<br>
    <textarea name="message_text" cols="100" rows="4">{$product_info.name|escape:'html'} {$product_info.product_code|escape:'html'}
{"str_price"|translate}: {if $product_info.Price <= 0} n/a {else}{$product_info.PriceWithUnit}{/if}</textarea>
</p>
   
    {if $smarty.const.CONF_ENABLE_CONFIRMATION_CODE}
<br />
        <table cellpadding="6" cellspacing="0">
        <tr class="background1">
            <td colspan="2">{"str_enter_ccode"|translate}</td>
        </tr>
<!--        {if $PAGE_VIEW eq 'mobile'} mobile view -->
        <tr class="background1">
            <td colspan="2" align="center">
                <img src="{$smarty.const.URL_ROOT}/imgval.php" alt="code" />
                <br />
                <input name="fConfirmationCode" value="" type="text" >
            </td>
        </tr>
<!--        {else} generic view -->
        <tr class="background1">
            <td align="right">
                <img src="{$smarty.const.URL_ROOT}/imgval.php" alt="code" align="right" />
            </td>
            <td>
                <input name="fConfirmationCode" value="" type="text" style="width:200px;" >
            </td>
        </tr>
<!--        {/if} -->
        </table>
    {/if}

    <p>
    <input type="submit" name="request_information" value="OK">
    </p>

    {else}

    <p><span class=faq style="color: blue; font-weight: bold;">{"feedback_msg_sent_successfully"|translate}</span></p>

    {/if}
{/if}
{else}
    <h2>{"feedback_title_productpage"|translate|replace:"[product_name]":"`$product_info.name`"|escape:'html'}</h2>

    <p>{"feedback_description_general_2"|translate}</p>
   
    ...
{/if}

2) создаем локализацию str_your_tel - контактный телефон
    и меняем значение у feedback_description_productpage - Дополнительно можете указать время и адрес доставки.
    а еще можно добавить слова БЫСТРЫЙ ЗАКАЗ до названия товара в тему письма, чтобы можно было легко их найти. Это локализация b_zakaz - БЫСТРЫЙ ЗАКАЗ

среда, 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) {
Надеюсь понятно)