AlexMoiseyuk VIP
Total posts: 123
13 Янв 2015 12:52

Хорошего дня.

я хочу поправить функцию public function _custom($client = 'full') что в файле gallery.php. например добавить alt или название статьи в тайтл для изображений.

подскажите могу ли я это сделать как-то переопределив эту функцию в файле шаблона full-custom.php?

Последние изменения: 16 Янв 2015


Sergey
Total posts: 13,748
13 Янв 2015 15:15

К сожалению эта функция в самом поле. Но можно сделать так. Скопировать ее и вставить в кастом шаблон новый с новым именем. Поправить как надо и потом тут же вызвать.


AlexMoiseyuk VIP
Total posts: 123
13 Янв 2015 15:59

Sergey К сожалению эта функция в самом поле. Но можно сделать так. Скопировать ее и вставить в кастом шаблон новый с новым именем. Поправить как надо и потом тут же вызвать.

копировать функцию или содержимое? потому что первое я пытался, но она мне говорит, что нужен class JFormFieldCGallery: Call to undefined method JFormFieldCGallery::_custom_my() in ...\tmpl\output\full-custom.php.

если можно,дайте небольшой хоть сокращенный пример


Sergey
Total posts: 13,748
15 Янв 2015 09:55

Ну как бы можно содержимое или функцию Конечно нужно понимать что и вызывать надо это как функцию потом. Не через $this. Но это основы РНР. Я просто сказал сому идею что можно этот код вынести в шабон и там его использовать.

echo my($this);

function my($this, $client = 'full')
{
    if(empty($this->value))
    {
        return;
    }

    $f_key = $this->id . '-' . $this->record->id;

    $style = "
    .image-element {
        opacity:0;
    }
    .image-wrapper{
        display: inline-block;
    }
    .images-row {
        white-space:nowrap;
        text-align:center;
        overflow:hidden;
    }";

    JFactory::getDocument()->addStyleDeclaration($style);

    $rel = '';
    if($this->params->get('params.lightbox_click_' . $client, 0) == 0)
    {
        $rel = 'data-lightbox="' . $this->id . '_' . $this->record->id . '"';
        if($this->params->get('params.show_mode', 'gallerybox') == 'gallerybox')
        {
            $rel = 'rel="gallerybox' . $this->id . '_' . $this->record->id . '"';
        }
        if($this->params->get('params.show_mode', 'gallerybox') == 'rokbox')
        {
            $rel = 'data-rokbox data-rokbox-album="' . htmlentities($this->record->title, ENT_COMPAT, 'UTF-8') . '"';
        }
    }

    $patern_img = '<div class="image-wrapper" style="background-image:url(\'%s\');"><a id="%d" title="%s" href="/%s" ' . $rel . '><img class="image-element" src="/%s" border="0" /></a></div>';
    $out        = array();

    $dir = JComponentHelper::getParams('com_cobalt')->get('general_upload') . DIRECTORY_SEPARATOR . $this->params->get('params.subfolder', $this->field_type) . DIRECTORY_SEPARATOR;

    foreach($this->value as $picture_index => $file)
    {
        $picture = $dir . $file['fullpath'];

        $options = array(
        'mode'       => $this->params->get('params.thumbs_mode', 1),
        'strache'    => $this->params->get('params.thumbs_stretch', 1),
        'background' => $this->params->get('params.thumbs_background_color', "#000000"),
        'quality'    => $this->params->get('params.thumbs_quality', 80)
        );
        $url =  CImgHelper::getThumb($picture, $this->params->get('params.thumbs_width', 100), $this->params->get('params.thumbs_height', 100), 'gallery' . $f_key, $this->record->user_id, $options);
        /********************/
        $options = array(
        'strache'    => $this->params->get('params.full_stretch', 1),
        'background' => $this->params->get('params.thumbs_background_color', "#000000"),
        'quality'    => $this->params->get('params.full_quality', 80)
        );
        $url_to_original =  CImgHelper::getThumb($picture, $this->params->get('params.full_width', 100), $this->params->get('params.full_height', 100), 'gallery' . $f_key, $this->record->user_id, $options);

        $key = md5($picture.$this->params->get('params.full_width', 100).$this->params->get('params.full_height', 100).implode('-', $options));

        if($this->params->get('params.count_views'))
        {
            $url_to_original = sprintf('%s/index.php?option=com_cobalt&task=files.show&id=%d&user_id='.$this->record->user_id.'&fldr=gallery'.$f_key.'&file_key=%s&tmpl=component', JURI::root(TRUE), $file['id'], $key);
        }

        $title = (empty($file['title']) ? $file['realname'] : $file['title']);

        $out[] = sprintf($patern_img, $url, $picture_index, $title, $url_to_original, $url);
    }
    $class = $this->params->get('core.field_class', FALSE);

    return '<div id="gallery' . $this->id . '" class="mainwrap' . ($class ? ' ' . $class : '') . '">' . implode('', $out) . "</div>";
}

Можно начать вот так и потом смотрить что за ошибки и устранять. Можно вообще на основе функции сделать просто шаблон без вызова функции.

То есть, да копируете содержимое функции и вставляете как содержимое шаблона. Только последее return меняете на echo.


AlexMoiseyuk VIP
Total posts: 123
16 Янв 2015 21:08

Sergey То есть, да копируете содержимое функции и вставляете как содержимое шаблона. Только последее return меняете на echo.

звучит просто и красиво. буду иметь немного времени, обязательно попробую. Как всегда огромнейшее спасибо!

Работает на Cobalt