Друзья, доброго времени суток. По многочисленным просьбам с вашей стороны, сегодня расскажу вам, как можно добавить иконку к публикации отдельным полем в форме создания/редактирования материалов. На создание шестеренки «Иконка публикации» у меня ушло меньше пяти минут, поэтому советую и вам освоить этот простой урок.Файловая структура
Файловая структура будет обычной за исключением того, что нам не понадобятся ни контроллеры, ни модели, а только лишь один файл с хуками.
Файл конфигурации
/gears/node_icon/node_icon.info:title = Node icon
description = Add image to node
group = plugins
enabled = FALSE
; Задаем размер иконки до которого будет мастшабироваться загружаемое изображение
icon_size = 100x100
Интернационализация
/gears/node_icon/lang/ru.lng:[gears]
node_icon = "Иконка публикации"
node_icon_description = "Добавляет отдельное файловое поля для загрузки изображения к публикации."
База данных
Дамп будет импортирован в базу при установке шестеренки./gears/node_icon/install.sql:
ALTER TABLE `nodes` ADD `icon` VARCHAR( 255 ) NOT NULL AFTER `body`;
Хуки
/gears/node_icon/_hooks.php:<?php
/**
* Node icon hooks
*
* @author Dmitriy Belyaev <admin@cogear.ru>
* @copyright Copyright © 2010, Dmitriy Belyeav
* @license http://cogear.ru/license.html
* @link http://cogear.ru
* @package Node Icon
* @version $Id$
*/
function node_icon_form_result_($Form){
$CI =& get_instance();
if($Form->name == 'node_createdit'){
$Form->image('icon',array(
'upload_path' => _mkdir(ROOTPATH.'/uploads/nodes_icons/'),
'resize' => $CI->gears->node_icon->icon_size,
),5);
$Form->set_values($Form->data);
}
}
function node_icon_node_show_($Node,&$node,$type,$return){
$CI =& get_instance();
if(!empty($node->icon)){
$node->body = $CI->builder->span($CI->builder->img($node->icon),'fright').$node->body;
}
}
Как видите, хука всего два. Первый добавляет поле в таблицу редактирования публикации, второй — картинку к отображению публикации.
Вывод
Вы можете оценить столь малое количество телодвижений для реализации поставленной задачи и сохранение принципа модульности — шестеренки активируются в один клик.Дистрибутив обновлен.


Severity: Notice
Message: Undefined index: crop
Filename: models/upload.php
Line Number: 120
Вылетает такая ошибка что посоветуете
if(empty($image['resize']) OR isset($image['crop']) && !is_string($image['crop'])){if(empty($image['resize'])появился еще симптом моей проблемы иконками :( Но картинки в папку nodes_icons загружаются
A PHP Error was encountered
Severity: Notice
Message: Undefined index: crop
Filename: models/upload.php
Line Number: 228
Лечение: выключить, а затем включить шестеренку.