Множественное добавление в корзину bitrix

В битриксе его нет, лол ок.

Можно сделать через массив айди и кодовую фразу с редиректом в корень.
Что бы не лезть в компоненту, запишем все в афтер_коннект.пхп
if (@$_GET["action"] == "ADD2BASKET" && is_array(@$_GET["id"])) {
	if (CModule::IncludeModule("catalog")){
		foreach ($_GET["id"] as $id)
			Add2BasketByProductID($id,1);
	}
	header ("Location: ?");die();
}


По желанию в Add2BasketByProductID можно передать кастомные параметры

Получить файлы с базы одним запросом

$res = CFile::GetList(array("ID"=>"asc"), array("@ID" => implode(",",$collect_imgs)));

while($res_arr = $res->GetNext()) {
	$res_arr["SRC"] = "/upload/".$res_arr["SUBDIR"]."/".$res_arr["FILE_NAME"];
	$arResult["YOURIMAGES"][$res_arr["ID"]] = $res_arr;
}

Где $collect_imgs — массив айдишников картинок

Табличные шаблоны компонент в Битриксе

Как же я хуею, от этого убожества.
Столько лет на рынке, они все на месте, все убогие таблички, во всех компонентах БЛЯ.

Буду сюда выкладывать компоненты, в которых буду удалять таблицы, и их стили.
Со временем.

Везде форма логина/меню заблокированы

Вы перенесли сайт на новое место, а везде для анонимуса показывается форма логина, все меню заблокированы? Не беда! :)

Первым делом в настройках сайта убираете/прописываете наново путь к сайту на диске.
Не помогло, руки не стали расти выше? :)

Тогда вам нужно в корне сайта, создать/отредактировать файл .access.php! Да, все правильно, начинается на точку (стандартный фтп-манагер такие файлы может не видеть, так как в UNIX системах они называются скрытые — копните настройки)

А в файле должна появится строчка:
$PERM["/"]["*"]="R";

Не забываем, что это пыхапы файл ;)
<?
$PERM["/"]["*"]="R";
?>

Файл авторизации auth.php

