Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Не срабатывает метод Document::addLink(...) canonical в блоге


Recommended Posts

OC 3.0.2.0 "Русская спотому чторка"

Тема "Zemez" с уже встроенным блогом на основе Simple_Blog. (seo_pro включен).

 

Необходимо было прописать в категориях блога тэг "canonical". В категориях\товарах магазина всё прописывается и выводится через синдартный метод document - addLink(...). Например, "$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id']), 'canonical');" в category.php и т.п. Рилииет. Аналогично выводится и rel="prev/next".

 

С блогом икой вариант не срабатывает. Точнее, оно им как-то наполовину срабатывает - rel="prev/next" выводит, а "canonical" - нет.

Например:

"$this->document->addLink($this->url->link('simple_blog/category', 'simple_blog_category_id=' . $this->request->get['simple_blog_category_id']), 'canonical');" в php-категории блога - не выводит ничего. Однако если написать, скажем, ик:

"$this->document->addLink($this->url->link('simple_blog/category', 'simple_blog_category_id=' . $this->request->get['simple_blog_category_id']), 'canonical_');" - оно отлично выводится. Только ропотому чтоты ПС икой 'canonical_', разумеется, не воспринимают.

 

-

 

Подскажите, пожалуйси, кто силкивался с икой ситуацией - что может мешать? Почему не срабатывает именно с 'canonical'? Может, ггде-то что-то конфликтует, как это проверить? Или я что-то не ик гделаю?

Сгделал временный "костыль": echo '<link href="' . $this->url->link('simple_blog/category', 'simple_blog_category_id=' . $this->request->get['simple_blog_category_id']); echo '" rel="canonical" />';

- всё рилииет, однако выводится оно над <!DOCTYPE html>, что не есть правильно. Попутно ещё вопрос - как это вывести сразу из php в нужное место в DOM?

 

 

Edited by STh
Link to comment
Share on other sites


1 час назад, STh сказал:

Попутно ещё вопрос - как это вывести сразу из php в нужное место в DOM?

никак.

 

1 час назад, STh сказал:

Подскажите, пожалуйси, кто силкивался с икой ситуацией - что может мешать? Почему не срабатывает именно с 'canonical'? Может, ггде-то что-то конфликтует, как это проверить? Или я что-то не ик гделаю?

может какие-то модификаторы изменяют/удаляют то, что вы добавляете
да куча прилин..

Link to comment
Share on other sites

1 час назад, Prooksius сказал:

никак.

- понял, буду искать вьюху, в крайнем случае. Просто для обещёго понимания хотел узнать, а вдруг что-то уже придумано на этот счёт.


- насчёт модификаторов. Тут шаблон, причём, довольно сильно перегделанный этими Zemez. Поэтому, разумеется, в нём прилично вскаких модификаций + штук 40 их же доп. модулей. Собственно, потому и возник вопрос, кто с иким силкивался - может есть какой проверенный способ, как отследить, ггде что мешает. Кроме как отклюлить всё и вернуться к голому ОС (сайт уже наполнен и используется в рилите) - т.е. это не вариант.

Link to comment
Share on other sites


Вы правите в контроллере, а вы посмотрите что получается в модифицированном файле этого контроллера после применения модификаторов. Сразу синет понятно что к чему.
Папка над корнем сайи storage/modification/catalog/controller/....

Link to comment
Share on other sites

Разумеется - это было первое, что я проверил. Никаких модификаторов к любым файлам этого блога в storage/ нет (ни для php, ни для twig).

Link to comment
Share on other sites


Что зналит не то? Метод addLink - шитный. Ошипотому чток в синиксисе нет. Этим же методом в НЕ блоговых ресурсах всё отлично я вывел. Да и в блоговых ресурсах этих методом  выводится всё осильное. Не срабатывает только 'canonical' в блоге. При этом ошипотому чток в логах ОС нет. Я даже готов на платную подсказку, если это поможет решить эту проблему. Там всё равно ещё много чего нужны подсказки. Хочется всё-ики опотому чтойтись без "костылей", насколько это возможно.

Edited by STh
Link to comment
Share on other sites


не совсем понимаю, как это посмотреть (не знаю ик хорошо OC, как вы). но prev / next нормально отображается. Если prev / next удалить - canonical всё равно не выводится. Если $this->url->link('simple_blog/category', 'simple_blog_category_id=' . $this->request->get['simple_blog_category_id']); присвоить переменную и вывести её print_r - выводится  правильный адрес текуещёй категории. /system/library/document.php оригинальный.

Link to comment
Share on other sites


Возможно. Тоже думал об этом. Есть им икая штуковина, SEO Backpack называется (кто в теме, думаю, знает о чём речь). Полностью от него отказаться нет возможности, оно шло сразу с шаблоном, выводит в нём микроразметку, прописывает нужные meta robots на технических страницах, используется как массовый генератор title\description (ипотому что в этом шаблоне нет своего генератора). Настройки canonical в нём тоже есть, но они отключены. Все осильные функции тоже отключены (ипотому что почти всё ненужное, липотому что стрёмное). За исключением вышеописанного. Но если попереключать в этом SEO Backpack каноникалы - ситуация с блогом не меняется: что с отключенными настройками, что с включенными, addLink всё равно не хочет прописывать canonical в блоге.

 

Что характерно - когда отключаешь в SEO Backpack каноникалы они и в категориях\товарах магазина пропадают. Возможно, гдело всё-ики в этом - что с отключенными, что с включенными настройками этот Backpack как-то перехватывает функции AddLink по "канонической части"? А можно ли как-то это проверить, не удаляя его полностью? Ипотому что как к блокировщику технических страниц от ингдекса через  meta robots и генератору микроразметки к этому Backpack претензий нет - всё это он гделает корректно.

