что такое Анкор

Анкор это текст ссылки, расположенный между открывающим и закрывающим тегами <a> и </a>. Само слово происходит от англ. anchor, что и переводится на русский как «ссылка».
Пример анкора:

<a href=»http://seodic.ru»>SEO Словарь</a>

В вышеприведенном примере анкором является фраза «SEO Словарь». Текст ссылки очень важен в SEO, так как является одним из факторов, влияющих на ранжирование сайта по определенным ключевым словам (содержащимся в анкоре).

Анкоры желательно разбавлять текстом внутри ссылки, чтобы они все были разными в ссылочном графе и лучше влияли на позиции. Также тексты ссылок рекомендуется окружать околоссылочным текстом.

Установка APC на centos/debian (установка PECL)

Установить APC можно непосредственно из PECL (PECL — это репозиторий расширений PHP) или из исходных кодов. Поэтому, если на сервере не установлен pecl, устанавливаем его, а так же компилятор С для сборки расширения.

CentOS:

1
yum install gcc php-pear -y

Debian:

1
apt-get install gcc php-pear

После этого устанавливаем сам APC:

1
pecl install apc 

yum install php-pecl-apc

После установки APC нужно подключить его в php.ini, добавив строку «extension=apc.so». Перезагружаем Apache.

CentOS:

1
/etc/init.d/httpd restart

Debian:

1
/etc/init.d/apache2 restart

Проверяем phpinfo. Не забудьте настроить APC по документации:http://php.net/manual/en/book.apc.php

Ответы на Курс для хостеров. Перенос сайта и монитор производительности

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

Монитор производительности

  • получает оценку производительности Bitrix Framework на данном сервере, выявляя основные ошибки настройки сервера
  • показывает скорость работы сайта на хостинге, дает советы по оптимизации и автоматически устраняет «узкие» места сайта
  • показывает скорость работы сайта на хостинге, выявляет узкие места (скрипты на сайте, которые потребляют наибольшее число системных ресурсов) и основные ошибки настройки сервера.
  • собирает данные для техподдержки 1С-Битрикс
  • отслеживает работу сайта и высылает уведомления администратору сайта
  • показывает скорость работы сайта на хостинге, находит «узкие» места сайта и автоматически устраняет их
  • обеспечивает доступ техподдержки 1С-Битрикс для решения проблем производительности

 

Время исполнения страниц можно посмотреть

  • в формах монитора производительности в административной части если включен сбор статистики
  • в публичной и административной части сайта в специальной форме
  • внизу каждой страницы публичной части сайта, если включена Отладка

 

Страница «Сервер БД» модуля Монитор производительности в административной части сайта показывает

  • сводную статистику производительности сервера базы данных и рекомендации по настройке
  • содержимое базы данных
  • сводную статистику производительности сервера базы данных

 

В публичной части сайта с помощью модуля «Монитор производительности» можно найти

  • информацию по запросам к базе данных только для всей страницы
  • информацию по запросам к базе данных как для отдельных компонентов, так и для всей страницы
  • информацию по запросам к базе данных только для отдельных компонентов
  • наиболее ресурсоёмкие участки страницы

 

 

 

На одной из закладок страницы «Панель производительности» отображается

  • список самых нагружающих страниц сайта, их среднего времени выполнения и предполагаемых ошибок разработчика
  • список самых нагружающих страниц сайта, количество хитов и SQL запросов
  • список самых нагружающих страниц сайта, их среднего времени выполнения и количество используемых компонентов на странице

 

Удалить ранее собранные данные по производительности можно

  • на странице настроек модуля «Монитор производительности»
  • на странице настроек модуля «Веб-аналитика»
  • на странице «Панель производительности»

 

Перенос сайта с локального компьютера на удаленный сервер средствами системы:

  • осуществляется созданием резервной копии, переносом архива на удаленный сервер с последующей распаковкой скриптом restore.php и настройкой
  • осуществляется с помощью скрипта BitrixSetup
  • невозможен
  • осуществляется с помощью «Резервного копирования», но базу данных необходимо перенести самостоятельно

 