<? define("NEED_AUTH", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

if (isset($_REQUEST["backurl"]) && strlen($_REQUEST["backurl"])>0) LocalRedirect($backurl);

$APPLICATION->SetTitle("Authorization"); ?>

<script type="text/javascript">
	location.href="/";
</script>
<p><a href="<?=SITE_DIR?>">Go to main page</a></p>

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

Самый обычный .htaccess для битрикса

Options -Indexes 
ErrorDocument 404 /404.php

#php_flag allow_call_time_pass_reference 1
#php_flag session.use_trans_sid off

#php_value display_errors 1

php_value mbstring.func_overload 2
php_value mbstring.internal_encoding UTF-8

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
</IfModule>

<IfModule mod_dir.c>
  DirectoryIndex index.php index.html
</IfModule>

<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresByType image/jpeg "access plus 3 day"
  ExpiresByType image/gif "access plus 3 day"
</IfModule>

Обычная 404 страница

<? # заголовки 404, что бы поисковики были умничками
CHTTP::SetStatus("404 Not Found"); // может убивать некоторые серваки
@define("ERROR_404","Y");

# для 404 картинок отдаём пустышку
$arrImage = array("jpg","bmp","jpeg","jpe","gif","png");
$arrPath = pathinfo($_SERVER["REQUEST_URI"]);
if (in_array($arrPath["extension"],$arrImage)) die();

# делаем редирект, если он есть в правилах
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("404 - страница не найдена"); ?>

<? $APPLICATION->IncludeComponent("bitrix:main.map", ".default", array(
	"CACHE_TYPE" => "N",
	"CACHE_TIME" => "3600",
	"SET_TITLE" => "Y",
	"LEVEL" => "3",
	"COL_NUM" => "2",
	"SHOW_DESCRIPTION" => "Y"
	),
	false
);?>

<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>

Простые страницы

С дизайном:
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Hello word"); ?>
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>


Без дизайна:
<? require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("iblock"); ?>
<? require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php"); ?>

Подсветки PHP в редакторе

Для реализации подсветки php-синтаксиса в редакторе, вставляем в /bitrix/php_interface/init.php следующее:

<?
# code writen by Евгений Петриченко http://me.lt/327sA
if ($_SERVER['SCRIPT_NAME']=="/bitrix/admin/fileman_file_edit.php")
{
   AddEventHandler("main", "OnEpilog", "InitPHPHighlight");
   function InitPHPHighlight()
   {
      global $APPLICATION;
            $string='<link rel="stylesheet" href="http://codemirror.net/lib/codemirror.css">
      <script src="http://codemirror.net/lib/codemirror.js"></script>
      <script src="http://codemirror.net/mode/xml/xml.js"></script>
      <link rel="stylesheet" href="http://codemirror.net/mode/javascript/javascript.css">
      <link rel="stylesheet" href="http://codemirror.net/mode/clike/clike.css">
      <script src="http://codemirror.net/mode/javascript/javascript.js"></script>
      <script src="http://codemirror.net/mode/php/php.js"></script>
      <script src="http://codemirror.net/mode/clike/clike.js"></script>
      <style>

      .CodeMirror {
        overflow: auto;
        background:white;
        height: 500px;
        width: 1000px;
        line-height: 1em;
        font-family: inherit;
      }
      .CodeMirror pre{

        font-size:15px;
        line-height: 1.2em;
      }
      </style>';
   $init='<script type=\'text/javascript\'>
            BX.ready(function(){
            var nl=document.getElementsByTagName("textarea");

            var editor = CodeMirror.fromTextArea(nl[0], {
                     lineNumbers: true,
                     matchBrackets: true,
                     mode: "application/x-httpd-php",
                     indentUnit: 8,
                     indentWithTabs: true,
                     enterMode: "keep",
                     tabMode: "classic"
                    });});
            </script>';
      
      $APPLICATION->AddHeadString($string);      
      $APPLICATION->AddHeadString($init);
   }
}
?>

Универсальный пустой шаблон для Bitrix

Когда начинаешь кодить, часто делаешь один и те же вещи. Когда есть какие-то заготовки, ещё терпимо, когда нет, приходится писать ручками всё, потому решил выложить для копипаста сюда код обычного шаблона с архивчиком :)

Это будет header.php:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); ?>
<?IncludeTemplateLangFile(__FILE__);?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?=LANG_CHARSET;?>"/>
<? $APPLICATION->ShowMeta("robots")?>
<? $APPLICATION->ShowMeta("keywords")?>
<? $APPLICATION->ShowMeta("description")?>
<title><? $APPLICATION->ShowTitle()?></title>

	<link rel="shortcut" href="/favicon.ico" type="image/x-icon" />
	<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
	<link href="<?=$APPLICATION->GetTemplatePath("fonts.css") ?>" type="text/css" rel="stylesheet" />

<? $APPLICATION->ShowCSS();?>
<? $APPLICATION->ShowHeadStrings()?>
<? $APPLICATION->ShowHeadScripts()?>

<!--[if lte IE 6]>
	<script type="text/javascript" src="<?=$APPLICATION->GetTemplatePath("js/pngfix.js") ?>"></script>
	<script type="text/javascript">if (document.all) {DD_belatedPNG.fix('img, div, ul, li, a, div img');}</script>
<![endif]-->
<!--[if lte IE 6]><link href="<?=$APPLICATION->GetTemplatePath("styleie.css") ?>" type="text/css" rel="stylesheet" /><![endif]-->
<!--[if IE 7]><link href="<?=$APPLICATION->GetTemplatePath("styleie7.css") ?>" type="text/css" rel="stylesheet" /><![endif]-->
<!--[if lte IE 7]>
	<script type="text/javascript" src="<?=$APPLICATION->GetTemplatePath("js/roundie.js") ?>"></script>
	<script type="text/javascript">
		if (document.all) {
			DD_roundies.addRule('.someelmt', '6.9px');
		}
	</script>
<![endif]-->

<script type="text/javascript" src="<?=$APPLICATION->GetTemplatePath("js/jquery.js")?>"></script>
<script type="text/javascript" src="<?=$APPLICATION->GetTemplatePath("js/user.js")?>"></script>
</head>

