Фотографии в статьях

вместо ссылок на фото в альбомах

#1 3 сентября 2009 в 23:21
Доброго всем времени суток!
Недавно над одним проектом работал и требовалось в статьях размещать фотографии из фотоальбомов, да еще и с подписями к ним, да еще и с lightbox для них с отображением полноразмерной фото при нажатии на миниатюру. Стандартно имеется функция фильтра, где фраза для фильтра {ФОТО=...} заменяется на сылку на данное фото, но в статьях красивее смотрелась бы не ссылка, а именно фотография и лучше в миниатюре и с возможностью просмотра полноразмерки без ухода со страницы. Lightbox уже имеется в CMS, но он не интегрирован в компонент контента, да и в существующий фильтр внести новый пункт в ниспадающий список для нового слова не получилось (не заработал новый пункт и наотрез отказывался копировать ссылку в редакторе — если у кого получилось подобное — прикрепите пожалуйста свои файлы для админки с наработками в этой теме). Пришлось модифицировать существующий фильтр.
Результат можно скачать тут: alexey.zagrebelniy.ru/pict_in_content.rar или из прикрепленного к сообщению файла.
Инструкция по установке, а так же модификация под другие версии движка (я делал под InstantCMS 1.1rc4) внутри архива.
#2 11 октября 2009 в 11:30
спасибо за дополнение.
для v.1.5.2 нужно немного изменить код.

в readme.txt написано:
  1. 1. Откройте на своем сайте для редактирования файл components/content/frontend.php и вставьте в самом начале файла после строки
  2. if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
  3. следующие строки:
  4.  
  5. $GLOBALS['page_head'][] = '<script language="JavaScript" type="text/javascript" src="/includes/jquery/lightbox/js/jquery.lightbox.js"></script>';
  6. $GLOBALS['page_head'][] = '<link media="screen" href="/includes/jquery/lightbox/css/jquery.lightbox.css" rel="stylesheet" type="text/css" />';
а надо вставить:
  1. $inPage->addHeadJS('includes/jquery/lightbox/js/jquery.lightbox.js');
  2. $inPage->addHeadCSS('includes/jquery/lightbox/css/jquery.lightbox.css');
#3 26 июня 2010 в 17:53
В 1.6.2 не заработало cry
#4 27 июня 2010 в 00:01
на 1.5.2 работает на ура:) огромное спасибо!)
осталось протестить на 1.6
#5 27 июня 2010 в 00:49
в статьях картинки отображаются через lightbox, а на главной странице в компоненте нет, картинка просто открывается в новом окне. В чем может быть проблема?
#6 6 июля 2010 в 16:37
ни кто не подскажет какой файл править при создании модуля??? чтобы также выводилось как в статьях.
#7 6 июля 2010 в 19:33
Доброго времени суток!
Не думал, что моя тема привлечет к себе интерес. Изначально делал для версии 1.1rc4, но уже в теме добавлены кода и для версии 1.5.2, за что благодарен коллегам, которые уделили время этому вопросу.


ни кто не подскажет какой файл править при создании модуля??? чтобы также выводилось как в статьях.

braincord
Подскажите какая версия у Вас стоит и дайте ссылку на сайт на котором пытаетесь установить показ картинок через модуль.
#8 6 июля 2010 в 21:30
Алексей
версия 1.5.2, стоит на локальном компе. так что нет возможности пока показать.
в статьях все работает на ура. вот теперь хотелось понять какой файл надо отредактировать чтобы и в модулях также картинки обрабатывались лайтбоксом. Пока что картинки вставляются из галереи в модуль, но не обрабатываются лайтбоксом, а открываются в новом окне.
Я давно искал такую тему. так что заранее огромное спасибо!)
#9 7 июля 2010 в 00:10
braincord

Огромное спасибо за положительный отзыв!

Дело в том, что в случае с контентом (компонентом "Контент") в файле components/content/frontend.php для версии 1.5.2 по совету MonAmur следует добавить следующие две строки:
  1. $inPage->addHeadJS('includes/jquery/lightbox/js/jquery.lightbox.js');
  2. $inPage->addHeadCSS('includes/jquery/lightbox/css/jquery.lightbox.css');
Это требуется для того, чтобы при вызове компонента Контент автоматически подгружались указанные файлы джаваскрипта и каскадной таблицы стилей для lightbox. Это же будет работать и для модулей, если таковые имеют вставленные из фотогалереи изображения и выводятся на одной странице с контентом (в позициях left, top, bottom и right). Но если модуль с изображениями вставленными из фотогалереи будет отображаться самостоятельно, а не вместе с контентом, то естественно на этой странице некому вызывать подключение этих двух файлов и как следствие — lightbox работать не будет, превратившись просто в обычные ссылки на файлы с изображениями, которые будут открываться на новой вкладке или в новом окне (поскольку цель указана _blank).

Если прописать где-нибудь в вызове отображения модуля подключение этих файлов, то возможны следующие проблемы:
1. при отображении более одного модуля одновременно на одной странице — lightbox может не сработать, т.к. несколько раз будет вызываться подключение одних и тех же файлов.
2. модуль со вставленными из фотогалереии изображениями и компонент Контент на одной странице не смогут работать правильно по той же причине вызова нескольких файлов изображений одновременно.

Но есть вариант:
1. Следует из файла components/content/frontend.php убрать рекомендованные обе строки:
  1. $inPage->addHeadJS('includes/jquery/lightbox/js/jquery.lightbox.js');
  2. $inPage->addHeadCSS('includes/jquery/lightbox/css/jquery.lightbox.css');
2. Между тегами <head> и </head> шаблона (в файле /templates/ваш_шаблон/template.php) указываем явное подключение обоих файлов:
  1. <script language="JavaScript" type="text/javascript" src="/includes/jquery/lightbox/js/jquery.lightbox.js"></script>
  2. <link media="screen" href="/includes/jquery/lightbox/css/jquery.lightbox.css" rel="stylesheet" type="text/css" />
В этом случае фильтр всегда будет работать и в Контенте и в Модулях, но для нормальной работы придется удалить дублирующие вызовы из всех остальных компонентов системы (фотогалерея, каталог и т.д.) использующих lightbox для отображения картинок, ведь в файлах frontend.php этих Компонетов есть строки, похожие на эти:
  1. $inPage->addHeadJS('includes/jquery/lightbox/js/jquery.lightbox.js');
  2. $inPage->addHeadCSS('includes/jquery/lightbox/css/jquery.lightbox.css');
которые следует удалить, чтобы избежать повторного подключения этих файлов. И не забывать проделывать эти операции при обновлениях системы!
#10 31 июля 2013 в 20:43
У меня InstantCMS v1.10.1 и все потуги с этим вопросом не дали никакого результата (
Может кто подскажет, в чем здесь может быть дело?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.