Форумы / National / Russian / Тех. поддержка / Проблемы с Якорем в тексте

Ссылается на первый уровень

Collos2
#1 21.03.2014 20:59

Привет!

 

Помогите, пожалуйста. Не могу понять, почему не работает Якорь в тексте.

 

После выбора Якоря и ссылки на него, ссылка преобретает вид: www.domain.ru/#3 , хотя должна www.domain.ru/blog/name#3

 

Есть подозрение на расширение HTML Purifier, но возможно я ошибаюсь. 

 

Что можете посоветовать? Спасибо!

Macik
#2 23.03.2014 00:01

1. Прописываем в настройках профиля HTML Purifier (файл htmlpurifier.group_5.preset.php для админа): 'Attr.EnableID' => true, // to enable anchors

Подробнее про прочие настройки HTML Purifier здесь: http://www.cotonti.com/forums?m=posts&q=7586

2. Правильно вставляем якоря в редакторе:

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Collos2
#3 23.03.2014 18:43

Проблема осталась. Стоит Siena 0.9.13.

 

Но! Когда при ручном редактировании (показать HTML) поправил руками - заработало!

т.е. до ручного вмешательства было: <a href="#якорь">Якорь</a>

когда прописал url страницы: <a href="/урл-страницы#якорь">Якорь</a>

то заработало. :)

 

Но хочется без ручного вмешательства сделать. В чем может быть проблема? Спасибо!

 

URL на сайте виде: /index.php?e=page&c=раздел&al=страницы

Ещё стоит плагин: Nofollow

Macik
#4 25.03.2014 21:44

Плагин «nofollow» не должен влиять, т.к. имеет дело только с внешними ссылками.

Потестил у себя и уловил суть. Тут комплексная проблема, основанная на использовании «base url». И складывается она из следующих вещей:

  1. CKEditor нечего не знает о base url. И его вставка якорных ссылок расчитана на то, что он явно не указан. Тогда прямая якорная ссылка (<a href="#якорь">Якорь</a>) будет использовать полный адрес (адрес страницы + якорь).
  2. Cotonti, как правило, указывает Base URL (на самом деле зависит от шаблона header.tpl). Делается это для обеспечения корректной работы относительных ссылок в двух условиях: если сайт установлен не в корневой каталог домена или если сайт использует ЧПУ (например при включенном URLeditor и handy preset, когда адреса вида site.com/pagealias). Тогда якорь начинает трактоваться системой (браузером), как относительный путь, и как следствие на выходе получаем адрес: baseUrl+якорь, без учета реальной страницы.

Вариантов решения в голову приходит 2:

  1. Если не используеются ЧПУ и сайт находится в корне домена — можно убрать директиву base из шаблонов темы оформления.
  2. Написать маленький плагин-костыль, который будет менять прямые якорные ссылки, на ссылки с полным именем текущей страницы, повесив его на хуки «page.add.add.error» и «page.edit.update.error» (или что там перед самым сохранением страницы в базу идет?).

 

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Collos2
#5 29.03.2014 14:32

Использовал вариант 1. Т.е. удалил {HEADER_BASEHREF}. Кажется все работает, как и было) 

Заметил, что когда якорь называет цифрамы (1,2 ....), то он после утверждения страницы не включается. А когда назвал "yakorzdes", то все получилось!

 

Спустя 5 часов заметил, что неработает, когда удалил {HEADER_BASEHREF}:

При редактировании страниц перестало открываться окно "Мои файлы", "Файловый архив сайта". Когда вернул - окна стали открываться, но якорь перестал работать.

 

 

Спасибо Вам!

Отредактировано: Collos2 (29.03.2014 20:30, 10 лет назад)
Macik
#6 02.04.2014 09:17
#39349 Collos2:

Спустя 5 часов заметил, что неработает, когда удалил {HEADER_BASEHREF}:

При редактировании страниц перестало открываться окно "Мои файлы", "Файловый архив сайта". Когда вернул - окна стали открываться, но якорь перестал работать.

Да. Этот момент я не учел. Они не работают, т.к. JS код вызова popup окна использует значение baseref.

Еще один вариант есть — найти код в CKEditor, который отвечает за якоря и поправить.

Добавлено 1 дня спустя:

Пока оформил тикет в багтрекере CKEditor'а. Посмотрим что ответят.

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Отредактировано: Macik (03.04.2014 20:49, 10 лет назад)
Alex S
#7 20.07.2014 09:41

Добрый день,

у меня аналогичная проблема. Подскажите, решилась ли она как-нибудь?

Еще один вариант есть — найти код в CKEditor, который отвечает за якоря и поправить.

Подскажите, где подправить, или какой и где "костыль" вставить?

Помогите, плиз, оччччеееень надо - хочу сделать мультистраничную статью, а из-за этого все дело встало!!!

С уважением,

Alex S

Спасибо, что прочитали. Заранее благодарен за ответ.
Уровень знаний языков (в т.ч.программирования ) - читаю и перевожу со словарем.
Отредактировано: Alex S (20.07.2014 13:29, 9 лет назад)
Macik
#8 21.07.2014 10:50
#39625 Alex S:

Подскажите, где подправить, или какой и где "костыль" вставить?

