我正在尝试为SilverStripe站点做一些非常不同的事情:在几个子页面上是数据表,这些表每个都有自己的列标题集,有些表的列比其他表多.我想避免在富文本编辑器中构建表格,因为这容易出现很多错误,并且随着时间的推移维护是一件麻烦事.
我想要做的是创建一个DataObject,它允许第n个列和第n个相应的行.这样我可以在模板中调用一个循环(或可能是两个),我已经有了HTML表结构.内容管理员可以完全控制任何给定子页面的表格中的哪些列,并且他们不必担心维护HTML表格设置.
我有几个想法没有产生我想要的结果,没有a)使内容管理器的UI体验过于复杂,b)无法正确地将列与行链接.
我曾想过为Table Headers创建一个DataObject,为Table Rows创建一个DataObject,但后来我很难理解如何以一种有意义的方式组合它们,特别是因为可能有任意数量的列.
有人会有任何建议来接近这个吗?
更新:好的,我有一些可用的TableRowItem数据对象,并且接近工作.但是,现在的问题是:当我基本上即时创建它们时,如何将字段值保存到数据库?就像现在一样,保存到数据库的唯一字段是PDF文件上载字段,其他所有内容在点击"创建"时都会被删除.
<?php
class TruckBodyPdfTableRowItem extends DataObject {
private static $db = array(
);
// One-to-one relationship with gallery page
private static $has_one = array(
'TablePage'=> 'Page',
'TableColumnSet' => 'TableColumnSet',
'PDF' => 'File',
);
// tidy up the CMS by not showing these fields
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->removeFieldFromTab("Root.Main","TablePageID");
$fields->removeFieldFromTab("Root.Main","TableColumnSetID");
$fields->removeFieldFromTab("Root.Main","SortOrder");
$fields->addFieldsToTab("Root.Main", $this->getMyColumnOptions());
return $fields;
}
public function getMyColumnOptions()
{
$columnArray = [];
$Columns = DataObject::get('TableColumnSet');
foreach($Columns as $Column){
$columnArray[] = …
Run Code Online (Sandbox Code Playgroud) 好的,所以我是 Shopify 的新手,所以这可能很容易解决,我只是没有“明白”。
我想我正在使用旧主题,因为新主题似乎已经有了一个 js 文件,可以在为产品进行选项选择时更新 URL 中的变体 ID。我一直试图弄清楚,但我完全迷失了。我的主题似乎根本没有这样的东西。
我一直在尝试使用 jQuery 进行不同的事情,以从选项中获取变体 ID 值并history.pushState
更改 URL 中的 ID,但这不是最好的解决方案,并且不能始终如一地工作,也不是真正的“修复”。
尽管我只想将主题更改为更新的、有效的主题,但遗憾的是,这不是一个选择,而且我知道这个主题可能很糟糕。
这是网站:https : //elizabethsuzann.com/collections/all-products
这是产品文件:
<div id="content" class="main-content">
<div id="page">
<div class="row full-width clearfix">
<div id="product-{{ product.id }}">
<div class="column medium-6 large-6 product-photos product__images left show-for-small-only">
{% include "product-toggler" %}
</div>
<div class="column medium-6 large-6 product__description right" id="product-right">
<div id="product-description">
<div class="row product__details">
<div class="column medium-9">
{% if settings.vendor %}<h3>{{ product.vendor }}</h3>{% endif %}
<h1 class="product__title medium-text-left small-text-center">{% include "product-title-replacer" …
Run Code Online (Sandbox Code Playgroud) 有没有办法在两个模板下定位所有子页面?如果,如果模板名称是"A"或模板名称是"B",请让孩子们?
这就是我所拥有的,它现在只针对一个模板,但我想添加一些或者它,以便我可以得到另一个的子项:
Item ContentGroup = CurrentItem.Axes.SelectSingleItem(@"child::*[@@templatename='Section Page']/*[@@templatename='Sub Page Top Level']");
Run Code Online (Sandbox Code Playgroud)
我去获取名为"Sub Page Top Level"或"Sub Page Top Level Custom"的模板的所有子项.有没有办法在没有太多麻烦的情况下做到这一点?
我已经尝试了各种修复方法,但没有任何运气。
我希望幻灯片具有淡入淡出效果以及整个滑块自动播放。我已经尝试了 Swiper 文档中找到的示例,遵循此示例但使用最新的 swiper:https: //codepen.io/michiel-huiskens/pen/WwqLew,遵循用户 YarGnawh 此处列出的示例:https://github .com/nolimits4web/swiper/issues/1177,以及此线程中提到的 CSS 修复: https: //github.com/nolimits4web/swiper/issues/1098。
它们都不起作用,我也尝试了各种参数组合。这是我现在所拥有的: https: //codepen.io/gojiHime/pen/GVQgzm
var homeSwiper = new Swiper(".home-swiper-container", {
fadeEffect: { crossFade: true },
virtualTranslate: true,
autoplay: 2500,
speed: 1000,
autoplayDisableOnInteraction: true,
slidersPerView: 1,
effect: "fade"
});
Run Code Online (Sandbox Code Playgroud)
看起来它在旧版本中工作,因为此代码笔可以工作,并且使用旧版本: https: //codepen.io/michiel-huiskens/pen/WwqLew
有任何想法吗?
我在解决图像上传问题时遇到了一些麻烦.我正在使用带有jquery函数的html文件上载表单,该函数检查所选图像的文件类型.我想要做的是用网站决定上传的内容替换网站页面上的当前图像.但是,我找不到从上传中获取完整图像源路径的方法 - 我总是得到一条假路径,这对我想做的事情不起作用.如果我想这样做,或者还有其他方法,我真的需要为图像创建一个数据库吗?我不能使用PHP/MySQL代码 - 只有ASP.NET,C#和SQL/SQL Express.
这是我到目前为止的代码,除了我无法成功替换默认图像(其名称和ID为"logo")与上传的图像,因为我没有从上传器获取完整路径.会非常有帮助!提前致谢!
<html>
<head>
<title>Image Swap Widget Testing</title>
<style type="text/css">
.myWebForm{
border: 4px solid grey;
width: 300px;
height: 200px;
padding: 10px;
font-family: Arial;
font-size: small;
}
</style>
<script type="text/javascript" src="jquery-1.9.1.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('INPUT[type="file"]').change(function () {
var ext = this.value.match(/\.(.+)$/)[1];
switch (ext) {
case 'jpg':
case 'jpeg':
case 'png':
case 'gif':
case 'bmp':
$('#uploading').attr('disabled', false);
$('#logo').attr("src", $('#uploading').val());
alert('image approved!');
alert($('img').attr('src'));
alert($('img')[0].src);
alert($('#uploading').val(img.src));
break;
default:
alert('This is not an allowed file type.');
this.value = …
Run Code Online (Sandbox Code Playgroud) 我一直无法为这个问题找到合适的解决方案,我知道这很简单,但我忘记了怎么做.我有一个带有一个textfield字段的表单,用户不需要填写.我想在数据库中插入NULL,而不是它当前正在执行的0.不过,我不确定我错过了什么.文本框已命名taxRateTxt
,我目前无法为我工作:
try
{
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
{
cn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.Parameters.Add(new SqlParameter("@FIPSCountyCode", countyCodeTxt.Text));
cmd.Parameters.Add(new SqlParameter("@StateCode", stateCodeList.SelectedValue));
cmd.Parameters.Add(new SqlParameter("@CountyName", countyNameTxt.Text));
string taxStr = taxRateTxt.Text;
//test for an empty string and set it to db null
if (taxStr == String.Empty)
{
taxStr = DBNull.Value;
}
cmd.Parameters.Add(new SqlParameter("@TaxRate", taxStr));
if (AddBtn.Visible == true)
cmd.CommandText = addQuery;
if (EditBtn.Visible == true)
{
cmd.CommandText = editQuery;
}
cmd.ExecuteNonQuery();
cn.Close();
}
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
我不确定我做错了什么但是我在这个网站上设置的谷歌自定义搜索并没有按照我需要的方式工作.我想要的是在页面中显示结果,当搜索将我带到页面时,结果出于某种原因出现在弹出窗口中.
这就是我所拥有的:
<script>
(function () {
var cx = '[hidden]';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:searchbox-only linktarget="_self" resultsUrl="/HomePage/Search-Results"></gcse:searchbox-only>
Run Code Online (Sandbox Code Playgroud)
我尝试使用_parent进行linktarget,但这也没有解决问题.有没有办法禁用此自定义搜索在弹出窗口中打开结果?
我正在处理SilverStripe页面类型,该类型旨在获取父导航项的所有子项,除了可能是页面类型的任何子项PDFTemplate
.我习惯于获取所有子元素,但是当根据模板类型排除特定孩子时,我不知道如何继续.
这是获取父导航项的子项的函数:
<% if $Children %>
<div class=“Centers-Links-Area”>
<% loop $Children %>
<div class="Centers-Ex-Block clearfix">
<a href="$Link">
<% if $CentersSubpageImage %>
<img class="image" src="$CentersSubpageImage.URL" />
<% end_if %>
<p>$H1</p>
</a>
</div>
<% end_loop%>
</div>
<% end_if %>
Run Code Online (Sandbox Code Playgroud)
我想要做的是,如果任何一个孩子是页面类型PDFTemplate
,我想完全隐藏"Centers-Links-Area"div.我可以在哪里放置if语句来根据页面类型进行检查?
我有一个管理模型选项卡(称为"约会"),用于存储表单提交的SilverStripe.一切正常,数据显示在摘要网格中.但是,我需要找到一种方法来更改数据的默认排序.现在,条目列出最旧到最新,但我需要这样做,所以最新的始终是第一个.
查看mysql表,我看到默认情况下有一个Created列和LastEdited列.我想以某种方式使用Created列,所以我可以设置自定义排序来覆盖默认值,但我不知道如何做到这一点.我从未试图覆盖管理模型的sumimmary网格的默认排序方法.
这是Appointment类的代码::
<?php
class Appointment extends DataObject {
private static $db = array(
'Name' => 'varchar',
'Email' => 'varchar',
'Phone' => 'varchar',
'Message' => 'HTMLText',
);
private static $summary_fields = array(
'Name',
'Email',
'Phone',
'Message',
);
private static $field_labels = array(
'Name' => 'Name',
'Email' => 'Email',
'Phone' => 'Phone',
'Message' => 'Message',
);
}
Run Code Online (Sandbox Code Playgroud) 我正在研究sitecore网站的一部分,我仍然习惯于如何为它编码.我更熟悉使用SQL来选择,插入,删除和更新内容,所以我可能会使这个问题比实际更困难.
基本上,我所拥有的是sitecore数据库中的一个名为"完整产品名称"的droplink字段.这链接到另一个名为"完整名称"的字段,这是我想要获取值的字段(因此,我想使用"完整产品字段"值搜索"完整名称"字段).
Item CPNItem = db.Items[orderItem.Fields["Complete Product Name"].Value];
if (CPNItem != null)
{
//find complete name field on CPNItem
}
Run Code Online (Sandbox Code Playgroud)
我可以很好地获得"完整产品名称"值,但这不是我想要的......我已经习惯使用SQL来做这样的搜索,我真的很困惑如何继续.
任何帮助都会很棒!:)
silverstripe ×3
sitecore ×3
c# ×2
javascript ×2
jquery ×2
.net ×1
asp.net ×1
data-objects ×1
dbnull ×1
html ×1
options ×1
product ×1
shopify ×1
sorting ×1
sql ×1
sql-insert ×1
string ×1
swiper.js ×1
templates ×1
variations ×1