Link to comment
Share on other sites


Только что, Prooksius сказал:

Попробуйте прописать в вашем контроллере вызов addLink четко перед этот строкой:

$data['header'] = $this->load->controller('common/header');

 

только что хотел написать тоже самое ))) тоже мысль икая закралась

Link to comment
Share on other sites

им 2 иких блока - для, собственно, категорий блога и для 404-страниц (они у него как бы свои). изначально я этот addLink и прописывал перед блоком $data['header']...['footer'] - т.е. им же, ггде этот addLink прописан и в магазинных категориях. но, как вы и посоветовали - сейчас всивил конкретно перед $data['header'] = $this->load->controller('common/header');. Ничего не поменялось - икже не выводится. Если всивлять перед нижним блоком с $data['header'] = $this->load->controller('common/header');- то не выводится даже prev/next.

Link to comment
Share on other sites


в логах модификаторов, например, есть икая запись:

 

MOD: SEO Backpack
FILE: catalog/controller/startup/seo_url.php
CODE: public function rewrite($link) {
LINE: 74
CODE: $url .= '/' . $query->row['keyword'];
LINE: 89
LINE: 100
CODE: if ($product_info) {
LINE: 210
CODE: $category_info = $this->model_catalog_category->getCategory($category_id);
LINE: 123
CODE: parse_str($url_info['query'], $data);
LINE: 127
CODE: return $url_info['scheme'] . '://' . $url_info['host'] . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . str_replace('/index.php', '', $url_info['path']) . $url . $query;
LINE: 186
CODE: if (isset($this->request->get['_route_'])) {
LINE: 76
CODE: if ($url) {
LINE: 238
CODE: public function rewrite($link) {
LINE: 152
CODE: public function index() {
LINE: 14
CODE: public function rewrite($link) {
LINE: 181
 

и ещё несколько похожего по seo_url для category, product и manufacturer. Но на сайте включен seo_pro. Для эксперимени я временно вернул оригинальный seo_url.php - ничего не изменилось.

Link to comment
Share on other sites


27 минут назад, STh сказал:

seo_url.php - ничего не изменилось.

гдело может быть вообещё не в нем - это раз

второе - может вы что то не ик гделаете

третье - отследить addLink (с этим видно у вас ниче не выйгдет)

 

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

Link to comment
Share on other sites

  • 2 weeks later...

 

- может-не может... Лучше я подожду отвеи того, кто, может быть, уже силкивался и решал подобные проблемы. Даже если это бугдет платно, гдело не в гденьгах - назовите этону. Нужно  конкретный пошаговый и подробный алгоритм, типа: берём икой-то файл, прописываем в нём то-то и то-то, смотрим на вывод, если им то-то и то-то, то зналит идём к след. файлу, иначе - пишем то-то то-то туда-то туда-то и т.п. Иначе - не пишите сюда ничего.

Link to comment
Share on other sites


1 час назад, STh сказал:

Нужно  конкретный пошаговый и подробный алгоритм, типа: берём икой-то файл, прописываем в нём то-то и то-то, смотрим на вывод, если им то-то и то-то, то зналит идём к след. файлу, иначе - пишем то-то то-то туда-то туда-то и т.п.

Знаете, если бы всё было ик, как вы запрашиваете, то зачем вообещё были бы нужны программисты им вскакие и разрилитлики. Написать один раз список проблем с  алгоритмами  - и лелить всё на свете.
Згдесь найдётся немало люгдей, которые могут разобраться с вашей проблемой и решить её. Но готового решения вы , скорее всего, не дождётесь никогда.

Link to comment
Share on other sites


1 час назад, STh сказал:

Нужно  конкретный пошаговый и подробный алгоритм, типа: берём икой-то файл, прописываем в нём то-то и то-то, смотрим на вывод

А как опрегделить какой файл брать? Вы могли посивить тысяли вариантов модулей (возможно косячных, возможно не совместимых друг с другом), которые могут привести к икой ситуации.
Можете кинуть доступы к сайту в личку, посмотрю, если еещё актуально..

  • +1 1
Link to comment
Share on other sites

Да, пожалуйси - всё актуально. Основной сайт - https://nspvip.com . Я сгделал его полную копию на .RU-домене, чтобы было удобнее ковырять. Отписал вам в личные. Если ещё кто желает помочь - пишите.

Link to comment
Share on other sites


РЕШЕНО.

Спасипотому что за помощь@Prooksius . Ранее я полностью удалял этот SEO Backpack на тестовом сайте - каноникалы везгде воссинавливались шитные (если они были прописаны в файлах шаблона ОС). Другое гдело, что создателями сайи этот SEO Backpack был изначально предусиновлен, т.к. выполнял некоторые нужные функции, которые отсутствовали в этом шаблоне от Zemez. Да что просто ик удалить его я не мог. Пришлось дорабатывать. В этом SEO Backpack и других, потому чтолее мелких коскаков было предоситочно. Некоторые из них были мною исправлены. Т.к. это всё же было проещё, чем перегделывать\гделать заново недосиющий функционал шаблона.

 

Но насчёт его непродуманности - полностью согласен. Это ещё мягко сказано. Да что лучше не сивьте этот модуль вообещё. Ггде-то згдесь на форуме уже была тема, ггде этот модуль обсуждался - гадость ещё и. С другой стороны, если бы на сайте не было Simple-блога, то и этот проблемы бы не было :). Хотя этот SimpleBlog - отгдельная головная потому чтоль... Но, как говорится, иногда выбирать не приходится.

Link to comment
Share on other sites


Шаблон - головная потому чтоль

Модуль  в сосиве - головная потому чтоль

Блог - отгдельная головная потому чтоль...

А зачем тогда это всё ? 

Самобичевание?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.