JustDavali Опубликовано 17 декабря, 2012 Жалоба Поделиться Опубликовано 17 декабря, 2012 И так выводить канонические УРЛы мы будем в категориях товаров и в карточках товаров.Начнем с категорий товаров.Для начала в базе данных, в таблице s_products создадим поле meta_canonicalЗатем открываем файл api/Categories.phpпримерно на 186 строке добавляем в запрос ,c.meta_canonicalОткрываем файл view/ProductsView.phpПримерно на 200 строчке добавляем $this->design->assign('meta_canonical', $category->meta_canonical);что бы получилосьТеперь переходим к файлу simpla/CategoryAdmin.phpпримерно на 26 строчке добавляем $category->meta_canonical = $this->request->post('meta_canonical'); И самое интересное открываем файл simpla/design/html/category.tplПримерно на 184 строчке перед тегом </ul>добавляем <li><label class=property style="color: {if $category->meta_canonical}red{else}green{/if};">Канонический URL</label><input name="meta_canonical" class="simpla_inp" type="text" value="{$category->meta_canonical}" /></li>Теперь в зависимости от того задан или нет канонический урл подпись к инпуту будет красного или зеленого цвета.Идем в наш дизайн основной части страницыdesign/ТЕМА/html/index.tplи где-нибудь в HEAD рядом с выводом метатегов вставляем: {if $meta_canonical} <link rel="canonical" href="{$meta_canonical|escape}"/> {/if}Переходим к карточкам товаров:Открываем api/Products.phpпримерно 115-120 строки, там в запрос добавляем: p.meta_canonical,в 260 строках тоже есть запрос, туда тоже добавляем p.meta_canonical,Затем открываем view/ProductView.phpпримерно на 225 строке вставляем $this->design->assign('meta_canonical', $product->meta_canonical);Открываем simpla/ProductAdmin.php32 строка примерно добавляем $product->meta_canonical = $this->request->post('meta_canonical');открываем simpla/design/html/product.tplПримерно в 500 строках находим <!-- Параметры страницы --> <div class="block layer"> <h2>Параметры страницы</h2> <ul>добавляем <li><label class=property style="color: {if $product->meta_canonical}red{else}green{/if};">Канонический URL</label><input name="meta_canonical" class="simpla_inp" type="text" value="{$product->meta_canonical}" /></li> Писал практически по памяти, если есть вопросы - пишите помогу.Все делаете на свой страх и риск, если что-то накосячите - я не виноват, просто написал решение по выводу rel="canonical" Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 3 января, 2013 Жалоба Поделиться Опубликовано 3 января, 2013 все гуд получилось спасибо JustDavaliв базу помимо s_products нужно тоже самое сделать и в s_categories! Цитата Ссылка на сообщение Поделиться на другие сайты
Romalibert Опубликовано 7 апреля, 2013 Жалоба Поделиться Опубликовано 7 апреля, 2013 Rash, незнаю в чём дело было, может кэш не почистил, но всё заработало, а теперь самое вкусное, заполним все канонические юрл автоматом, нужно сделать 2 запроса:UPDATE `s_categories` SET `meta_canonical`= CONCAT('http://example.com/catalog/',s_categories.url) UPDATE `s_products` SET `meta_canonical`= CONCAT('http://example.com/products/',s_products.url) Цитата Ссылка на сообщение Поделиться на другие сайты
Rash Опубликовано 7 апреля, 2013 Жалоба Поделиться Опубликовано 7 апреля, 2013 Romalibert, спасибо очень удобно! Пригодится и для остальных Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 27 сентября, 2013 Жалоба Поделиться Опубликовано 27 сентября, 2013 ДОПОЛНЕНИЕ 1. в файле simpla/CategoryAdmin.php после: // Не допустить одинаковые URL разделов. if(($c = $this->categories->get_category($category->url)) && $c->id!=$category->id) { $this->design->assign('message_error', 'url_exists'); } добавляем // Не допустить одинаковые канонические URL разделов. elseif(($c = $this->categories->get_category($category->meta_canonical)) && $c->id!=$category->id) { $this->design->assign('message_error', 'meta_canonical_exists'); } 2. в файле simpla/ProductAdmin.php после: // Не допустить одинаковые URL разделов. elseif(($p = $this->products->get_product($product->url)) && $p->id!=$product->id) { $this->design->assign('message_error', 'url_exists'); if(!empty($product->id)) $images = $this->products->get_images(array('product_id'=>$product->id)); } добавляем // Не допустить одинаковые канонические URL разделов. elseif(($p = $this->products->get_product($product->meta_canonical)) && $p->id!=$product->id) { $this->design->assign('message_error', 'meta_canonical_exists'); if(!empty($product->id)) $images = $this->products->get_images(array('product_id'=>$product->id)); } 3. в файле simpla/design/html/category.tpl после: url_touched = true; добавляем meta_canonical_touched = true;после if($('input[name="url"]').val() == generate_url() || $('input[name="url"]').val() == '') url_touched = false; добавляем if($('input[name="meta_canonical"]').val() == generate_meta_canonical() || $('input[name="meta_canonical"]').val() == '') meta_canonical_touched = false; после $('input[name="url"]').change(function() { url_touched = true; }); добавляем $('input[name="meta_canonical"]').change(function() { meta_canonical_touched = true; }); после function generate_url(){ url = $('input[name="name"]').val(); url = url.replace(/[\s]+/gi, '-'); url = translit(url); url = url.replace(/[^0-9a-z_-]+/gi, '').toLowerCase(); return url; } добавляем function generate_meta_canonical(){ url = $('input[name="name"]').val(); url = url.replace(/[\s]+/gi, '-'); url = translit(url); url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase(); return url; } ниже заменить <span>{if $message_error=='url_exists'}Категория с таким адресом уже существует{else}{$message_error}{/if}</span> на <span>{if $message_error=='url_exists'}Категория с таким адресом уже существует{elseif $message_error=='meta_canonical_exists'}Категория с таким каноническим адресом уже существует{else}{$message_error}{/if}</span> ниже заменить <li><label class=property style="color: {if $product->meta_canonical}red{else}green{/if};">Канонический URL</label><input name="meta_canonical" class="simpla_inp" type="text" value="{$product->meta_canonical}" /></li> на <li><label class=property style="color: {if $category->meta_canonical}green{else}red{/if};">Канонический адрес</label><div class="page_url">/catalog/</div><input name="meta_canonical" class="page_url" type="text" value="{$category->meta_canonical}" /></li> 4. выше указанные действия пункта "3" произвести в файле product.tpl5. в базе произвести запросы: UPDATE `s_categories` SET `meta_canonical`= CONCAT(s_categories.url) и UPDATE `s_products` SET `meta_canonical`= CONCAT(s_products.url) 6. в файле design/ВАША ТЕМА/html/index.tpl заменить: {if $meta_canonical} <link rel="canonical" href="{$meta_canonical|escape}"/> {/if} на {if $meta_canonical} {if $product} <link rel="canonical" href="{$config->root_url}/products/{$product->meta_canonical}"/> {elseif $category} <link rel="canonical" href="{$config->root_url}/catalog/{$category->meta_canonical}"/> {/if} {/if} Теперь при вводе названия категории или товара, автоматически прописывается канонический адрес с проверкой на существование совпадающего адреса. Цитата Ссылка на сообщение Поделиться на другие сайты
SV911 Опубликовано 9 февраля, 2014 Жалоба Поделиться Опубликовано 9 февраля, 2014 Подскажите пож. А то никак не могу понять. Зачем канонические страницы в карточках товаров? С категориями все понятно. Мега нужная вещь. А вот в карточке зачем? Цитата Ссылка на сообщение Поделиться на другие сайты
SV911 Опубликовано 9 февраля, 2014 Жалоба Поделиться Опубликовано 9 февраля, 2014 В яндекс.php есть. Не спорю. Это сделано для того, чтобы скажем выбрали в яндекс маркете курточку с размером "М" нажал купить - и сразу перешли на сайт на симпле и там уже был выбрал вариант "М". Это в идеале - а на самом деле так оно не работает. По крайней мере я ни разу не видел, чтобы оно на симпле работало. Послему яндекс.php это бесполезная вещь. А вот зачем canonical в карточке товаров - ну никак не пойму. Там нет листалки страниц, нет вариантов всяких. Только лишний запрос к БД и лишняя нагрузка по моему. Цитата Ссылка на сообщение Поделиться на другие сайты
FDA Опубликовано 12 февраля, 2014 Жалоба Поделиться Опубликовано 12 февраля, 2014 А как быть с каноническими URL, если я нахожусь в категории товара и выбираю определенный бренд этого товара.URL страниц разные, содержимое страниц разное, а канонические URL указывают что это одна и страница. Цитата Ссылка на сообщение Поделиться на другие сайты
Reni Опубликовано 18 февраля, 2014 Жалоба Поделиться Опубликовано 18 февраля, 2014 На свой страх и риск я потерял все категории Цитата Ссылка на сообщение Поделиться на другие сайты
Reni Опубликовано 19 февраля, 2014 Жалоба Поделиться Опубликовано 19 февраля, 2014 После танцев с бубном все получилось!!! Нашел еще проблему что если действовать по дополнению Danya на шаге:4. выше указанные действия пункта "3" произвести в файле product.tplНельзя вышеуказанные действия производить в файле product.tpl, иначе авто-заполнение канонических url в продуктах производится не будет и симпла будет плеваться ошибками при сохранении товара, надо производить указанные действия по аналогии пункта "3" в процессе category заменять на product в кодах. Цитата Ссылка на сообщение Поделиться на другие сайты
Dr_Brown Опубликовано 20 февраля, 2014 Жалоба Поделиться Опубликовано 20 февраля, 2014 После танцев с бубном все получилось!!! Нашел еще проблему что если действовать по дополнению Danya на шаге:4. выше указанные действия пункта "3" произвести в файле product.tplНельзя вышеуказанные действия производить в файле product.tpl, иначе авто-заполнение канонических url в продуктах производится не будет и симпла будет плеваться ошибками при сохранении товара, надо производить указанные действия по аналогии пункта "3" в процессе category заменять на product в кодах.не придумывайте велосипед: http://forum.simplacms.ru/topic/5108-добавление-ссылки-канонических-url-в-шаблоне/ Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 21 февраля, 2014 Жалоба Поделиться Опубликовано 21 февраля, 2014 Reni Если всё делалось по инструкции, то ни какими ошибками плеваться не будет!Лично проверялось несколько раз и по сей день работает на рабочих магазинах! Цитата Ссылка на сообщение Поделиться на другие сайты
Reni Опубликовано 27 февраля, 2014 Жалоба Поделиться Опубликовано 27 февраля, 2014 Дождался индексации в яндексе, получил 3380 исключенных страниц по причине: Документ является неканоническим В коде документа в тэге <link> содержится параметр rel="canonical", содержащий канонический адрес страницы, по которому она индексируется роботом. Как правило, тег <link> с атрибутом rel="canonical" прописывают на дублирующих страницах сайта, в этом случае ничего исправлять не требуется. Если страницы дублями не являются и должны индексироваться роботом, то вам необходимо убрать атрибут из их исходного кода. Более подробную информацию об использовании rel="canonical" вы можете прочитать на следующей странице нашей Помощи. Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 28 февраля, 2014 Жалоба Поделиться Опубликовано 28 февраля, 2014 скинь XLS файлик с исключенными ссылками Цитата Ссылка на сообщение Поделиться на другие сайты
shurikello Опубликовано 28 февраля, 2014 Жалоба Поделиться Опубликовано 28 февраля, 2014 подтверждаю по поводу отсутствия автозаполнения кан. урл по инструкции от Danyaчто сделать, чтобы заработало? Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 28 февраля, 2014 Жалоба Поделиться Опубликовано 28 февраля, 2014 скиньте доступ к ftp, помогу настроить! Цитата Ссылка на сообщение Поделиться на другие сайты
Reni Опубликовано 4 марта, 2014 Жалоба Поделиться Опубликовано 4 марта, 2014 скинь XLS файлик с исключенными ссылкамиНаписал Вам в лс Цитата Ссылка на сообщение Поделиться на другие сайты
pikusov Опубликовано 15 марта, 2014 Жалоба Поделиться Опубликовано 15 марта, 2014 Канонические ссылки появятся в версии 2.3.1, посмотреть можно тут: http://beta.simplacms.ru Цитата Ссылка на сообщение Поделиться на другие сайты
FDA Опубликовано 15 марта, 2014 Жалоба Поделиться Опубликовано 15 марта, 2014 Канонические ссылки появятся в версии 2.3.1, посмотреть можно тут: http://beta.simplacms.ruНа главной странице http://beta.simplacms.ru указана <link rel="canonical" href="http://beta.simplacms.ru"/> хотя по правилам rel="canonical" указывается только на неканонических версиях всех страниц HTML. в противном случае страница может выпасть из индекса.https://support.google.com/webmasters/answer/139394?hl=ru Цитата Ссылка на сообщение Поделиться на другие сайты
pikusov Опубликовано 16 марта, 2014 Жалоба Поделиться Опубликовано 16 марта, 2014 На главной странице http://beta.simplacms.ru указана <link rel="canonical" href="http://beta.simplacms.ru"/> хотя по правилам rel="canonical" указывается только на неканонических версиях всех страниц HTML. [/size]в противном случае страница может выпасть из индекса.[/size]https://support.google.com/webmasters/answer/139394?hl=ru[/size] По вашей ссылке об этом ничего не сказано. Более того, на самой же странице указано <link href="https://support.google.com/webmasters/answer/139394?hl=ru" rel="canonical"> Цитата Ссылка на сообщение Поделиться на другие сайты
FDA Опубликовано 16 марта, 2014 Жалоба Поделиться Опубликовано 16 марта, 2014 По вашей ссылке об этом ничего не сказано. Более того, на самой же странице указано <link href="https://support.google.com/webmasters/answer/139394?hl=ru" rel="canonical"> Сори, вы правы.Нашел выдержку Яндекса, что для нас более актуально: Также если на странице расположен атрибут rel="canonical", с указанием непосредственного адреса этой страницы, робот посчитает ее канонической. Данная страница будет индексироваться и появится в поисковой выдаче Яндекса. Робот считает ссылку с атрибутом rel="canonical" не строгой директивой, а предлагаемым вариантом, который учитывается, но может быть проигнорирован. Цитата Ссылка на сообщение Поделиться на другие сайты
chubr Опубликовано 16 марта, 2014 Жалоба Поделиться Опубликовано 16 марта, 2014 можете проще сказать, это решение улучшает выдачу или наоборот её нарушает? Цитата Ссылка на сообщение Поделиться на другие сайты
FDA Опубликовано 16 марта, 2014 Жалоба Поделиться Опубликовано 16 марта, 2014 можете проще сказать, это решение улучшает выдачу или наоборот её нарушает?Можно сказать только одно - польза от этого решения есть.Пример:категория "мобильные телефоны", у это категории может быть множество страниц (в зависимости от кол-ва товара и т.д.) .Получается что вес данной страницы (категории) распределяется по всем страницам мобильные-телефоны/page-1, мобильные-телефоны/page-2, ......... и т.д.Чтобы весь вес категории оставался на данной категории и необходимо указывать адрес канонической страницы. Цитата Ссылка на сообщение Поделиться на другие сайты
megamutex Опубликовано 8 сентября, 2014 Жалоба Поделиться Опубликовано 8 сентября, 2014 Эта тема еще жива? Если да, то вопрос к автору или другим пользователям Как сделать чтобы каноническая страница не ссылалась сама на себя, т.к. это не есть хорошо? Например, страница, допустим "Мобильные телефоны" имеет вид: название_сайта/catalog/mobilnye-telefony. Каноническая ссылка на этой странице такая же. Как сделать, чтобы не выводилась каноническая ссылка? И другой вопрос: когда на странице "Мобильные телефоны" выбираешь бренд какой-либо, каноническая ссылка не меняется. Т.е. адрес страницы такой: название_сайта/catalog/mobilnye-telefony/sony, а каноническая такая: название_сайта/catalog/mobilnye-telefony. Надо, чтобы в ссылку добавлялось название бренда. Опять же, как реализовать?) За ранее спасибо. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 8 сентября, 2014 Жалоба Поделиться Опубликовано 8 сентября, 2014 2. когда на странице "Мобильные телефоны" выбираешь бренд какой-либо, каноническая ссылка не меняется. Т.е. адрес страницы такой: название_сайта/catalog/mobilnye-telefony/sony, а каноническая такая: название_сайта/catalog/mobilnye-telefony. Видимо, у Вас свои доработки, потому как на демо-сайте совсем не так... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.