Как убрать пробелы из URL адреса

brituy
На сайте с 13.03.2013
Offline
27
1379

Адреса формируются следующим образом

/brands/гамма/

/brands/royal%20czech%20porcelain/

/brands/rainbow/

CMS Bitrix

Однословники на англ хорошо, но пробелы не заменяются на дефис и русские слова без транслита.

Помогите пожалуйста, что делать?

В обработке адресов следующее

Условие #^/brands/([\s\S]+)/#

ПРавило brand=$1

В файле /brands/index.php

<?

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

$APPLICATION->SetTitle("Бренды");

?>

<? if(empty($_REQUEST['brand'])): ?>

<?

$arBrands = array();

$res = CIBlockPropertyEnum::GetList(array("SORT"=>"ASC", "VALUE"=>"ASC"), array('PROPERTY_ID' => 81));

while($arValues = $res->GetNext()){

$arBrands[] = $arValues;

}

?>

<? if(!empty($arBrands)): ?>

<?

$count = count($arBrands);

$inCol = round($count/4);

$i = 1;

?>

<div class="g-menu b-brands_list">

<ul>

<? foreach($arBrands as $brand): ?>

<li>

<a href="/brands/<?=strtolower($brand['VALUE']); ?>/"><?=$brand['VALUE']; ?></a>

</li>

<? if($i%$inCol == 0 && $count > $i): ?>

</ul>

<ul>

<? endif; ?>

<? $i++; ?>

<? endforeach; ?>

</ul>

</div>

<? endif; ?>

<? else: ?>

<?

$curbrand = '';

$res = CIBlockPropertyEnum::GetList(array("SORT"=>"ASC", "VALUE"=>"ASC"), array('PROPERTY_ID' => 81));

while($brand = $res->GetNext()){

if (strtolower($brand['VALUE']) == urldecode($_REQUEST['brand']))

$curbrand = $brand['VALUE'];

}

global $arrFilter;

$arrFilter = array(

'PROPERTY_PROIZVODITEL_VALUE' => $curbrand

);

$APPLICATION->SetTitle($curbrand);

$APPLICATION->AddChainItem();

//if(CModule::IncludeModule("iblock")){

// $arSelect = Array("ID", "NAME", "DETAIL_TEXT", "PROPERTY_IMAGE");

// $arFilter = Array("IBLOCK_ID"=>5, "ID"=>$_REQUEST['id']);

// $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);

// if($ar_res = $res->Fetch()){

// if($ar_res['PROPERTY_IMAGE_VALUE']){

// $arFileTmp = CFile::ResizeImageGet(

// $ar_res['PROPERTY_IMAGE_VALUE'],

// array("width" => 200, "height" => 200),

// BX_RESIZE_IMAGE_PROPORTIONAL,

// true

// );

// }

// $arrBrand = array(

// 'TITLE' => $ar_res['NAME'],

// 'DESCRIPTION' => $ar_res['DETAIL_TEXT'],

// 'IMAGE' => $arFileTmp['src'] ? $arFileTmp['src'] : false

// );

// }

//}

?>

<? if(!empty($arrBrand)): ?>

<?

$APPLICATION->SetTitle($arrBrand['TITLE']);

$APPLICATION->AddChainItem();

?>

<div class="b-brand-description">

<? if($arrBrand['IMAGE']): ?>

<div class="b-brand-description-image">

<img src="<?=$arrBrand['IMAGE']; ?>" alt="<?=$arrBrand['TITLE']; ?>" />

</div>

<? endif; ?>

<? if(!empty($arrBrand['DESCRIPTION'])): ?>

<?=$arrBrand['DESCRIPTION']; ?>

<? endif; ?>

<div class="g-clean"></div>

</div>

<? endif; ?>

