Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля
Страницы: 1  |  2
04.04.2013, 14:02
Гость
Гость

интересует такой вопрос
как сделать чтобы при подписывания названия товара Seo ссылка сама прописывалась ?
на сколько я знаю сейчас это во всех современных форумах и сайтах есть.
пример : название товара "Золотая рыбка" адрес товара "zolotay-rybka.xtml
но "zolotay-rybka приходится писать самому а это напрягает.
кто создал сказали не парьтесь можно и не подписывать...

P.s тогда зачем такое Seo вообще
04.04.2013, 15:34
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 1037

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

Транслитерация ключевых слов
Первый способ [Действия после добавления или редактирования]
if(!$f_Keyword){
$Keyword_bd = $db->get_var("SELECT name FROM Message$classID WHERE Message_ID=".$message); # Заносим в переменную "заголовок[name] обьекта"
$Keyword_bd_translit = nc_transliterate($Keyword_bd); # Транслитируем текст
$Keyword_bd_replace = str_replace(' ','_',$Keyword_bd_translit); # Заменяем пробелы на нижнее подчеркивание
$db->query("UPDATE Message$classID SET Keyword='".$Keyword_bd_replace."' WHERE Message_ID=".$message); # Делаем замену объекта в базе данных
}

Второй способ [В условия добавления]
if(!$f_Keyword) $f_Keyword = preg_replace('#[^[:word:]]#','',nc_transliterate(str_replace(' ','_',strtolower($f_name)))); # При условии что поле Keyword не за полненно вставляем текст из поля name где пробелы заменены на нижнее подчеркивание

На примере этого вы можете заполнить любые поля например СЕО. К слову в СЕО Есть заголовок ключевые слова и описание а ссылка на верху над СЕО закладкой является ключевым словом. Иногда лучше скирншоты присылайте чем непонятно что пишите.

Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
04.04.2013, 19:39
ipm
Ильин Павел

Зарегистрирован:
2012-10-12
Сообщений: 386

Спасибо Вам, из Вашего ответа получил ответы на некоторые вопросы, которые меня мучали) Единственное, не нравится, что после добавления объекта, транслируется всё правильно, но ещё хочется, чтобы ключевое слово начиналось с маленькой буквы. а то не красивая ссылка получается) Можно ли что-то дописать в коде, конкретно в коде второго варианта, чтобы поле $Keyword заполнялось с маленькой буквы, не зависимо с какой буквы значение в поле $name?

Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
09.04.2013, 16:06
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 1037

Используйте strtolower() Код выше исправлен с учетом ваших пожеланий

Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
30.05.2013, 12:54
ipm
Ильин Павел

Зарегистрирован:
2012-10-12
Сообщений: 386

А как сделать так, чтобы вместо пробелов подставлялось верхние подчёркивание вместо нижнего, т.е. дефис?

Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
30.05.2013, 13:20
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Ну например так:
$subject=ereg_replace(' +','-',$subject); // заменяем пробелы (в том числе повторяющиеся) на один дефис
$subject=ereg_replace('_','-',$subject); // заменяем нижнее подчеркивание на дефис

Или вот выше вам предложили ведь решение, только исправьте в нем знак на нужный, да и все:
$Keyword_bd_replace = str_replace(' ','-',$Keyword_bd_translit); # Заменяем пробелы ...
30.05.2013, 14:45
ipm
Ильин Павел

Зарегистрирован:
2012-10-12
Сообщений: 386

Я использую этот код:
Код:
if(!$f_Keyword) $f_Keyword = preg_replace('#[^[:word:]]#','',nc_transliterate(str_replace(' ','_',strtolower($f_name))));


И если в нём заменить (' ','_',strtolower($f_name)))) на (' ','-',strtolower($f_name)))), то не работает.

Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
30.05.2013, 15:32
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Тогда попробуйте заэкранируовать дефис с помошью слэша.
Вот так: (' ','\-',strtolower($f_name))))
Дело в том, что этот знак является зарезервированным в regex.
30.05.2013, 15:59
ipm
Ильин Павел

Зарегистрирован:
2012-10-12
Сообщений: 386

Я так попробовал...пробелы просто игнорируются. Что \- , что просто со знаком -

Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
03.06.2013, 15:20
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Сложно вот так заочно предположить, в чем истинная причина. Вроде бы все должно работать, если делали как описали выше.
В крайнем случае, если так и не разберетесь - обращайтесь лично, я за вознаграждение помогу решить проблему.
04.06.2013, 13:34
ipm
Ильин Павел

Зарегистрирован:
2012-10-12
Сообщений: 386

С помощью первого способа описанного выше, удалось решить задачу.

Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
198 196 2013-06-07 20:55:24 12993
Страницы: 1  |  2
Описание проекта