C

Cruzka

Времена не выбирают..
+105
Репутация
1108
Рейтинг
#1 Убрать названия категорий из url статьи 26 октября 2012 в 22:45


Вроде как
site.ru/grecheskij-123.html, где 123 — id? тогда будут рабочими и указывающими на эту же статью любые урл вида site.ru/asdasdads-123.html, где просто тот же id. Запросто могут и дубли появиться

Cruzka

не будут.

мы формируем урл: 'id'-'seolink'

пользователь может менять seolink, а id автоматом подставится.

поэтом удублей не будет при урле вида site.ru/123-grecheskij-salat.html

picaboo

понял. нужно чтобы выборка была по id, а если пользователь зашёл на страницу с верным id, но неверным seolink, редиректить его 301 на правильный сеолинк с ид
#2 instant на Безплатный хост 26 октября 2012 в 15:03
была похожая проблема (или не очень похожая), когда при заливке новой instant она не работала.
проблема оказалось в том, что при заливке фтп-клиент все файлы залил с именами, исправив все заглавные буквы на маленькие (было, например, classModel.php, а залилось classmodel.php).
проверьте это
#3 1.10? 2?.. 26 октября 2012 в 13:27
Fuze, здравствуйте. Очень интересует Ваше мнение по сабжу
#4 Убрать названия категорий из url статьи 26 октября 2012 в 12:44

если найти где...

Cruzka
А это, если я правильно понимаю, находится не в 1 месте: это и ссылки редактирования, и лента обновлений, и комментарии..

Cruzka:
И я не проверял что будет если добавить 2 статьи с одинаковым урл.
Вот с этого стоило бы начать!

Ленивый
вторая статья с тем же урл не добавится, будет ошибка mysql. другое дело, как на неё среагирует Instant.

Cruzka, ваше решение упрется в дубли страниц. для решения этой проблемы придется вводить в урл индентификатор (id новости) и делать выборку статей по нему. некоторые утверждают что выборка по id быстрее чем по урлу. может даже ускорите своим хаком движок.

picaboo
Вроде как
site.ru/grecheskij-123.html, где 123 — id? тогда будут рабочими и указывающими на эту же статью любые урл вида site.ru/asdasdads-123.html, где просто тот же id. Запросто могут и дубли появиться

Вот здесь — простое решение: instantcms.ru/forum/thread6216.html. В InstantCMS 1.10 RC5 работает, в RC6 ещё не проверял. Или, может, с этим способом что-то не так?

Positive
Я, честно говоря, не искал на форуме готовых решений..
А так в том способе делается то же, что и в моём: в базе сохраняется в seolink то же что в url, и всё
#5 Убрать названия категорий из url статьи 26 октября 2012 в 02:22
если найти где…
#6 Убрать названия категорий из url статьи 26 октября 2012 в 02:19


А почему нельзя тогда не внося изменений просто брать урл?

eoleg

можно, так даже проще будет.
#7 1.10? 2?.. 26 октября 2012 в 02:15


Для 1.9 очень много компонентов разработано, дополнений. НО! После установки, требует качественного допила. Система очень сырая.

Ставьте 1.10 тестируйте вместе с нами!

Минона
и так, либо 1.10, либо 2.


1.10 и потом мигрировать будет проще на 2 как обещают

eoleg
хорошо бы если так =)
#8 Статья сразу в нескольких разделах 26 октября 2012 в 02:07


мм ок, а в блоге лучше, или темой на форуме?

Cruzka
у вас по моему еще нет возможности блог заводить, плюс добавил

eoleg

Вы правы =)

Вам не хватает кармы для создания личного блога. Требуется — 35, имеется — 4.

instantcms.ru

написал: Убрать названия категорий из url статьи
#1 Убрать названия категорий из url статьи 26 октября 2012 в 02:03

Почему

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

из

site.ru/eda/pervoe/salat.html

сделать

site.ru/salat.html

Как

В базе хранятся 2 урла статьи: url и seolink
url — адрес страницы, seolink — путь + адрес страницы
например:

site.ru/eda/pervoe/salat.html
url — salat.html
seolink — eda/pervoe/salat.html

При вводе адреса, движок выбирает из базы статью с соответствующим seolink.

Всё что нам нужно — при создании либо редактировании статьи записывать одно и тоже значение url как в url, так и в seolink.

Для этого, в файле

components/content/model.php