<?$APPLICATION->IncludeComponent(

"ma:catalog.section",

"blocks3",

array(

"COMPONENT_TEMPLATE" => "blocks3",

"IBLOCK_TYPE" => "1c_catalog",

"IBLOCK_ID" => "11",

"SECTION_ID" => $_REQUEST["SECTION_ID"],

"SECTION_CODE" => "",

"SECTION_USER_FIELDS" => array(

0 => "",

1 => "",

),

"ELEMENT_SORT_FIELD" => "sort",

"ELEMENT_SORT_ORDER" => "asc",

"FILTER_NAME" => "arrFilter",

"INCLUDE_SUBSECTIONS" => "Y",

"SHOW_ALL_WO_SECTION" => "Y",

"PAGE_ELEMENT_COUNT" => "20",

"PROPERTY_CODE" => array(

0 => "CML2_ARTICLE",

1 => "ALL",

2 => "",

),

"DISPLAY_IMG_WIDTH" => "205",

"DISPLAY_IMG_HEIGHT" => "160",

"SECTION_URL" => "/#IBLOCK_CODE#/#SECTION_CODE#/",

"DETAIL_URL" => "/product/#ELEMENT_CODE#/",

"ACTION_VARIABLE" => "action",

"PRODUCT_ID_VARIABLE" => "id",

"PRODUCT_QUANTITY_VARIABLE" => "quantity",

"PRODUCT_PROPS_VARIABLE" => "prop",

"SECTION_ID_VARIABLE" => "SECTION_ID",

"AJAX_MODE" => "N",

"AJAX_OPTION_JUMP" => "N",

"AJAX_OPTION_STYLE" => "Y",

"AJAX_OPTION_HISTORY" => "N",

"AJAX_OPTION_ADDITIONAL" => "",

"CACHE_TYPE" => "A",

"CACHE_TIME" => "36000000",

"CACHE_GROUPS" => "Y",

"META_KEYWORDS" => "-",

"META_DESCRIPTION" => "-",

"BROWSER_TITLE" => "-",

"PAGE_TITLE" => "-",

"ADD_SECTIONS_CHAIN" => "N",

"DISPLAY_COMPARE" => "N",

"SET_TITLE" => "N",

"SET_STATUS_404" => "N",

"CACHE_FILTER" => "N",

"ACTIVE_DATE_FORMAT" => "d.m.Y",

"PRICE_CODE" => array(

0 => "РОЗНИЦА",

),

"USE_PRICE_COUNT" => "N",

"SHOW_PRICE_COUNT" => "1",

"PRICE_VAT_INCLUDE" => "Y",

"PRICE_VAT_SHOW_VALUE" => "N",

"PRODUCT_PROPERTIES" => array(

),

"USE_PRODUCT_QUANTITY" => "N",

"BASKET_URL" => "/personal/cart/",

"USE_POPUP_BASKET" => "N",

"USE_BASKET_SCRIPT" => "Y",

"PAGER_TEMPLATE" => "modern",

"DISPLAY_TOP_PAGER" => "N",

"DISPLAY_BOTTOM_PAGER" => "Y",

"PAGER_TITLE" => "Товары",

"PAGER_SHOW_ALWAYS" => "N",

"PAGER_DESC_NUMBERING" => "N",

"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",

"PAGER_SHOW_ALL" => "N",

"FILTER_PROPERTIES" => array(

)

),

false

);?>

<? endif; ?>

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

[Удален]
#1
brituy:
Адреса формируются следующим образом

/brands/гамма/
/brands/royal%20czech%20porcelain/
/brands/rainbow/
CMS Bitrix
Однословники на англ хорошо, но пробелы не заменяются на дефис и русские слова без транслита.
Помогите пожалуйста, что делать?

В обработке адресов следующее
Условие #^/brands/([\s\S]+)/#
ПРавило brand=$1

Необходимо заменить пробелы нижним подчеркиванием или дефисом. Для SEO лучше дефисом.☝

brituy
На сайте с 13.03.2013
Offline
27
#2
Well-Web:
Необходимо заменить пробелы нижним подчеркиванием или дефисом. Для SEO лучше дефисом.☝

Вопрос не в том, что лучше, а как это сделать

[Удален]
#3
brituy:
Вопрос не в том, что лучше, а как это сделать

SSH и sed Вам в помощь)

L
На сайте с 10.02.2015
Offline
246
#4

Какое чучело вам сайт писало? :)

Почему именно Битрикс? На нем легко говнокодить? :)

Aisamiery
На сайте с 12.04.2015
Offline
312
#5

В битриксе в настройках инфоблока во вкладке "Поля" Есть пункт "Символьный код", такой же есть и у разделов, там можно выставить все нужные вам настройки скрин

А те элементы что уже посоздавали, нужно написать скриптик, который веберет все элементы и пересоздаст поле CODE, если сами не сможете - обращайтесь

---------- Добавлено 01.10.2016 в 14:24 ----------

livetv:
Какое чучело вам сайт писало? :)
Почему именно Битрикс? На нем легко говнокодить? :)

Говнокодить легко на всем, даже на том, где говнокодить впринципе нельзя, у PHP слишком низкий порог вхождения, по-этому квалификация спецов оставляет желать лучшего

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
Крошка
На сайте с 23.12.2009
Offline
80
#6

переделать существующие урлы без дополнительного кода не удастся. Ищите специалиста который сможет сделать вам нужный модуль иначе еще долго будете мучится

LinkBoss.net - Трастовые ссылки для увеличения трафика в 10 раз! (http://linkboss.net/)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий