Как изменить размер изображения и создать миниатюру в silvestripe 4.4 - PullRequest
0 голосов
/ 03 ноября 2019

Может кто-нибудь сказать мне, что я делаю неправильно?

Я хочу создать галерею с silvestripe 4.4

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

<?php

namespace SilverStripe\Lessons;

use SilverStripe\Forms\DateField;
use SilverStripe\Forms\TextareaField;
use SilverStripe\Forms\TextField;
use SilverStripe\Assets\Image;
use SilverStripe\Assets\File;
use SilverStripe\AssetAdmin\Forms\UploadField;
use Page;

class GalleryPage extends Page
{
    private static $table_name = 'GalleryPage';

    private static $can_be_root = false;

    private static $db = [
        'Date' => 'Date',
        'Author' => 'Varchar',
    ];

    private static $has_one = [
        'PhotoCover' => Image::class,
    ];

    private static $many_many = [
        'Gallery' => Image::class,
    ];

    private static $owns = [
        'PhotoCover',
        'Gallery',
    ];

    public function getCMSFields()
    {
        $fields = parent::getCMSFields();
        $fields->addFieldToTab('Root.Main', DateField::create('Date','Date of article'), 'Content');
        $fields->addFieldToTab(
            'Root.Main',
            $PhotoCover = UploadField::create('PhotoCover'), 'Author');
        $fields->addFieldToTab('Root.Main', TextField::create('Author','Author of article'),'Content');


        $PhotoCover->setFolderName('PhotoCovers');


        $fields->addFieldToTab(
            'Root.Gallery',
            $Gallery = UploadField::create('Gallery')->setDescription('Selektuj Photos')
        );



        $Gallery->setFolderName('Gallery');

        return $fields;
    }

}

, и вот мой шаблон GalleryPage.ss

<% if $Gallery %>
    <% loop $Gallery %>
     <a class="thumb" href="$URL" data-lightgallery="group-item">
        <img  src="$URL" alt="" width="371" height="276"/>
    </a>
    <% end_loop %>
<% end_if %>

Это единственный способ получить изображения через цикл.

<img class="my-custom-class" src="$Gallery.ScaleWidth(750).URL" alt="" width="$Gallery.ScaleWidth(750).Width" height="$Gallery.ScaleWidth(750).Height" />

or

<% with $Gallery.ScaleWidth(750) %>
    <img class="my-custom-class" src="$URL" alt="" width="$Width" height="$Height" />
<% end_with %>

Все до сих пор безуспешно пытались попробовать только ...

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 12 ноября 2019

Согласно документации SS

$ Me выводит текущий объект в области видимости. Это вызовет forTemplate объекта.

В вашем случае это '$ Me.ScaleWidth (750) .URL'

<% if $Gallery %>
    <% loop $Gallery %>
     <a class="thumb" href="{$Me.ScaleWidth(750).URL}" data-lightgallery="group-item">
        <img  src="$URL" alt="" width="371" height="276"/>
    </a>
    <% end_loop %>
<% end_if %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...