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

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

 
Посетитель
small user social cms
Медаль
Сообщений: 180
Доброго всем времени суток!
Недавно над одним проектом работал и требовалось в статьях размещать фотографии из фотоальбомов, да еще и с подписями к ним, да еще и с lightbox для них с отображением полноразмерной фото при нажатии на миниатюру. Стандартно имеется функция фильтра, где фраза для фильтра {ФОТО=...} заменяется на сылку на данное фото, но в статьях красивее смотрелась бы не ссылка, а именно фотография и лучше в миниатюре и с возможностью просмотра полноразмерки без ухода со страницы. Lightbox уже имеется в CMS, но он не интегрирован в компонент контента, да и в существующий фильтр внести новый пункт в ниспадающий список для нового слова не получилось (не заработал новый пункт и наотрез отказывался копировать ссылку в редакторе - если у кого получилось подобное - прикрепите пожалуйста свои файлы для админки с наработками в этой теме). Пришлось модифицировать существующий фильтр.
Результат можно скачать тут: http://alexey.zagrebelniy.ru/pict_in_content.rar или из прикрепленного к сообщению файла.
Инструкция по установке, а так же модификация под другие версии движка (я делал под InstantCMS 1.1rc4) внутри архива.
Прикрепленные файлы:
pict_in_content_64707.rar | 7.37 Кб | Скачали: 698
Посетитель
small user social cms
Медаль
Сообщений: 129
спасибо за дополнение.
для v.1.5.2 нужно немного изменить код.

в readme.txt написано:
Код PHP:
  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" />';
а надо вставить:
Код PHP:
  1. $inPage->addHeadJS('includes/jquery/lightbox/js/jquery.lightbox.js');
  2. $inPage->addHeadCSS('includes/jquery/lightbox/css/jquery.lightbox.css');
Реклама
cms
Посетитель
small user social cms
Сообщений: 16
В 1.6.2 не заработало cry
Посетитель
small user social cms
Медаль
Сообщений: 334
на 1.5.2 работает на ура:) огромное спасибо!)
осталось протестить на 1.6
Посетитель
small user social cms
Медаль
Сообщений: 334
в статьях картинки отображаются через lightbox, а на главной странице в компоненте нет, картинка просто открывается в новом окне. В чем может быть проблема?
Посетитель
small user social cms
Медаль
Сообщений: 334
ни кто не подскажет какой файл править при создании модуля??? чтобы также выводилось как в статьях.
Редактировалось: 1 раз (Последний: 6 июля 2010 в 16:46)
Посетитель
small user social cms
Медаль
Сообщений: 180
Доброго времени суток!
Не думал, что моя тема привлечет к себе интерес. Изначально делал для версии 1.1rc4, но уже в теме добавлены кода и для версии 1.5.2, за что благодарен коллегам, которые уделили время этому вопросу.

braincord:

ни кто не подскажет какой файл править при создании модуля??? чтобы также выводилось как в статьях.
Подскажите какая версия у Вас стоит и дайте ссылку на сайт на котором пытаетесь установить показ картинок через модуль.
Посетитель
small user social cms
Медаль
Сообщений: 334
Алексей:
версия 1.5.2, стоит на локальном компе. так что нет возможности пока показать.
в статьях все работает на ура. вот теперь хотелось понять какой файл надо отредактировать чтобы и в модулях также картинки обрабатывались лайтбоксом. Пока что картинки вставляются из галереи в модуль, но не обрабатываются лайтбоксом, а открываются в новом окне.
Я давно искал такую тему. так что заранее огромное спасибо!)
Посетитель
small user social cms
Медаль
Сообщений: 180
braincord:

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

Дело в том, что в случае с контентом (компонентом "Контент") в файле components/content/frontend.php для версии 1.5.2 по совету MonAmur следует добавить следующие две строки:
Код PHP:
  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 убрать рекомендованные обе строки:
Код 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) указываем явное подключение обоих файлов:
Код 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 этих Компонетов есть строки, похожие на эти:
Код PHP:
  1. $inPage->addHeadJS('includes/jquery/lightbox/js/jquery.lightbox.js');
  2. $inPage->addHeadCSS('includes/jquery/lightbox/css/jquery.lightbox.css');
которые следует удалить, чтобы избежать повторного подключения этих файлов. И не забывать проделывать эти операции при обновлениях системы!
Посетитель
small user social cms
Почетный донор проекта
Сообщений: 4
У меня InstantCMS v1.10.1 и все потуги с этим вопросом не дали никакого результата (
Может кто подскажет, в чем здесь может быть дело?
---
Руководитель http://dragon-english.com/
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.