Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Не срабатывает метод 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.