После распаковки резервной копии сайта будет предложено выполнить настройку соединения с базой данных, если при создании резервной копии:

  • в состав резервной копии была включена база данных
  • из состава резервной копии были исключены файлы больше указанного размера
  • была изменена конфигурация файла dbconn.php

как скопировать инфоблок со свойствами битрикс

Данный способ, позволяет скопировать структуру инфоблока! Со всеми свойствами…
Создаем страницу и добавляем в нее код:

<?
CModule::IncludeModule("iblock");
    if(intval($_REQUEST["IBLOCK_ID_FIELDS"])>0){
        $bError = false;
        $IBLOCK_ID = intval($_REQUEST["IBLOCK_ID_FIELDS"]);
        $ib = new CIBlock;
        $arFields = CIBlock::GetArrayByID($IBLOCK_ID);
        $arFields["GROUP_ID"] = CIBlock::GetGroupPermissions($IBLOCK_ID);
        $arFields["NAME"] = $arFields["NAME"]."_new";
        unset($arFields["ID"]);
        if($_REQUEST["IBLOCK_TYPE_ID"]!="empty")
            $arFields["IBLOCK_TYPE_ID"]=$_REQUEST["IBLOCK_TYPE_ID"];
        $ID = $ib->Add($arFields);
            if(intval($ID)<=0)
                $bError = true;
        if($_REQUEST["IBLOCK_ID_PROPS"]!="empty")
            $iblock_prop=intval($_REQUEST["IBLOCK_ID_PROPS"]);
        else
            $iblock_prop=$IBLOCK_ID;

        $iblock_prop_new = $ID;
        $ibp = new CIBlockProperty;
        $properties = CIBlockProperty::GetList(Array("sort"=>"asc", "name"=>"asc"), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$iblock_prop));
        while ($prop_fields = $properties->GetNext()){
            if($prop_fields["PROPERTY_TYPE"] == "L"){
                $property_enums = CIBlockPropertyEnum::GetList(Array("DEF"=>"DESC", "SORT"=>"ASC"), Array("IBLOCK_ID"=>$iblock_prop, "CODE"=>$prop_fields["CODE"]));
                while($enum_fields = $property_enums->GetNext()){
                    $prop_fields["VALUES"][] = Array(
                      "VALUE" => $enum_fields["VALUE"],
                      "DEF" => $enum_fields["DEF"],
                      "SORT" => $enum_fields["SORT"]
                    );
                }
            }
            $prop_fields["IBLOCK_ID"]=$iblock_prop_new;
            unset($prop_fields["ID"]);
            foreach($prop_fields as $k=>$v){
                if(!is_array($v))$prop_fields[$k]=trim($v);
                if($k{0}=='~') unset($prop_fields[$k]);
            }
            $PropID = $ibp->Add($prop_fields);
            if(intval($PropID)<=0)
                $bError = true;
        }
        if(!$bError && $IBLOCK_ID>0)
            LocalRedirect($APPLICATION->GetCurPageParam("success=Y",array("success","IBLOCK_ID_FIELDS")));
        else
            LocalRedirect($APPLICATION->GetCurPageParam("error=Y",array("success","IBLOCK_ID_FIELDS")));
    }
    $str .='<form action='.$APPLICATION->GetCurPageParam().' method="post"><table>';
    if($_REQUEST["success"]=="Y") $str .='<tr><td colspan="2"><font color="green">ИБ успешно скопирован</font><br/></td></tr>';
    elseif($_REQUEST["error"]=="Y") $str .='<tr><td colspan="2"><font color="red">Произошла ошибка</font><br/></td></tr>';
    $str .='<tr><td colspan="2"><b>Копируем мета данные ИБ в новый ИБ</b><br/></td></tr>';
    $res = CIBlock::GetList(Array(),Array(),true);
        while($ar_res = $res->Fetch())
            $arRes[]=$ar_res;
    $str .='<tr><td>Копируем ИБ:<br><select name="IBLOCK_ID_FIELDS">';
    foreach($arRes as $vRes)
        $str .= '<option value='.$vRes['ID'].'>'.$vRes['NAME'].' ['.$vRes["ID"].']</option>';
    $str .='</select></td>';
    $str .='<td>Копируем в новый ИБ свойства другого ИБ: *<br><select name="IBLOCK_ID_PROPS">';
    $str .='<option value="empty">';
    foreach($arRes as $vRes)
        $str .= '<option value='.$vRes['ID'].'>'.$vRes['NAME'].' ['.$vRes["ID"].']</option>';
    $str .='</select></td></tr>';
    $str .='<tr><td colspan="2">Копируем ИБ в тип:<br><select name="IBLOCK_TYPE_ID">';
    $str .='<option value="empty">';
    $db_iblock_type = CIBlockType::GetList();
    while($ar_iblock_type = $db_iblock_type->Fetch()){
       if($arIBType = CIBlockType::GetByIDLang($ar_iblock_type["ID"], LANG))
          $str .= '<option value='.$ar_iblock_type["ID"].'>'.htmlspecialcharsex($arIBType["NAME"])."</option>";
    }
    $str .='</select></td></tr>';
    $str .='<tr><td colspan="2"><br/>* если значение не указано мета данные ИБ секции "Свойства" берутся из ИБ первого поля</td></tr>';
    $str .='<tr><td colspan="2"><input type="submit" value="копируем"></td></tr>';
    $str .='</table></form>';
    echo $str;
