0 Пользователей и 1 Гость просматривают эту тему.
  • 9 Ответов
  • 3778 Просмотров
*

severum

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Подскажите как правильно сделать ссылки и правильно ли я вообще (в джумловской идеологии) делаю следующее:

Написал компонент на базе примеров (что то типа галлереи).
пусть называется com_xxx
У него есть 2 views.
xxx - это как я понимаю default служит для отображения списка картинок со страницами.
one - показывает единичную картинку.
У каждого из них один по одному tmpl/default.php

сделал пункт меню со ссылкой на view=xxx

Теперь мне нужно делать различные ссылки чтобы листать страницы.
Делаю так:

узнаю какая страница и какой пункт меню:
$pagecurrent = JRequest::getVar('page', 0, '', 'int');
$menuitem = JRequest::getVar('Itemid', 1, '', 'int');

делаю ссылку например на следующую страницу
$link = JRoute::_("index.php?option=com_xxx&view=xxx&Itemid=".$menuitem."&page=".($pagecurrent+1));

Получается такая ссылка и вроде все работает:
index.php?option=com_xxx&view=xxx&Itemid=2&page=1

Что не нравиться:
- Понятно что так раз работает делать можно, но правильно ли? Может есть более изящные решения?

- Включаю SEO.
 
  ссылка получается такой в меню:
  gallery.html?view=xxx
 
  И такой на слудующую страницу у меня:
  gallery.html?view=xxx&page=1
 
  Как избавиться от view=xxx при включеном SEO.
  И без SEO Зачем при создании меню добавляется view=xxx если он и так исспользуется по умолчанию?
 
- На будущее можно ли избавиться и от page=1 если это будет параметр обозначающий не страницу, а разные галлереи.
  т.е. наверное можно завести пункты меню для каждого из них с каким-нибудь параметром и задать там уже имена. (gallery_oleg, gallery_dima).
  или есть какойто еще подход?

Спасибо.
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Как правильно делать ссылки?
« Ответ #1 : 23.03.2009, 22:55:30 »
Для разбивки на страницы и вывода ссылок лучше использовать класс JPagination

Для того, чтобы ваш компонент поддерживал SEO, нужно написать специальный метод для преобразования ссылок
*

severum

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Re: Как правильно делать ссылки?
« Ответ #2 : 24.03.2009, 10:20:32 »
спасибо большое. буду вникать.
*

severum

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Re: Как правильно делать ссылки?
« Ответ #3 : 24.03.2009, 16:16:57 »
написал router.php вроде все работает (открываются нужные мне странички).

но я пользуюсь shadowbox
http://mjijackson.com/shadowbox/index.html
вот он перестал работать.
это набор js.

причем если вбить полную строчку
http://127.0.0.1/gallery.html?view=one&element=batman
то работает (экран темнеет и открывается картинка),
а если сокращенную
http://127.0.0.1/gallery/batman.html
то просто тупо переходит на картинку.

Посмотрел в Mozilla  - Error console
при сокращенной ссылке там появляется надпись:
uncaught exception: No Shadowbox language loaded

там где грузится язык в полученом html просто строчка
Shadowbox.loadLanguage('ru', 'components/com_xxx/javascript/shadowbox/lang');

а в самом скрипте:

    Shadowbox.loadLanguage = function(lang, dir){
        if(!(/\/$/.test(dir))) dir += '/';
        // Safari 2.0 fails using DOM, use document.write instead
        document.write('<scr' + 'ipt type="text/javascript" src="' + dir + 'shadowbox-' + lang + '.js"><\/script>');
    };

Подозреваю проблема не только в загрузке языка. просто чтото неправильно работает.

(обрабатывается и ссылка на js? )

В чем может быть проблема?

*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Как правильно делать ссылки?
« Ответ #4 : 24.03.2009, 16:20:12 »
Сложно сказать, в чем там проблема. Но, как мне видится, вы не просто картинку открыть пытаетесь, а HTML страницу с картинкой. Проще дать ссылку сразу на файл картинки, я думаю.
*

severum

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Re: Как правильно делать ссылки?
« Ответ #5 : 24.03.2009, 17:21:40 »
ссылка выглядит так
<a rel="shadowbox[MustangThumbs];options={counterType:'skip',continuous:true,animSequence:'sync'}" href="/gallery/batman/pic4.jpg"><img class="gallery" src="/gallery/batman/thumbnail4.gif" width="140" height="85" /></a>

Чтото наверное при инициализации неправильно происходит

Я к сожалению в js практически не разбираюсь. и тяжело понять куда смотреть. И подозреваю что скрипты сами не при чем.

Спасибо за участие :)
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Как правильно делать ссылки?
« Ответ #6 : 24.03.2009, 17:27:56 »
скрипты ни при чем. возможно, в раутере ошибка, и вызывается, например, не тот контроллер или не тот view, и в итоге не вызывается инициализация скрипта.
*

severum

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Re: Как правильно делать ссылки?
« Ответ #7 : 24.03.2009, 17:36:23 »
т.е. при попытки загрузить скрипт например в этот момент
 document.write('<scr' + 'ipt type="text/javascript" src="' + dir + 'shadowbox-' + lang + '.js"><\/script>');
ему подменяется путь?

а если для эксперимента вынести папку с shadowbox из компонента? раутер все равно будет вызван. или тогда ссылка не будет обрабатываться?
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Как правильно делать ссылки?
« Ответ #8 : 24.03.2009, 17:45:21 »
А зачем скрипт так странно грузится?
Видимо, он грузится по относительному пути, а SEF ссылка направляет его не туда.
Проще всего - в компоненте написать
Код
		JHTML::script('shadowbox.js', 'components/com_xxx/assets/shadowbox/');
JHTML::script('shadowbox-lang.js', 'components/com_xxx/assets/shadowbox/');
*

severum

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Re: Как правильно делать ссылки?
« Ответ #9 : 25.03.2009, 12:55:39 »
Спасибо.

я скрипты добаляю так
$doc =& JFactory::getDocument();
$doc->addScript( "..." );
$doc->addScriptDeclaration( "..." );
Это одно и тоже?
чтобы мне на будущее знать.

скрипты грузятся просто по инструкции подключения shadowbox

Проблему победил.
При включеном SEO меняется рабочий путь и скрипты которые пытаются подгрузить дальше уже не от туда грузятся
а вот так уже работает
Shadowbox.loadLanguage('ru', '/components/com_xxx/javascript/shadowbox/lang');

:)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как правильно прописать JRoute

Автор voland

Ответов: 9
Просмотров: 7287
Последний ответ 24.03.2012, 00:17:27
от chikvito
Как можно обработать все ссылки сайта в urlencode ?

Автор Виталик

Ответов: 0
Просмотров: 1373
Последний ответ 13.08.2010, 23:23:44
от Виталик
как правильно обращаться к базе данных

Автор salikoff

Ответов: 23
Просмотров: 5981
Последний ответ 29.06.2009, 14:07:16
от w00
Скрипт для генерации ссылки на случайную статью

Автор minuby

Ответов: 2
Просмотров: 1830
Последний ответ 16.02.2009, 14:46:02
от minuby