Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2008-12-03 10:42:55

oktano
Участник
Зарегистрирован: 2008-10-17
Сообщений: 57
Рейтинг :   
Сайт

Изменить вид alt_name

Ребята, помогите изменить генерацию alt_name к новости. На данный момент двиг при создании новости генерирует урл вида - http://yoursite.com/section/name_of_news.html, то есть в качестве разделителя применяется нижнее подчеркивание, мне же надо сделать урлы вида - http://yoursite.com/section/name-of-news.html, чтобы в качестве разделителя был дефис. Подскажите, как, что и где изменять.

Изменено oktano (2008-12-03 10:45:26)

Не в сети

#2 2008-12-03 12:17:20

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   117 

Re: Изменить вид alt_name

Меняем генерацию alt_name при добавлении новости (engine/addnews.php) :
строку 51:

		$alt_name = preg_replace(array('/\./', '/(_{2,20})/', '/^(_+)/', '/(_+)$/'), array('_', '_'), $alt_name);

меняеем на:

		$alt_name = preg_replace(array('/\./', '/(_{2,20})/', '/^(_+)/', '/(_+)$/'), array('-', '-'), $alt_name);

По уже созданным новостям alt_name надо менять ручками.

Не в сети

#3 2008-12-03 21:19:37

oktano
Участник
Зарегистрирован: 2008-10-17
Сообщений: 57
Рейтинг :   
Сайт

Re: Изменить вид alt_name

Виталик, ты немного ошибся. Я вот на 2z форуме посмотрел, правильное решение огласил kt2k:
Находим:

        // Make alt_name equal to '_' if it appear to be blank after conversion
        if ($alt_name == '') $alt_name = '_';
        $i = '';
        while ( is_array($mysql->record("select id from ".prefix."_news where alt_name = ".db_squote($alt_name.$i)." limit 1")) ) {
            $i++;
        }

        $SQL['alt_name'] = $alt_name.$i;

Заменяем на:

        // Make alt_name equal to '_' if it appear to be blank after conversion
        if ($alt_name == '') $alt_name = '_';
        $alt_name     = str_replace('_','-',$alt_name);
        $i = '';
        while ( is_array($mysql->record("select id from ".prefix."_news where alt_name = ".db_squote($alt_name.$i)." limit 1")) ) {
            $i++;
        }

        $SQL['alt_name'] = $alt_name.$i;

Не в сети

#4 2008-12-03 23:45:31

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   117 

Re: Изменить вид alt_name

oktano, частично согласен smile
Мой вариант действительно не работал, т.к. он решал только часть задачи основная замена пробелов на подчерки происходит в другом месте.

Твой вариант будет адекватно работать.

Не в сети

#5 2009-02-08 16:44:49

Trashcka
Участник
Откуда КиевГрад
Зарегистрирован: 2008-12-04
Сообщений: 1,487
Рейтинг :   73 

Re: Изменить вид alt_name

А как сделать подобное, только для категорий, чтобы при добавлении категории вида: Категория один alt получалось kategoria-odin?
"Под шумок" можно и для статики подсказать, если не затруднит.

Не в сети

#6 2009-02-08 18:44:05

ROZARD
Модератор
Откуда Россия, Астрахань
Зарегистрирован: 2008-10-13
Сообщений: 1,523
Рейтинг :   82 
Сайт

Re: Изменить вид alt_name

После 257стр:

// Generate uniq alt_name if no alt_name specified
		$alt_name = strtolower( $parse->translit(trim($title), 1) );

Вставь:

// Make a conversion:
		// * '.'  to '_'
		// * '__' to '_' (several to one)
		// * Delete leading/finishing '_'
		$alt_name = preg_replace(array('/\./', '/(_{2,20})/', '/^(_+)/', '/(_+)$/'), array('_', '_'), $alt_name);

		// Make alt_name equal to '_' if it appear to be blank after conversion
		if ($alt_name == '') $alt_name = '_';
		$alt_name     = str_replace('_','-',$alt_name);

Не в сети

#7 2009-02-11 14:40:12

Trashcka
Участник
Откуда КиевГрад
Зарегистрирован: 2008-12-04
Сообщений: 1,487
Рейтинг :   73 

Re: Изменить вид alt_name

ROZARD, спасибо большое, это было логично, туплю видимо )))

А как на счет категорий?

Не в сети

#8 2009-02-11 22:34:33

ROZARD
Модератор
Откуда Россия, Астрахань
Зарегистрирован: 2008-10-13
Сообщений: 1,523
Рейтинг :   82 
Сайт

Re: Изменить вид alt_name

Пока никак...:(

Не в сети

Подвал раздела

Работает на FluxBB