?>

Далее открываете эту страницу в браузере, и выбираете какой инфоблок нужно скопировать, останется только перезайти в админку.

как править шаблон навигации битрикс (system.pagenavigation)

копируем из стандартной папки шаблон bitrix/components/system.pagenavigation/.default

вставляем в наш bitrix/templates/имя_шаблона/components/system.pagenavigation/новое_имя_дефаулт_шаблона

затем в коде вызова компонента в поле «PAGER_TEMPLATE» вставляем новое_имя_дефаулт_шаблона

<?$APPLICATION->IncludeComponent(«bitrix:catalog», «», array(
«IBLOCK_TYPE» => «collection»,
«IBLOCK_ID» => «7»,
«BASKET_URL» => «/personal/basket.php»,
«ACTION_VARIABLE» => «action»,
«PRODUCT_ID_VARIABLE» => «id»,
«SECTION_ID_VARIABLE» => «SECTION_ID»,
«PRODUCT_QUANTITY_VARIABLE» => «quantity»,
«PRODUCT_PROPS_VARIABLE» => «prop»,
«SEF_MODE» => «Y»,
«SEF_FOLDER» => «/catalog/»,
«AJAX_MODE» => «N»,
«AJAX_OPTION_JUMP» => «N»,
«AJAX_OPTION_STYLE» => «Y»,
«AJAX_OPTION_HISTORY» => «N»,
«CACHE_TYPE» => «A»,
«CACHE_TIME» => «36000000»,
«CACHE_FILTER» => «N»,
«CACHE_GROUPS» => «Y»,
«SET_TITLE» => «N»,
«SET_STATUS_404» => «N»,
«USE_ELEMENT_COUNTER» => «Y»,
«USE_FILTER» => «N»,
«USE_COMPARE» => «N»,
«PRICE_CODE» => array(
),
«USE_PRICE_COUNT» => «N»,
«SHOW_PRICE_COUNT» => «1»,
«PRICE_VAT_INCLUDE» => «Y»,
«PRICE_VAT_SHOW_VALUE» => «N»,
«PRODUCT_PROPERTIES» => array(
),
«USE_PRODUCT_QUANTITY» => «N»,
«SHOW_TOP_ELEMENTS» => «Y»,
«TOP_ELEMENT_COUNT» => «15»,
«TOP_LINE_ELEMENT_COUNT» => «5»,
«TOP_ELEMENT_SORT_FIELD» => «sort»,
«TOP_ELEMENT_SORT_ORDER» => «asc»,
«TOP_PROPERTY_CODE» => array(
0 => «»,
1 => «»,
),
«SECTION_COUNT_ELEMENTS» => «Y»,
«SECTION_TOP_DEPTH» => «2»,
«PAGE_ELEMENT_COUNT» => «15»,
«LINE_ELEMENT_COUNT» => «5»,
«ELEMENT_SORT_FIELD» => «sort»,
«ELEMENT_SORT_ORDER» => «asc»,
«LIST_PROPERTY_CODE» => array(
0 => «»,
1 => «»,
),
«INCLUDE_SUBSECTIONS» => «Y»,
«LIST_META_KEYWORDS» => «-«,
«LIST_META_DESCRIPTION» => «-«,
«LIST_BROWSER_TITLE» => «-«,
«DETAIL_PROPERTY_CODE» => array(
0 => «»,
1 => «»,
),
«DETAIL_META_KEYWORDS» => «-«,
«DETAIL_META_DESCRIPTION» => «-«,
«DETAIL_BROWSER_TITLE» => «-«,
«LINK_IBLOCK_TYPE» => «»,
«LINK_IBLOCK_ID» => «»,
«LINK_PROPERTY_SID» => «»,
«LINK_ELEMENTS_URL» => «link.php?PARENT_ELEMENT_ID=#ELEMENT_ID#»,
«USE_STORE» => «N»,
«DISPLAY_TOP_PAGER» => «N»,
«DISPLAY_BOTTOM_PAGER» => «Y»,
«PAGER_TITLE» => «Товары»,
«PAGER_SHOW_ALWAYS» => «Y»,
«PAGER_TEMPLATE» => «новое_имя_дефаулт_шаблона»,
«PAGER_DESC_NUMBERING» => «N»,
«PAGER_DESC_NUMBERING_CACHE_TIME» => «36000»,
«PAGER_SHOW_ALL» => «Y»,
«AJAX_OPTION_ADDITIONAL» => «»,
«SEF_URL_TEMPLATES» => array(
«sections» => «»,
«section» => «#SECTION_ID#/»,
«element» => «#SECTION_ID#/#ELEMENT_ID#/»,
«compare» => «compare.php?action=#ACTION_CODE#»,
),
«VARIABLE_ALIASES» => array(
«compare» => array(
«ACTION_CODE» => «action»,
),
)
),
false
);?>