правим функцию

  1. public function addArticle($article){
а именно строки переменной $sql в ней:
  1. $sql = "INSERT INTO cms_content (category_id, user_id, pubdate, enddate,
  2. is_end, title, description, content,
  3. published, hits, meta_desc, meta_keys,
  4. showtitle, showdate, showlatest,
  5. showpath, ordering, comments, seolink,
  6. canrate, pagetitle, url, tpl)
  7. VALUES ('{$article['category_id']}', '{$article['user_id']}', '{$article['pubdate']}', '{$article['enddate']}',
  8. '{$article['is_end']}', '{$article['title']}', '{$article['description']}', '{$article['content']}', '{$article['published']}', 0,
  9. '{$article['meta_desc']}', '{$article['meta_keys']}', '{$article['showtitle']}', '{$article['showdate']}', '{$article['showlatest']}',
  10. '{$article['showpath']}', {$ordering}, '{$article['comments']}', '{$article['url']}',
  11. '{$article['canrate']}', '{$article['pagetitle']}', '{$article['url']}', '{$article['tpl']}')";
поясню: в поле seolink изначально ничего не вставляется (""), я же вставляю в это поле {$article['url']}

чуть ниже в этой же функции нужно закомментировать строки, обновляющие seolink

  1. //$article['seolink'] = $this->getSeoLink($article);
  2. //$this->inDB->query("UPDATE cms_content SET seolink='{$article['seolink']}' WHERE id = '{$article['id']}'");
С добавлением статьи разобрались, теперь, обновление.
чуть ниже, функция
  1. public function updateArticle($id, $article, $not_upd_seo = false){
заменяем блок "if(!$not_upd_seo){" на
  1. if(!$not_upd_seo){
  2. if ($article['url']) {
  3. $article['url'] = cmsCore::strToURL($article['url']);
  4. }
  5. /*$article['seolink'] = $this->getSeoLink($article);
  6. $article_seo_sql = "url='{$article['url']}', seolink='{$article['seolink']}',";
  7. */
  8. $article['seolink']=$article['url'];
  9. }
В общем-то, уже всё, но дополнительно я сделал поле "seolink" уникальным в таблице, через phpmyadmin (правда, не посмотрел, возможно оно и было помечено как уникальное), чтобы не было 2 статей с одним урл.
И я не проверял что будет если добавить 2 статьи с одинаковым урл. По идее база не сохранит, но будет ли при этом выводиться какая-то ошибка — не проверял.
#9 Статья сразу в нескольких разделах 26 октября 2012 в 01:04


В компоненте видео, хорошо сделано — когда при смене формата урл идет редирект со старого адреса.

А ваш прием, хорош для новых сайтов, которые не наполнены еще статьями

Минона

если есть встроенный механизм алиасов (синонимов, наподобии Друпаловского: добавляешь урл1 и урл2, при вводе урл1 редирект на урл2), то должно быть несложно исправить в админке чтобы при редактировании статьи добавлялся алиас со старого названия на новое.
хотя могут быть коллизии если злоупотреблять😊урл1 -> урл2 -> урл3 -> урл1
#10 Статья сразу в нескольких разделах 26 октября 2012 в 00:52


готовый файлы, с внесенными поправками

lezginka.ru
готовые не буду, мало ли какие обновления по безопасности или ещё чего. там правки простые, проще на готовом исправить


могу выложить как я сделал на 9 версии

Cruzka
Конечно выкладывайте, используют кому нужно.
Вобщем выкладывайте все что не жалко! smile

eoleg
мм ок, а в блоге лучше, или темой на форуме?
#1 1.10? 2?.. 26 октября 2012 в 00:46
Решились перенести сайт на Instantcms.
На тестовом накатил сначала 1.9, но таки прочитал что на подходе 1.10. Решил подождать пару дней, всё же проще чем мигрировать потом.
Но узнал ещё что с 1 ноября планируется выход 2 версии Instant… и стало совсем непонятно. Ждать 2? Делать на 1.10?
Может есть ещё что-то, чего я не знаю?
#11 Статья сразу в нескольких разделах 26 октября 2012 в 00:28


(что плохо для сео)

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

lezginka.ru
оформить файлами — что?
если Вы о смене структуры урл,- могу выложить как я сделал на 9 версии, там аналогично, пару строк правим и готово
#12 Статья сразу в нескольких разделах 25 октября 2012 в 21:58


в стандартном движке, при переносе статей из категорий, сохраняется урл родительский
нечто такое нельзя сделать ?

lezginka.ru
не совсем понял что именно сделать, но мы на нашем проекте пришли к решению сократить путь с

site.ru/eda/pervoe/salaty/grecheskij.html

до

site.ru/grecheskij.html

чтобы, во-первых, не менялся путь при переносе статьи в другую категорию (что плохо для сео), а во-вторых сократить урл, потому что бывают и такие

site.ru/gotovim-bystro-doma-grecheskij-salat.html

и урлы вида

site.ru/eda/pervoe/salaty/gotovim-bystro-doma-grecheskij-salat.html

становятся непомерно длинными
#13 Есть кто с Минска и 2 вопрос флудовый 25 октября 2012 в 19:19
я был несколько раз в Минске, может быть смогу чем-то помочь.
про Минск на серче лучше спросите, там много народу с Беларуси вообще и Минска в частности
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.