Функция $APPLICATION->SetTitle() по сути устанавливает значение настройки страницы/раздела с именем title в указанное значение. По сути $APPLICATION->SetTitle() - это тоже самое, что и $APPLICATION->SetPageProperty("title", $new_title); . А заголовок окна браузера и заголовок страницы устанавливаются одинаковыми. В связи с этим вам необходимо для окна браузера задать свою переменную, которая будет отображаться, если задана. Если не задана, то будет показываться основной заголовок страницы. Я вот например реализовал это специальной функцией:
Код
function getPageTitle () {
global $APPLICATION;
if ($title = $APPLICATION->GetProperty("browser_title")) return $title;
elseif ($title = $APPLICATION->GetTitle()) return $title;
else {
$arSite = CSite::GetByID(SITE_ID);
$arSite = $arSite->Fetch();
return $arSite['SITE_NAME'];
}
}
Эта функция сначала ставит browser_title, если нет - стандартный заголовок, если нет - название сайта. Таким образом у страницы заголовок будет всегда и может отличаться от заголовка на странице. Переменную browser_title я устанавливаю откуда ни попадя. Это может быть и пользовательское поле UF_TITLE, может быть и просто отдельная настройка статичной страницы, на странице товара тоже может быть своё. Получить значение пользовательского поля можно с помощью функции CUserTypeEntity::GetList(), либо в вашем случае можно дернуть раздел:
Но учтите, что в фильтре обязательно должен быть установлен IBLOCK_ID. Для выборки одного раздела просто укажите в фильтре его ID. Ну а потом получите массив с помощью rsSection->GetNext(), в нем будут все пользовательские поля, можете их установить для browser_title:
Еще есть полезная функция - MakeTimeStamp() - переводит дату из формата битрикса в нормальный человеческий UNIX_TIMESTAMP. Честно говоря, представление дат в битриксе и хранение их именно в формате DATETIME дико напрягает - всё равно везде приходится конвертировать даты туда-сюда. Во всех нормальных системах даты и время хранится именно в виде UNIX_TIMESTAMP,
Я знаю одно из решений - не пользоваться визуальным редактором при правке шаблонов, а другие есть?
Нет. Не пользуйтесь визуальным редактором для редактирования шаблонов - он не Dreamweaver и даже рядом не валялся. Он подходит лишь для редактирования контента страниц с простейшим форматированием и для визуального управления компонентами - хотя в последнем случае тоже не всегда уместен.
Включите отображение ошибок в PHP - тогда вместо белых экранов будет сообщение об ошибке. Включается либо в php.ini, либо в файле /bitrix/php_interface/dbconn.php укажите
переписать комплексный компонент, чтобы он анализировал такие запросы и выдавал нужный контент. Ну еще будет гемор с генерацией ссылок в списке элементов инфоблока, поиске и т.д.
Задался вчера примерно тем же вопросом - как менять шаблон постраничной навигации. Обычные методы не помогали, обратился в саппорт и был получен ответ свыше:
Код
Для постраничного показа можно использовать следующие параметры для изменения внешнего вида:
NavPrint($Title, $Show_allways=false, $StyleText="text", $Template_path)
$Title - заголовок (название записи);
$Show_allways - если не установлен (false), то функция не будет выводить навигационные ссылки если все записи умещаются в одну страницу. Если true, то ссылки для постраничной навигации будут выводиться всегда. Необязательный, по умолчанию false;
$StyleText - стиль шрифта;
$Template_path - путь шаблону показа.
Шаблон показа постраничной навигации формируется по умолчанию следующим образом (можно вынести в отдельный файл, скорректировать и указать путь к шаблону в вызове функции):
>-------------- цитата -----------------
<?
echo('<font class="'. $StyleText.'">'. $title.' ');
echo(($this->NavPageNomer-1)*$this->NavPageSize+1);
echo(' - ');
if($this->NavPageNomer != $this->NavPageCount)
echo($this->NavPageNomer * $this->NavPageSize);
else
echo($this->NavRecordCount);
echo(' '.GetMessage("nav_of").' ');
echo($this->NavRecordCount);
echo("\n
\n</font>");
echo('<font class="'. $StyleText.'">');
if($this->NavPageNomer > 1)
echo('<a href="'. $sUrlPath.'?PAGEN_'. $this->NavNum.'=1'. $strNavQueryString.'#na
v_start'. $add_anchor.'">'. $sBegin.'</a> | <a
href="'. $sUrlPath.'?PAGEN_'. $this->NavNum.'='.($this->NavPageNomer-1). $strNavQueryString.'#nav_start'. $add_anchor.'">'. $sPrev.'</a>');
else
echo($sBegin.' | '. $sPrev);
echo(' | ');
$NavRecordGroup = $nStartPage;
while($NavRecordGroup <= $nEndPage)
{
if($NavRecordGroup == $this->NavPageNomer)
echo(''. $NavRecordGroup.' ');
else
echo('<a href="'. $sUrlPath.'?PAGEN_'. $this->NavNum.'='. $NavRecordGroup. $strNavQueryString.'#nav_start'. $add_anchor.'">'. $NavRecordGroup.'</a> ');
$NavRecordGroup++;
}
echo('| ');
if($this->NavPageNomer < $this->NavPageCount)
echo ('<a href="'. $sUrlPath.'?PAGEN_'. $this->NavNum.'='.($this->NavPageNomer+1). $strNavQueryString.'#nav_start'. $add_anchor.'">'. $sNext.'</a> |&n bsp;<a
href="'. $sUrlPath.'?PAGEN_'. $this->NavNum.'='. $this->NavPageCount. $strNavQueryString.'#nav_start'. $add_anchor.'">'. $sEnd.'</a> ');
else
echo ($sNext.' | '. $sEnd.' ');
//"All" section is being show with the code below
if($this->bShowAll)
echo ($this->NavShowAll? '| <a href="'. $sUrlPath.'?SHOWALL_'. $this->NavNum.'=0'. $strNavQueryString.'#
nav_start'. $add_anchor.'">'. $sPaged.'</a> ' : '| <a
href="'. $sUrlPath.'?SHOWALL_'. $this->NavNum.'=1'. $strNavQueryString.'# nav_start'. $add_anchor.'">'. $sAll.'</a> ');
echo('</font>');
?>
Кто-то может перевести с саппортского? Про компонент bitrix:system.pagenavigation и его шаблон ни слова.
Вам не надо производить проверку file_exist. Если путь $arSection["PICTURE"]["SRC"] указан, значит он есть (скорее всего). Иначе $arSection["PICTURE"] - было бы пустым (файл не загружен). А если уж производите проверку file_exist, то перед $arSection["PICTURE"]["SRC"] надо указывать $_SERVER['DOCUMENT_ROOT'] потому что в $arSection["PICTURE"]["SRC"] путь от корня сайта, а надо проверять абсолютный путь от корня файловой структуры ОС. А вообще, ваш код лучше пусть будет таким:
Это явно будет не на PHP, а на JavaScript. К тому же сильно зависит от браузера - в большинстве браузеров работа с буфером обмена закрыта в целях безопасности.
Видимо, вы использовали комплексный компонент для вывода новостей. В хедере сделайте вывод списка новостей, а комплексный компонент разместите на отдельной странице, допустим /news/ . Только ссылки нормально настроить не забудьте.
В компоненте подключение шаблона производится методом
Код
$this->IncludeComponentTemplate();
В эту функцию можно передать название файла с шаблоном. Допустим,
Код
$this->IncludeComponentTemplate("new");
Будет подключаться файл шаблона new.php, который находится в папке текущего шаблона. По умолчанию подключается файл template.php . Собственно сюда можете вставлять значение некой переменной, которая указывает на шаблон. Это как бы подшаблоны или шаблон в шаблоне. Простой вариант для частного решения.
Делаем новый компонент или кастомизируем старый для показа товарного раздела. Показ подразделов - это отдельный компонент. Выбрать фирмы производителей - тут немного посложнее - тут лучше вставить кусок PHP-кода, который делает выборку из ИБ с группировкой по свойству "Производитель" - получите список производителей и количество товаров для каждого из них. Я на днях такую фиговину делал, получилось нечто вроде списка производителей в разделе, аналог на этой странице (блок "В этом разделе" справа).
У меня поставлена такая задача на сегодня, буду решать. Предполагается такой вариант. Цены у каждого товара могут быть в принципе в любой валюте. На выводе цены конвертятся в шаблоне по курсу указанной валюты. Посетитель магазина указывает свою валюту, система ее "знает". Еще надо решить вопрос с корзиной и оформлением заказа. Видимо, будет свой обработчик на корзину и заказ.
Юрий, вся страна работает на градообразующих и государственных предприятиях с 8 до 17 с обедом с 12 до 13, вы там в Москве просто перестроились под разумные нормативы
Проверка лицензии происходит по текущим версиям модулей. Если вы ставите битрикс заново, версии модулей будут другими, вам надо будет обратиться в техподдержку, чтобы обнулили лицензию и тогда вы снова сможете ее использовать на сайте.
для автоматического прикрепления надо придумать некий алгоритм, по которому будет прикрепляться менеджер. А технически само прикрепление можно организовать на дополнительных полях пользователя.