как изменять информационное собщение при изменении value selecta

выберите тариф
<select name=»tarif» id=»tarifff» onChange=»tariffs()»>
<option value=»Тестовый период»>Тестовый период</option>
<option value=»Стандартный»>Стандартный</option>
<option value=»Средний»>Средний</option>
<option value=»Максимальный»>Максимальный</option>
</select><br/>

<div id=»test» style=»display: block;»>бесплатно на 5 дней</div>
<div id=»st» style=»display: none;»>вы выбрали тариф станд</div>
<div id=»mid» style=»display: none;»>вы выбрали тариф сред</div>
<div id=»max» style=»display: none;»> вы выбрали тариф макс</div>

<script type=»text/javascript»>

function tariffs(){
tarvibor = document.getElementById(‘tarifff’).value;

if (tarvibor==’Тестовый период’){
$(‘#test’).css(‘display’,’block’);
$(‘#st’).css(‘display’,’none’);
$(‘#mid’).css(‘display’,’none’);
$(‘#max’).css(‘display’,’none’);
}
if (tarvibor==’Стандартный’){
$(‘#test’).css(‘display’,’none’);
$(‘#st’).css(‘display’,’block’);
$(‘#mid’).css(‘display’,’none’);
$(‘#max’).css(‘display’,’none’);
}
if (tarvibor==’Средний’){
$(‘#test’).css(‘display’,’none’);
$(‘#st’).css(‘display’,’none’);
$(‘#mid’).css(‘display’,’block’);
$(‘#max’).css(‘display’,’none’);
}
if (tarvibor==’Максимальный’){
$(‘#test’).css(‘display’,’none’);
$(‘#st’).css(‘display’,’none’);
$(‘#mid’).css(‘display’,’none’);
$(‘#max’).css(‘display’,’block’);
}
};
</script>