Модификация стандартного компонента weblinks

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

Так получилось, что первый компонент, в который я полезла, оказался компонентом добавления веб-ссылок на сайт — стандартный компонент weblinks. В очередной раз меня попросили разместить ссылку на родственный ресурс, вот я и занялась им.

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

Для начала хотелось сделать возможность добавления в текст картинок — баннеров сайтов. Очень кстати нашла тему «Повесить редактор на тектовое поле (textarea)» на любимом Джумлафоруме.  Замечательная идея — вместо обычного ввода текстового поля сделать окно визульного редактора, который используется на сайте, со всеми его возможностями.

Итак, приступаю к модификации.

1. Открывается файл administrator\components\com_weblinks\views\weblink\tmpl\form.php

а) В самом начале файла вставляется:

$editor =& JFactory::getEditor();

б) Затем находим проверочное условие if (form.title.value == «») и перед submitform( pressbutton );

вставляем строку

<?php echo $editor->save( ‘description’ ) ; ?>

в) Находим строку

<textarea class=»text_area» cols=»44″ rows=»9″ name=»description» id=»description»> <?php echo $this->weblink->description; ?> </textarea>
и заменяем ее на

display( ‘description’, $this->weblink->description, ‘100%’, ‘150’, ’45’, ‘3’) ; ?>

Теперь при редактировании ссылки из админки появляется визуальный редактор.

2. Открываем файл administrator/components/com_weblinks/controller.php и в функции

function save()

После строки

$post[‘id’] = (int) $cid[0];

пишем:

$post[‘description’] = JRequest::getVar( ‘description’, », ‘post’, ‘string’, JREQUEST_ALLOWRAW );

3. В файле administrator/components/com_weblinks/tables/weblink.php

нужно закомментировать строку

$this->description = $filter->clean($this->description);

4. И последнее: в файле components\com_weblinks\views\category\tmpl\default_items.php

нужно заменить строку

<?php echo nl2br($this->escape($item->description)); ?>

на строку

<?php echo $item->description; ?>

Вот и все. Редактор есть, позволяет располагать информацию в нужном формате с картинками и тегами.

Теперь нужно пройтись по всем ссылкам, размещенным на моем сайте и привести их к нужному виду, добавить баннеры.

Дополнительно, чтобы уж окончательно закончить с веб-ссылками, нужно добавить в конце каждой страницы код для ссылки на мой сайт. Давно хотела это сделать —  время пришло. Для этого нужный текст размещается в позицию модуля   под ссылками. Заодно нужно нарисовать несколько баннеров разного размера. Тоже долго откладывала.

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

Большое спасибо за помощь в модификации компонента Александру Степину

Прикладываю модифицированные файлы, так, на всякий случай:  Скачать

Отзывов: 5 на «Модификация стандартного компонента weblinks»

  1. Андрей пишет:

    Все сделал как здесь у Вас описано, но ничего не вышло вообще пустой экран выводится или точнее страница редактирования или добавления ссылки не открывается пришлось все изменения откатить…
    А как бы хотелось чтобы все заработало…
    Если есть возможность отправьте мне решение на мыло, просто может быть копировал от сюда и какую-то кавычку не так Вы написали, а я в php ноль.
    Заранее огромнейшее спасибо!


  2. БлогАдмина пишет:

    Андрей, я могу прислать Вам модифицированные файлы, а вы их скопируете в нужные места. Только не забудьте перед этим сохранить старые файлы на всякий случай, чтобы можно было откатить все назад.
    как только получу от Вас ответ по е-майлу, сразу и пришлю.


  3. Андрей пишет:

    Подскажите если знаете, может конечно и не в тему, но заранее извиняюсь…
    Как установить ссылку на конкретной странице, ну например :
    http://www.sait.ru/component/option,com_adsmanager/
    или просто:
    http://www.sait.ru/component/option,com_adsmanager/Itemid,106
    Все перерыл в сети так ответа и не нашел..
    Нужно чтобы ссылка была только на одной странице, а на других не выводилась..
    Ну, очень надо!!!
    Спасибо заранее!


  4. БлогАдмина пишет:

    Андрей, я не совсем поняла про ссылку. Какую ссылку нужно установить? Я напишу Вам на майл, а Вы подробнее опишите проблему, постараюсь помочь.


  5. Андрей пишет:

    Жду фалы!


Ваш отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>