Помогите, плиз, оччччеееень надо - хочу сделать мультистраничную статью, а из-за этого все дело встало!!!

  1. Авторы CKEditor сочли, что в этом нет бага, и списали это на поблемы CMS — http://dev.ckeditor.com/ticket/11763
  2. Можно править ссылки на якоря руками, после их простановки, переключившись в режим правки html исходника.
  3. За эту механику в CKeditor отвечает плагин «link» — plugins/ckeditor/lib/plugins/link/, 
    там 2 файла. За простановку ссылок отвечает файл `plugins/ckeditor/lib/plugins/link/dialogs/anchor.js`. Теоретически его надо править.
    Вот тут исходники плагина — http://ckeditor.com/addon/link
  4. Покопавшись в нем понял, что править его — это не вариант, как минимум потому, что при любом обновлении мы теряем правки.
  5. Пока вопрос остается открытым. Надо изучать документацию CKeditor'а, чтобы понять можно ли это реализовать дополнительным расширением.

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Alex S
#9 05.08.2014 10:51
Авторы CKEditor сочли, что в этом нет бага, и списали это на поблемы CMS — http://dev.ckeditor.com/ticket/11763
  1. Можно править ссылки на якоря руками, после их простановки, переключившись в режим правки html исходника.

Доброго времени суток!

У меня ссылок на странице очень много, поэтому руками - не очень хочется! Да и если вдруг захочется сменить домен, забудешь про то, что надо эти ссыли править под новое имя...

Поискал в инете, нашел что-то похожее на плагин, добавляющий пункт "внутренняя ссылка" по кнопке "вставить ссылку". Но, правда, там для Друпала. А у меня не хватает мозгов для перевода с англ. и адаптации под Cotonti.

Может, глянете, как профи, то ли это вообще: https://www.drupal.org/project/ckeditor_link

И, если это может подойти под Cotonti, то как его можно установить на сиену?

С уважением,

Alex S

Спасибо, что прочитали. Заранее благодарен за ответ.
Уровень знаний языков (в т.ч.программирования ) - читаю и перевожу со словарем.
Macik
#10 11.08.2014 01:07
#39630 PRoHtml:

И это при том, что я всегда специализировался на верстке а не на программировании, на этом редакторе мне удалось внедрить спойлер работающий без js , на обоих парсерах, смайлики не зависящие от движка, все в плагине, выравнивание блоков и изображений , плюс связал его в своей сборке с attach2 , теперь миниатюры при загрузке появляются  между полями краткой и полной новости (для краткой создается поле при установке), вставляются по клику, без вызова окна, так как для каждой картинки автоматически выводится 4 треугольничка , 2 для краткой, 2 для полной, по клику соответственно вставляется миниатюра или оригинал.

Не понял в деталях, но понял, что круто. :))

Кстати, я сделал плагин, управляющий внешними ссылками на страницах и форуме для гостей. После установки все внешние ссылки становятся безанкорными, текстом. Можно в админке включить, будут кликабельными nofollow, отдельно есть белый список сайтов, если туда сайт ввел - ссылки на этот сайт будут открытыми, а для остальных остаются правила.  Также можно указать ID пользователей ссылки которых будут dofollow , при этом для форума и комментариев отдельные пункты для включения, также есть возможность перечислить категории в которых все ссылки будут открыты ( для каталога статей и тд), чтобы плагин не перекрывал все подряд.

По поводу безанкорных ссылок — есть мнение, что они на раз-два индексируются поисковиками (особенно если идут с префиксом http*://). (Правда какой вес они передают хз). А в таком случае их лучше как nofollow выводить.

А в общем, толково.

 

Добавлено 6 минут спустя:

#39658 Alex S:
У меня ссылок на странице очень много, поэтому руками - не очень хочется! Да и если вдруг захочется сменить домен, забудешь про то, что надо эти ссыли править под новое имя...

Нет, смена домена не должна будет повлиять, т.к. ссылки все де будут относительными (без указания полного пути с доменом).

Поискал в инете, нашел что-то похожее на плагин, добавляющий пункт "внутренняя ссылка" по кнопке "вставить ссылку". Но, правда, там для Друпала. А у меня не хватает мозгов для перевода с англ. и адаптации под Cotonti.

Может, глянете, как профи, то ли это вообще: https://www.drupal.org/project/ckeditor_link

И, если это может подойти под Cotonti, то как его можно установить на сиену?

Спасибо за ссылку. Глянул. Общая схема реализации, как я и предполагал, достаточно проста — плагин расширяющий стандартное диалоговое окно CKeditor'а.

Можно будет что-то подобное сделать для Cotonti. Но для меня в этом вопросе сейчас затык — это абсолютное незнание API CKEditora. Надо в нем разбираться.

В ближайшие 3-4 недели точно не доберусь до этого, т.к. буду на отдыхе.

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Отредактировано: Macik (11.08.2014 01:13, 9 лет назад)
Roffun
#11 23.09.2015 13:16

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

После установки ничего делать не придется, и тем более руками править, только в пурифире включить 'Attr.EnableID' => true, // to enable  , остальное будет плагин делать.

 

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
Отредактировано: Roffun (26.09.2015 19:06, 8 лет назад)
Macik
#12 24.09.2015 12:10

Спасибо, ждем.

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Roffun
#13 26.09.2015 19:05
#41041 Macik:

Спасибо, ждем.

Как и обещал, выложил плагин. акже выложил здесь в каталог его и на mycotonti.ru , и на гитхабе

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
Отредактировано: Roffun (08.07.2016 19:59, 7 лет назад)
Macik
#14 29.09.2015 00:30

За ГитХаб от меня отдельное спасибо.

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F