15.02.2018 07:16:46 pm
Загорелось мне сделать автоматическое заполнение атрибутов alt и title для вложенных картинок, для тех, которые были загружены в запись, но не вставлены в текст, то есть картинки находятся под записью с пометкой "Вложения". Вставлять в атрибуты я решил из названия тем, то есть полное название темы будет значением для атрибутов. Если в сообщении будет вложенная картинка, то сценарий первым делом проверит - существует ли запись в кэше с ID просматриваемой темы, если есть, возьмет от туда. Если нету, сделает запрос в таблицу phpfox_forum_thread и достанет название темы, затем сохранит в кэше и отправит на вставку атрибутов.
Написал такую функцию (пока только для форума):
Данную функцию надо вставить в файл: module/attachment/include/service/attachment.class.php. Далее, в этом же файле, находим:
Ниже строкой добавляем:
Вот собственно и все.
Написал такую функцию (пока только для форума):
// Получение заголовка записи: Форум
public function getAttachmentTitle()
{
$module = $this->request()->get('req1');
if ($module == 'forum')
{
$id = $this->request()->get('req3');
$product = 'thread';
}
$cache = $this->cache()->set(array('attachmentsTitle', $product . '_' . $id));
if (!($title = $this->cache()->get($cache)))
{
if ($module == 'forum')
{
$title = $this->database()
->select('title')
->from(Phpfox::getT('forum_thread'))
->where('thread_id = ' . (int) $id)
->execute('getSlaveField');
}
$this->cache()->save($cache, $title);
}
if (!empty($title))
{
return $title;
}
return false;
} // Получение заголовка записи: Форум End
Данную функцию надо вставить в файл: module/attachment/include/service/attachment.class.php. Далее, в этом же файле, находим:
$items[$key]['url'] = str_replace('%s', '', $item['destination']);
Ниже строкой добавляем:
if ($items[$key]['is_image'])
{
$items[$key]['title'] = $this->getAttachmentTitle();
}
Вот собственно и все.
- Жалоба
16.02.2018 07:17:21 am
Еще один вариант добывания значений для атрибутов:
Открываем: module/attachment/include/component/block/list.class.php, находим:
Ниже добавляем:
Открываем: module/attachment/template/default/block/list.html.php, находим:
Меняем на:
Открываем: module/forum/include/component/controller/thread.class.php, находим:
Ниже добавляем:
Будьте внимательны, в моем коде названия переменных отличаются от штатных названий.
Открываем: module/attachment/include/component/block/list.class.php, находим:
'bIsAttachmentEdit' => $bIsAttachmentEdit,
Ниже добавляем:
'title' => $this->getParam('title')
Открываем: module/attachment/template/default/block/list.html.php, находим:
{if $aAttachment.is_image}
{img thickbox=true server_id=$aAttachment.server_id path='core.url_attachment' file=$aAttachment.destination suffix='_thumb' max_width='attachment.attachment_max_thumbnail' max_height='attachment.attachment_max_thumbnail'}
{/if}
Меняем на:
{if $aAttachment.is_image}
{img thickbox=true server_id=$aAttachment.server_id title:$title path='core.url_attachment' file=$aAttachment.destination suffix='_thumb' max_width='attachment.attachment_max_thumbnail' max_height='attachment.attachment_max_thumbnail'}
{/if}
Открываем: module/forum/include/component/controller/thread.class.php, находим:
$this->setParam('activeForumId', $aForum['forum_id']);
Ниже добавляем:
$this->setParam('title', $thread['title']);
Будьте внимательны, в моем коде названия переменных отличаются от штатных названий.