【问题标题】:Concrete5 Block AttributesConcrete5 块属性
【发布时间】:2012-03-28 02:20:05
【问题描述】:

我的主页上有几张图片,我希望客户能够不时更改图片。现在它们被硬编码为:

<img src="<?=$this->getThemePath()?>/img/welcomePhoto1.jpg" alt="" class="welcome-photo" />

如果我将此设置为他们可以更改照片的新块区域,我是否可以确保每次更改图像时块都会保留该类。我真的不喜欢通过 UI 添加类(只是觉得这不是一个好习惯)。我知道你可以像这样包装块:

<?php 
$a = new Area('sidebar');
$a->setBlockWrapperStart('<div class="box">');
$a->setBlockWrapperEnd('</div>');
$a->display($c); 
?>

他们是不是类似于$a-&gt;setBlockClass('welcome-photo');

【问题讨论】:

  • 像在代码示例中那样使用 setBlockWrapperStart 和 setBlockWrapperEnd 是在 C5 中执行此操作的正确方法。您在使用这种方法时遇到了什么问题?

标签: concrete5


【解决方案1】:

是的,可能有一种方法可以通过 Area 类的 setCustomTemplate 方法来实现您想要做的事情。

$m = new Area('Main');
$m->setCustomTemplate('image','templates/welcome-photo.php');
$m->display($c);

然后在您的模板/welcome-photo.php 文件中,您可以根据需要设置这些图像的包装器。不过请注意,这只是为该区域中任何类型为“图像”的块(在此示例中)设置默认模板,但可以通过编辑界面覆盖它。

【讨论】:

    【解决方案2】:

    我认为使用setBlockWrapperStart()setBlockWrapperEnd() 没有任何问题——这就是它们的用途。

    但是,如果您出于某种原因需要替代解决方案,则可以改为硬编码文件集,并让用户通过文件管理器换出该集的图像。

    或者您可以硬编码剪贴簿块(如果使用 5.4 或更低版本)或堆栈(如果使用 5.5 或更高版本)并让用户通过仪表板剪贴簿 (5.4) 或仪表板堆栈 (5.5) 屏幕编辑图像。

    如果您想要其中任何一种方法的代码示例,请告诉我,我会修改我的答案。但是请先解释一下你原来的 setBlockWrapper 方法的问题,所以我理解你遇到的具体问题。

    【讨论】:

    • 我只是想将类添加到 img 元素中,而不是将它们全部放入 div 中,以保持代码输出更清晰。我不需要setBlockWrapperStartsetBlockWrapperEnd,我只是想知道是否有类似的方法,你可以让每个元素都有那个类。对不起,如果我不够清楚。在我看来这当然是有道理的,但我想我无法解释! :)
    • 无法从模板本身设置块的类,因为每个块都有不同的 HTML 输出。但是,您可以自定义图像块的模板。将SITEROOT/concrete/blocks/image/view.php 复制到SITEROOT/blocks/image/view.php(您需要先创建 blocks/image 目录),然后在那里编辑文件并修改 HTML。但我认为在块周围有一个包装 div 并没有那么糟糕——我知道你的口味可能会有所不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多