Hello world в jQuery AJAX

Начать использовать jQuery очень просто, а вместе с ним и AJAX, который также становится очень простым в этой связке. Смотрите пример ниже. Для простоты библиотека jQuery берется с сайта googleapis.com, но вы можете разместить ее и локально. Обратите внимание, что все файлы должны быть в кодировке UTF-8.

Итак, листинг ajax.html (это файл, который необходимо вызвать в браузере):

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; Charset=UTF-8">
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
</head>
<body>
  <div id="content"></div>
  <input id="show_btn" type="button" value="Показать"/>
  <input id="close_btn" type="button" value="Закрыть"/>
  <input id="pos_id" type="hidden" value="5"/>
  <script src="ajax.js" type="text/javascript"></script>
</body>
</html>

Далее листинг ajax.js:

$(document).ready(function(){ 
  $('#show_btn').click(function(){ 
    $.ajax({ 
      url: 'ajax_servlet.php', 
      data: 'id='+$('#pos_id').val(), 
      cache: false, 
      success: function(html){ 
        $('#content').html(html); 
      } 
    }); 
  }); 
  $('#close_btn').click(function(){ 
    $('#content').html(''); 
  });
});

Ну и наконец файл, отвечающий на AJAX-запрос на стороне сервера, ajax_servlet.php:

<?php
echo
  "Привет мир!<br/>".
  "Скрытый параметр id=".$_GET['id']
;
?>

Запрет индексирования (noindex)

Иногда нужно сообщить поисковым машинам (роботам), что данную страницу индексировать не нужно. Для этого существует META-тэг:

<meta name="robots" content="noindex, nofollow" />

В данном случае «noindex» указывает на запрет индексации, а «nofollow», что на данной странице не надо обходить ссылки.

Совет: Для того, чтобы добавить этот товар в Вашу корзину Вы должны выбрать свойства товара на странице с его описанием

Это сообщение может появится в интернет-магазине VirtueMart на Joomla в случае использования подтоваров, плюс если у родительского товара есть свои свойства. Стоит попытаться положить подтовар в корзину и вы увидите это сообщение, а товар в корзину не попадет.У меня проблема решилась следующим образом:

  1. В фаиле /administrator/components/com_virtuemart/classes/ps_cart.php, в функции add() закомментировал строки (отличается в разных версиях VirtueMart, но найти по смыслу можно):
    if ( ($result["attribute_given"] == false && !empty( $result["advanced_attribute_list"] ))
     || ($multiple_products == 1 && ($result["custom_attribute_given"] == false && !empty( $result["custom_attribute_list"] ))) ) {
      $_REQUEST['flypage'] = ps_product::get_flypage($product_id);
      $GLOBALS['page'] = 'shop.product_details';
      $vmLogger->tip( $VM_LANG->_('PHPSHOP_CART_SELECT_ITEM',false) );
      return true;
    }
  2. Чтобы в списке товаров в корзине не вылезли свойства родительской позиции, во всех файлах php в папке /components/com_virtuemart/themes/default/templates/basket/ код:
    <?php echo $product['product_name'] . $product['product_attributes'] ?>

    заменил на:

    <?php
    $brPos = strpos($product['product_name'], "<br />");
    if ($brPos !== false) $product['product_name'] = substr($product['product_name'], 0, $brPos);
    echo $product['product_name'];
    ?>

Как сделать 301 редирект (объединение страниц с www и без)

Для того чтобы объединить страницы сайта с www. и без, в глазах поисковика, и при этом не потерять имеющийся вес страниц, можно воспользоваться 301 редирект. Пример записи в фаиле .htaccess ниже (замените example.ru на свой домен):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.ru
RewriteRule (.*) http://www.example.ru/$1 [R=301,L]

Можно и не использовать .htaccess, а сделать все на PHP. Пример:

if (substr($_SERVER['HTTP_HOST'],0,3)!='www') {
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://www.".$_SERVER['HTTP_HOST'].str_replace('index.php','',$_SERVER['PHP_SELF']).($_SERVER['QUERY_STRING']?'?'.$_SERVER['QUERY_STRING']:''));
}

При использовании кода, указанного выше, домен с www становиться основным или каноническим.

Безопасная разработка сайтов

Для того что бы ваши и заказчика нервы были в порядке, придерживайтесь простых правил:

  • Когда вам доверили готовый коммерческий сайт, сделайте его полную (файлы+БД) резервную копию.
  • Когда меняете какие то файлы, не заменяйте старую версию, а назовите ее ГГГГММДД_имяфайла. Советую именно так, потому что такие файлы удобно сортировать по имени, и вы будете знать дату старой версии.
  • Перед глобальными запросами БД, лучше еще раз сделать её резервную копию.
  • Храните резервные копии на нескольких носителях.
  • Даже если вы уверены, что после сделанных изменений ничего плохого не случится, всегда проверяйте сайт (лучше в нескольких браузерах).
  • При переезде заранее узнайте все ли модули поддерживаются на новом хостинге. Лучше что бы были те же версии модулей.