

И в качестве разработчика гемов дебютирует новый человек (не все же мне строгать
)
<?
$razm=count($arResult);
//заносим в асоциативный массив по первому элементу
$in=0;
foreach($arResult as $arItem):
if ($arItem["DEPTH_LEVEL"] == 1)
{
$in++;
$arr_spis[$in][]=$arItem;
}
else
{
$arr_spis[$in][]=$arItem;
}
endforeach;
//условие вывода для случая когда дефолтное меню выводиться
//создаем новый массив $arResult по новому порядку
//#################################################
//для задания поменяйте местами номера, номера соответствуют пунктам первого уровня по порядку отображения меню на данный момент
$por=array(6,5,2,3,1,4);
##################################################
$arR=array();
for($h=0;$h<count($por);$h++)
{
for($g=0;$g<count($arr_spis[$por[$h]]);$g++)
{
array_push($arR, $arr_spis[$por[$h]][$g]);//забиваем все элементы в новом порядке
}
}
$arResult=$arR;
//$arR=$arResult;
$shet=0;
$namber=-1;
foreach($arResult as $arItem):
if($arItem[SELECTED]){
$namber=$shet;
break;
}
$shet++;
endforeach;
if($namber==-1)
{
$j=0;
//выводим остальные первые уровни
while ($j<$razm):?>
<?if ($arResult[$j]["DEPTH_LEVEL"] == 1):?>
<div><a class='menu_left' href='<?=$arResult[$j]["LINK"]?>' ><?=$arResult[$j]["TEXT"]?></a></div><?
endif;
$j++;
endwhile;
}
//условие вывода для случая нажатия по DEPTH_LEVEL=1
if($arResult[$namber]['DEPTH_LEVEL']==1)
{
$i=$namber+1;//для случая если нажали на первую кнопочку меню
$j=0;
//если нажали на первую кнопочку меню
if($namber==0)
{
?>
<div><a class='menu_left_activ' href='<?=$arResult[$namber]["LINK"]?>' ><?=$arResult[$namber]["TEXT"]?></a></div>
<?
//выводим первую секцию
while ($arResult[$i]['DEPTH_LEVEL']!=1 and $i<$razm):?>
<?if ($arResult[$i]["DEPTH_LEVEL"] == 2):?>
<div><a class='podmenu' href='<?=$arResult[$i]["LINK"]?>' ><?=$arResult[$i]["TEXT"]?></a></div><?
endif;
$i++;
endwhile;
//выводим дальнейшие блоки 1 уровня пока не достигнут конец с массивом меню
while ($i<$razm):?>
<?if ($arResult[$i]["DEPTH_LEVEL"] == 1):?>
<div><a class='menu_left' href='<?=$arResult[$i]["LINK"]?>' ><?=$arResult[$i]["TEXT"]?></a></div>
<?
endif;
$i++;
endwhile;
}//если нажали не первую кнопочку
if($namber!=0)
{
while ($j!=$namber):
if ($arResult[$j]["DEPTH_LEVEL"] == 1):?>
<div><a class='menu_left' href='<?=$arResult[$j]["LINK"]?>' ><?=$arResult[$j]["TEXT"]?></a></div><?
endif;
$j++;
endwhile;
//выводим первую кнопку
?>
<div><a class='menu_left_activ' href='<?=$arResult[$namber]["LINK"]?>' ><?=$arResult[$namber]["TEXT"]?></a></div>
<?
//выводим вторые уровни пока не достигнем первых
$j=$namber+1;
while ($arResult[$j]['DEPTH_LEVEL']!=1 and $j<$razm):
?>
<?if ($arResult[$j]["DEPTH_LEVEL"] == 2):?>
<div><a class='podmenu' href='<?=$arResult[$j]["LINK"]?>' ><?=$arResult[$j]["TEXT"]?></a></div><?
endif;
$j++;
endwhile;
//выводим остальные первые уровни
while ($j<$razm):?>
<?if ($arResult[$j]["DEPTH_LEVEL"] == 1):?>
<div><a class='menu_left' href='<?=$arResult[$j]["LINK"]?>' ><?=$arResult[$j]["TEXT"]?></a></div><?
endif;
$j++;
endwhile;
}
}
//**********************************************************************************************************
//условие вывода для случая нажатия по DEPTH_LEVEL=2
if($arResult[$namber]['DEPTH_LEVEL']==2)
{
$i=$namber+1;//для случая если нажали на вторую кнопочку меню
$j=0;
$k=$namber;//для отъезда назад для определение номера первого уровня
do{
$k--;
}
while($arResult[$k]['DEPTH_LEVEL']!=1);
//$k - содержит <div> номер первого уровня
//если нажали на на первую секцию второго уровня кнопочку меню
//echo $arResult[$k]["LINK"];
if($k==0)
{
//выводим первую кнопочку первого уровня
?>
<div><a class='menu_left' href='<?=$arResult[$k]["LINK"]?>' ><?=$arResult[$k]["TEXT"]?></a></div>
<?
}
elseif($k>0){
while ($j<=$k):
if ($arResult[$j]["DEPTH_LEVEL"] == 1):?>
<div><a class='menu_left' href='<?=$arResult[$j]["LINK"]?>' ><?=$arResult[$j]["TEXT"]?></a></div><?
endif;
$j++;
endwhile;
}
$j=$k+1;//делаем переменную $j ссылкой на первый элемент второго уровня
if ($namber==$k+1)
{?>
<div><a class='podmenu1' href='<?=$arResult[$namber]["LINK"]?>' ><?=$arResult[$namber]["TEXT"]?></a></div>
<?
}
if ($namber>$k+1)
{
//выводим другие вторые уровни
while ($arResult[$j]['DEPTH_LEVEL']== 2 and $j<$namber):?>
<?if ($arResult[$j]["DEPTH_LEVEL"] == 2):?>
<div><a class='podmenu' href='<?=$arResult[$j]["LINK"]?>' ><?=$arResult[$j]["TEXT"]?></a></div><?
endif;
$j++;
endwhile;
//выводим элемент меню выбранный второго уровня
?>
<div><a class='podmenu1' href='<?=$arResult[$namber]["LINK"]?>' ><?=$arResult[$namber]["TEXT"]?></a></div>
<?
}
//выводим первую секцию с открытым вторым уровнем
if($arResult[$i]['DEPTH_LEVEL']!=1)
{
while ($arResult[$i]['DEPTH_LEVEL']== 3 and $i<$razm):?>
<?if ($arResult[$i]["DEPTH_LEVEL"] == 3):?>
<div><a class='podmenu_2' href='<?=$arResult[$i]["LINK"]?>' ><?=$arResult[$i]["TEXT"]?></a></div><?
endif;
$i++;
endwhile;
}
//выводим другие вторые уровни
/*if($namber==$k+1)
{
$i=$i-1;
}*/
if($arResult[$i]['DEPTH_LEVEL']!=1)
{
while ($arResult[$i]['DEPTH_LEVEL']!= 1 and $i<$razm):
?>
<?if ($arResult[$i]["DEPTH_LEVEL"] == 2):?>
<div><a class='podmenu' href='<?=$arResult[$i]["LINK"]?>' ><?=$arResult[$i]["TEXT"]?></a></div><?
endif;
$i++;
endwhile;
}
//else
//{
//$i=$i-1;
//}//для коректного отображения 1 уровня следующего за вторым
//выводим дальнейшие блоки 1 уровня пока не достигнут конец с массивом меню
while ($i<$razm):?>
<?if ($arResult[$i]["DEPTH_LEVEL"] == 1):?>
<div><a class='menu_left' href='<?=$arResult[$i]["LINK"]?>' ><?=$arResult[$i]["TEXT"]?></a></div>
<?
endif;
$i++;
endwhile;
}
//**********************************************************************************************************//условие вывода для случая нажатия по DEPTH_LEVEL=3
if($arResult[$namber]['DEPTH_LEVEL']==3)
{
$i=$namber+1;
$j=0;
$k=0;//для отъезда назад для определение номера первого уровня
$kk=$namber;
do{
$kk--;
}
while($arResult[$kk]['DEPTH_LEVEL']!=2);
$k=$kk;//в kk находиться номер родительского элемента второго уровня
$namber_3=$kk;
do{
$k--;
}
while($arResult[$k]['DEPTH_LEVEL']!=1);
$i=$kk+1;//для случая если нажали кнопку третьего уровня
//$k - содержит <div> номер первого уровня
//если нажали на на первую секцию второго уровня кнопочку меню
//echo $arResult[$k]["LINK"];
//echo $k;
if($k==0)
{
//выводим первую кнопочку первого уровня
?>
<div><a class='menu_left' href='<?=$arResult[$k]["LINK"]?>' ><?=$arResult[$k]["TEXT"]?></a></div>
<?
}
elseif($k>0){
while ($j<=$k):
if ($arResult[$j]["DEPTH_LEVEL"] == 1):?>
<div><a class='menu_left' href='<?=$arResult[$j]["LINK"]?>' ><?=$arResult[$j]["TEXT"]?></a></div><?
endif;
$j++;
endwhile;
}
$j=$k+1;//делаем переменную $j ссылкой на первый элемент второго уровня
if ($namber_3==$k+1)
{?>
<div><a class='podmenu' href='<?=$arResult[$namber_3]["LINK"]?>' ><?=$arResult[$namber_3]["TEXT"]?></a></div>
<?
}
if ($namber_3>$k+1)
{
//выводим другие вторые уровни
while ($arResult[$j]['DEPTH_LEVEL']!=1 and $j<$namber_3):?>
<?if ($arResult[$j]["DEPTH_LEVEL"] == 2):?>
<div><a class='podmenu' href='<?=$arResult[$j]["LINK"]?>' ><?=$arResult[$j]["TEXT"]?></a></div><?
endif;
$j++;
endwhile;
//выводим элемент меню выбранный второго уровня
?>
<div><a class='podmenu' href='<?=$arResult[$namber_3]["LINK"]?>' ><?=$arResult[$namber_3]["TEXT"]?></a></div>
<?
}
//выводим первую секцию с открытым вторым уровнем
if($arResult[$i]['DEPTH_LEVEL']!=1)
{
while ($arResult[$i]['DEPTH_LEVEL']== 3 and $j<$razm):?>
<?if ($arResult[$i]["DEPTH_LEVEL"] == 3):?>
<div><a class='<?if($i==$namber){?>podmenu1_2<?}else{?>podmenu_2<?}?>' href='<?=$arResult[$i]["LINK"]?>'><?=$arResult[$i]["TEXT"]?></a></div><?
endif;
$i++;
endwhile;
}
//выводим другие вторые уровни
if($arResult[$i]['DEPTH_LEVEL']!=1)
{
while ($arResult[$i]['DEPTH_LEVEL']== 2 and $i<$razm):
?>
<?if ($arResult[$i]["DEPTH_LEVEL"] == 2):?>
<div><a class='podmenu' href='<?=$arResult[$i]["LINK"]?>' ><?=$arResult[$i]["TEXT"]?></a></div><?
endif;
$i++;
endwhile;
}
//else
//{
//$i=$i-1;
//}//для коректного отображения 1 уровня следующего за вторым
//выводим дальнейшие блоки 1 уровня пока не достигнут конец с массивом меню
while ($i<$razm):?>
<?if ($arResult[$i]["DEPTH_LEVEL"] == 1):?>
<div><a class='menu_left' href='<?=$arResult[$i]["LINK"]?>' ><?=$arResult[$i]["TEXT"]?></a></div>
<?
endif;
$i++;
endwhile;
}
//print_r($arR);
?>
|
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
//delayed function must return a string
if(empty($arResult))
return "";
for($index = 0, $itemSize = count($arResult); $index < $itemSize; $index++)
{
$indexplus = $index + 1;
if($index > 0)
$strReturn .= ' → ';
$title = htmlspecialcharsex($arResult[$index]["TITLE"]);
if($arResult[$index]["LINK"] <> "")
if($indexplus == $itemSize) {$strReturn .= ''.$title.'';}
else {
$strReturn .= '<a href="'.$arResult[$index]["LINK"].'" title="'.$title.'">'.$title.'</a>';
}
else
$strReturn .= $title;
}
return $strReturn;
?>
|
public function event_main_OnProlog_SetRules(){} |
В дальнейшем новости проекта буду постить в специализированную группу.
class StepOnStep extends CWizardStep
{
function InitStep()
{
// зацикливаем шаг сам на себя
$this->SetStepID("StepOnStep");
$this->SetNextStep("StepOnStep");
// проверяем переменную выхода из цикла
$wizard =& $this->GetWizard();
$finish = $wizard->GetVar("finish");
// если пора выходить, перенаправляем шаг на конечный
if($finish)
$this->SetNextStep("Finish");
}
function ShowStep()
{
// левая граница для выборки
$left = $wizard->GetVar("left");
$left = $left?$left:0;
// правая граница для выборки
$right = $wizard->GetVar("right");
$right = $right?$right:100;
// флаг завершения шага мастера
$finish = $wizard->GetVar("finish");
$finish = $finish?$finish:0;
// номер подключаемого файла
$step = $wizard->GetVar("step");
$step = $step?$step:0;
// строим имя подключаемого файла
$file_name = $step?"index".$step.".php":"index.php";
$path = str_replace("wizard.php", "", __FILE__)."steps/".$file_name;
// если шаги закончились выходим из цикла
if( !file_exists($path) )
$this->content .= $this->ShowHiddenField("finish", 1);
else
include($path);
// сабмитим форму (автоматически нажимаем кнопку Далее) метод AutoSubmit не работает для своих типов шагов, пришлось руками запускать.
$this->content .= "<script>SubmitForm('next');</script>";
}
}
|
// тут делаем какие то действия, узнаем количество записей в таблице
.............
// собственно проверяем - если левая граница больше количества элементов, то заканчиваем работу с текущем файлом index{$step}.php
/* Этот блок в условии обязателен для каждого файла, иначе шаг никогда не выйдет из цикла */
if($left > $count)
{
$left = 0; // обнуляем левую границу для зацикленного шага
$right = 100; // "обнуляем" правую границу для зацикленного шага
// переходим к следующему файлу index{$step+1}.php
$step += 1;
// устанавливаем скрытую переменную с номером файла
$this->content .= $this->ShowHiddenField("step", $step);
}
// если мы перебрали еще не все записи
else
{
$query = "SELECT * FROM table_name LIMIT ".$left.", ".$right;
$result = mysql_query($query, $link);
while( $arItem = mysql_fetch_assoc($result) )
{
// делаем какие то действия с выборкой
}
// увеличиваем границы шага
$left += 100;
$right += 100;
}
// передаем новые границы зацикленному шагу мастера
$this->content .= $this->ShowHiddenField("left", $left);
$this->content .= $this->ShowHiddenField("right", $right);
|
File: ... /bitrix/modules/search/classes/general/search.php Line: 201 MySQL Query Error: SELECT sc.ID ,sc.MODULE_ID ,sc.IT... [Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='] |
alter table b_search_content modify `SEARCHABLE_CONTENT` longtext NULL collate utf8_unicode_ci; alter table b_search_content modify `TITLE` text NULL collate utf8_unicode_ci; alter table b_search_content modify `TAGS` text NULL collate utf8_unicode_ci; alter table b_search_content modify `BODY` text NULL collate utf8_unicode_ci; alter table b_search_content modify `URL` text NULL collate utf8_unicode_ci; alter table b_search_content modify `PARAM1` text NULL collate utf8_unicode_ci; alter table b_search_content modify `PARAM2` text NULL collate utf8_unicode_ci; alter table b_search_content modify `LID` char(2) NOT NULL collate utf8_unicode_ci; alter table b_search_content modify `UPD` varchar(32) NULL collate utf8_unicode_ci; alter table b_search_content modify `ITEM_ID` varchar(255) NOT NULL collate utf8_unicode_ci; alter table b_search_content_site modify `SITE_ID` char(2) NOT NULL collate utf8_unicode_ci; alter table b_search_content_stem modify `LANGUAGE_ID` char(2) NOT NULL collate utf8_unicode_ci; alter table b_search_content_stem modify `STEM` varchar(50) NOT NULL collate utf8_unicode_ci; alter table b_lang modify `LID` char(2) NOT NULL collate utf8_unicode_ci; alter table b_search_tags modify `SITE_ID` char(2) NOT NULL collate utf8_unicode_ci; alter table b_search_content_freq modify `LANGUAGE_ID` char(2) NOT NULL collate utf8_unicode_ci; alter table b_search_content_freq modify `SITE_ID` char(2) NULL collate utf8_unicode_ci; alter table b_search_content_freq modify `STEM` varchar(50) NOT NULL collate utf8_unicode_ci; |

На картинки анонса и/или детального описания элемента инфоблока. Так же можно выбрать положение водяного знака и прозрачность.