<body>

<? $APPLICATION->ShowPanel();?>

<?$APPLICATION->IncludeComponent("bitrix:menu", "", array(
	"ROOT_MENU_TYPE" => "top",
	"MENU_CACHE_TYPE" => "N",
	"MENU_CACHE_TIME" => "3600",
	"MENU_CACHE_USE_GROUPS" => "Y",
	"MENU_CACHE_GET_VARS" => "",
	"MAX_LEVEL" => "1",
	"CHILD_MENU_TYPE" => "",
	"USE_EXT" => "Y"
	),
	false
);?>

<?$APPLICATION->IncludeComponent("bitrix:system.auth.form", "", Array(
	"REGISTER_URL" => "/",	// Registration page
	"PROFILE_URL" => "/profile/",	// Profile page
	"SHOW_ERRORS" => "N",	// Show errors
	),
	false
); ?>			

<?$APPLICATION->IncludeFile(
	$APPLICATION->GetTemplatePath("include_areas/inc.php"),
	Array(),
	Array("MODE"=>"php")
);?>

<?$APPLICATION->IncludeComponent("bitrix:main.include", ".default", array(
	"AREA_FILE_SHOW" => "sect",
	"AREA_FILE_SUFFIX" => "edit",
	"AREA_FILE_RECURSIVE" => "Y",
	"EDIT_TEMPLATE" => "edit_sect.php"
	),
	false,
	array(
		"ACTIVE_COMPONENT" => "Y"
	)
);?>

<? $APPLICATION->ShowTitle();	?>

Список файлов:
* script.js — его может и не быть
* template_styles.css — стили сайта
* styles.css — стили контента, может не быть, но лучше разделить, что бы в редакторе было так же как и на сайте
* .styles.php, description.php — служебные файлы: в первом прописываются имена стилей, в другом описание шаблона

Дополнительные файлы:
* pngfix.js, roundie.js, styleie.css, styleie7.css — для поддержки ИЕ6-7, семейки выродков
* jquery.js, user.js — пользовательские скрипты
* fonts.css — пользовательские шрифты

Список компонент:
* админпанель
* меню
* авторизация
* включаемая область (шаблонная и компонент)
* заголовок

Дальше идёт footer.php но там всё проще, оставим код только для для ГуглАналитикс
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
IncludeTemplateLangFile(__FILE__);?>

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-yournumber-1");
	pageTracker._setDomainName("yourdomain.com");

	pageTracker._addOrganic("mail.ru", "q");
	pageTracker._addOrganic("rambler.ru", "words");
	pageTracker._addOrganic("nigma.ru", "s");
	pageTracker._addOrganic("blogs.yandex.ru", "text");
	pageTracker._addOrganic("webalta.ru", "q");
	pageTracker._addOrganic("aport.ru", "r");
	pageTracker._addOrganic("akavita.by", "z");
	pageTracker._addOrganic("meta.ua", "q");
	pageTracker._addOrganic("bigmir.net", "q");
	pageTracker._addOrganic("tut.by", "query");
	pageTracker._addOrganic("all.by", "query");
	pageTracker._addOrganic("i.ua", "q");
	pageTracker._addOrganic("online.ua", "q");
	pageTracker._addOrganic("a.ua", "s");
	pageTracker._addOrganic("ukr.net", "search_query");
	pageTracker._addOrganic("search.com.ua", "q");
	pageTracker._addOrganic("search.ua", "query");
	pageTracker._addOrganic("poisk.ru", "text");
	pageTracker._addOrganic("km.ru", "sq");
	pageTracker._addOrganic("liveinternet.ru", "ask");
	pageTracker._addOrganic("gogo.ru", "q");
	pageTracker._addOrganic("gde.ru", "keywords");
	pageTracker._addOrganic("quintura.ru", "request");
	pageTracker._initData();
	pageTracker._trackPageview();

} catch(err) {}</script>

</body>
</html>


А теперь ссылочка на архив
  • 0
  • 14 апреля 2011, 12:42
  • admin