На странице создания резервной копии в битриксе есть ссылка для скачивания файла restore.php. Скачайте этот скрипт и загрузите на сайт, где надо развернуть копию. Ну и запустите через браузер этот скрипт, он распакует архив, файлы и базу. После распаковки не забудьте переименовать файл в корне сайта из .htaccess.restore в .htaccess .
А зачем вы мусор из избы выносите? Это ваша частная проблема с конкретным разработчиком. То, что компания-разработчик является партнером битрикса - это не признак какого-либо профессионализма, ориентации на длительные отношения и даже не признак качества. Это всего лишь означает, что компания баллы зарабатывает и когда-то купила 2 битрикса сразу со скидкой 40%. А для решения текущих проблем с сайтом вам не следовало ждать месяц, надо было искать других специалистов для решения проблем. У вас же бизнес, он должен работать, сайт должен продавать. Наверняка там проблема решалась бы за пару часов и цена вопроса в пределах 5-10 тысяч рублей для грамотного специалиста, коих даже на этом форуме всегда есть в наличии. Вот создали бы вы просто тему на форуме - ищем специалиста, сайт такой-то, проблема такая-то - проблемы были бы решены на следующий день. Но вы предпочли подождать, потерять кучу денег и времени, но потом создать тему про то какой плохой ИП Губарев Антон. Я этого вообще не понимаю, мазохизм какой-то.
Значит это не ошибка JS, а неверное выполнение логики скриптов. Посмотрите, может что-то меняется в структуре данных, может выводить нечего, может выполняется раньше или позже нужного - как-то так.
Вы отключили ресайз для новых картинок, а старые картинки сохранены измененными, их по сути никак не сделать нормальными, потому что они такие и есть маленькие.
Неиспользуемые модули, компоненты, активности, справку. В идеале бы еще кеш на memcached перевести, а то он тоже генерирует кучу файлов. Картинки можно хранить в облаке. Есть любители объединять файлы PHP, но спорно с точки зрения производительности. В общем, тут полет фантазии большой.
Заголовок страниц задается компонентами при установленном параметре SET_TITLE=Y. Проверьте, стоит ли этот параметр, передается ли он в дочерние компоненты bitrix:news. Возможно также, заголовок страницы у вас переписывается после выполнения компонентов каким-то другим кодом.
Вот тут можете почитать про rel="canonical". Тег вставляется в <head>, в значении тега указывается предпочтительная ссылка из возможного набора подобных страниц. Например, подобными считаться будет 2 страницы одного товарного раздела, если одна отсортирована по цене, а вторая по названию товаров - дублирование контента на лицо. Следовательно вам на всех этих страницах надо указать в качестве canonical страницу на первую страницу раздела вообще без сортировки. Например, у вас есть набор страниц: /catalog/section/ /catalog/section/?page=2 /catalog/section/?sort=name&dir=asc /catalog/section/?sort=name&dir=desc и т.д. Все эти страницы должны иметь в качестве canonical /catalog/section/ . Сделать это можно массой различных способов, например, вы можете использовать переменные страницы и раздела:
Код
<li nk rel="canonical" href="<?=$APPLICATION->GetProperty("canonical")?>"/>
Переменная canonical в данном случае - это может быть параметр страницы, раздела, либо задаваться через $APPLICATION->SetPageProperty("canonical", $val);. Конкретно, если рассматривать товарный каталог, который обычно работает через комплексный компонент, например, bitrix:catalog, то вы можете сделать копию шаблона компонента и разместить соответствующий код в шаблонах этого компонента (detail.php, section.php, top.php). В качестве значения можете брать текущий URL после очистки всех параметров, это можно сделать опять же массой способов. Например, $val = $APPLICATION->GetCurPageParam("", array_keys($_GET), false()); - получите текущий URL без параметров вообще.
Система аффилитов немного по-другому работает. Когда пользователь пришел по партнерской ссылке, в ней имеется какой-то ID партнера, не помню, вроде бы affiliate_id. Этот ID сохраняется в сессии текущего покупателя и записывается в его заказы. Поймать переход по партнерской ссылке можно просто отследив наличие affilate_id в ссылке, которая запрошена. Но я бы не рекомендовал закидывать 100 рублей за факт перехода - так люди себе целые состояния накликают сами себе. Если вам надо ограничить платеж с личного счета, то можете просто в шаблон добавить условие вывода полей для личного счета в зависимости от суммы заказа.
Я тоже когда-то сражался с PHPExcel и проблема была именно в использовании mb_string модуля, а конкретно не работало при установленном параметре mbstring.func_overload = 2
Дополнительным сайтом считается запись о сайте в системе, а как вы его реализуете - дело десятое. Домен или раздел, но с отдельной записью в админке о новом сайте - вы используете 2 сайта. Вы можете сделать бесконечное количество разных сайтов на одной системе, если не будете использовать создание записи о новом сайте в системе, благо для этого есть куча возможностей как.
Нужно, чтобы пагинация с шаблонов arrows выводила все имеющией страницы без тоеточий. То есть не "Страницы: 1 2 3 ... 34 35", все числа он 1 до 35. Как это можно сделать? И где находится шаблон пагинации?
Создайте шаблон /bitrix/templates/<ваш_шаблон>/components/bitrix/breadcrumbs/.default/template.php, скопируйте в него код соответствуюещего компонента /bitrix/components/bitrix/breadcrumbs/templates/.default/template.php и изменяйте, как вам вздумается.
На самом деле простая задача, решается через события системы. Вот, например, я вставлял в шаблон письма переменную с номером почтового отправления (номер документа об отправке в заказе)
Код
AddEventHandler("main", "OnBeforeEventAdd", "OnSaleDeliveryOrderSendEmail");
function OnSaleDeliveryOrderSendEmail (&$event, &$lid, &$arFields, &$message_id) {
if ($event=="SALE_ORDER_DELIVERY") {
if ($arFields['ORDER_ID']>0) {
$order = CSaleOrder::GetByID($arFields['ORDER_ID']);
if ($order['DELIVERY_DOC_NUM']) {
$arFields['DELIVERY_DOC_NUM'] = "Номер почтового отправления: ".$order['DELIVERY_DOC_NUM'];
$arFields['TRACKING_LINK'] = "Отслеживание отправления: http://supersite.ru/tracking/?id=".$order['DELIVERY_DOC_NUM'];
}
}
}
}
Поясню по поводу кода. $event - это ID (тип) почтового события, в моем случае это событие разрешения доставки, при котором отправляется почтовое событие типа SALE_ORDER_DELIVERY. $arFields - это, собственно, переменные шаблона письма, вы можете с ними манипулировать, как хотите, я в своем примере добавляю 2 новых поля DELIVERY_DOC_NUM и TRACKING_LINK . Ну и в почтовом шаблоне добавляю поля для отображения этих переменных #DELIVERY_DOC_NUM# и #TRACKING_LINK# соответственно. Хотя по смыслу вообще используется одно, просто сделал заказчику на выбор.
Тоже самое и с любыми другими событиями, в вашем случае тип = SALE_NEW_ORDER, в функции по ID заказа получаете все необходимые поля заказа и создаете свои переменные для почтового шаблона.
Весь код, естественно, задвинуть в /bitrix/php_interface/init.php или куда-то, что будет работать всегда или для данного события, например, свой модуль.
Можно. А вот как - это уже индивидуальный подход. Я бы сделал отдельную страницу, как вариант, можно сделать отдельный компонент. На странице выводятся товары из нужных разделов, делаем форму с выбором по одному или множественному выбору товаров из каждого раздела, при отправке формы (в данных будут ID товаров и их количество), добавляем это всё в корзину для текущего пользователя, ну а дальше как обычно можно отправить на оформление заказа, например. На самом деле тут ничего слишком сложного нет, но необходимо иметь навыки работы вне компонентов с голым API.
Техподдержка и будет молчать, это ж развитие продукта такое Сам сталкивался с такой проблемой. Решается это действительно только копированием стандартной функции CatalogBasketOrderCallback() и прописыванием ее копии в ORDER_CALLBACK_FUNC в вашей функции Add2Cart()
Проблема в том, что стандартные компоненты учитывают время активности, то есть на них никак. Используйте либо свой кусок кода, либо свои компоненты, которые бы не учитывали активность по времени, а только просто активность.