Добавление заголовков блоков для отдельных товаров на главной странице Nopcommerce

я хочу добавить заголовки блоков для разделения некоторых продуктов на главной странице,

я использую источник nopcommerce 3.0,

в настоящее время у меня есть 24 продукта на главной странице,

я хочу показать 22, а затем вставить заголовок,

затем под титульным баннером покажите последние два продукта

код, который я могу найти:

Представление HomepageProducts.cshtml

@model IList<ProductOverviewModel>

@using Nop.Web.Models.Catalog;

@if (Model.Count > 0)
{
    <div class="product-grid home-page-product-grid">
        <div class="title">
            <strong>@T("HomePage.Products")</strong>
        </div>
        @foreach (var item in Model)
        {
            <div class="item-box">
                @Html.Partial("_ProductBox", item)
            </div>
        }
    </div>
}

ОБНОВЛЕНИЕ

Теперь я исправил код с ответом, предоставленным @Razor,

теперь он отображает первые 22 продукта, а затем мой заголовок, но не отображает остальные продукты после,

@if (Model.Count > 0) 
    {
        <div class="product-grid home-page-product-grid">
            <div class="title">
                <strong>@T("HomePage.Products")</strong>
            </div>

           @{
            int I = 0;
            foreach (var item in Model)
            {
                if(I != 22)
                {
                    <div class="item-box">
                    @Html.Partial("_ProductBox", item)
                    </div>
                    I++;
                }
             }

            <div class="item-box">
                My block title sentence!
            </div>

            foreach(var item in Model)
            {
                if(I > 22)
                {
                    <div class="item-box">
                    @Html.Partial("_ProductBox", item)
                    </div>
                }
            }
           }

        </div>
    }

person Corbo152    schedule 25.11.2013    source источник


Ответы (3)


Что-то вроде этого должно работать.

<div class="product-grid home-page-product-grid">
    <div class="title">
        <strong>@T("HomePage.Products")</strong>
    </div>
    @for (var i = 0; i < Model.Count(); i++)
    {
        var item = Model[i];

        <div class="item-box">
            @Html.Partial("_ProductBox", item)
        </div>

        if (i == 22)
        {
            <div class="banner">banner</div>
        }
    }
</div>
person dav_i    schedule 26.11.2013
comment
Спасибо, теперь мне интересно, как мне разместить оставшиеся продукты в контейнере, который я могу стилизовать. - person Corbo152; 26.11.2013

Я создал несколько циклов foreach на С#, преобразовал их, и все должно быть хорошо :)

@if (Model.Count > 0)
    {
        <div class="product-grid home-page-product-grid">
            <div class="title">
                <strong>@T("HomePage.Products")</strong>
            </div>
            @int i = 0;
            @for (i = 0; i < Model.Count() && i < 22; i++)
            {
                <div class="item-box">
                    @Html.Partial("_ProductBox", item)
                </div>
            }


            <------ CONVERT THE PART BELOW TO CSHTML ------>
            Int I = 0;

            foreach (var item in Model)
            {
                If(I != 22)
                {
                    <div class="item-box">
                    @Html.Partial("_ProductBox", item)
                    </div>
                    I++
                }
            }
            <------ CONVERT THE PART ABOVE TO CSHTML ------>


            <div class="item-box">
                My block title sentence!
            </div>
            <------ CONVERT THE PART BELOW TO CSHTML ------>
            foreach(var item in Model)
            {
                if(i > 22)
                {
                    <div class="item-box">
                    @Html.Partial("_ProductBox", item)
                    </div>
                }
            }
            <------ CONVERT THE PART ABOVE TO CSHTML ------>
        </div>
    }

Надеюсь это поможет :)

person JRO    schedule 26.11.2013
comment
Спасибо, RaZor, работает до определенной степени, он отображает 22 продукта, а затем заголовок, но не отображает остальные продукты после. Я изменил свой вопрос. - person Corbo152; 26.11.2013
comment
Хорошо, я посмотрю! - person JRO; 27.11.2013

Итак, вы хотите показать первые 22 товара, затем заголовок пользовательского блока, а затем остальные товары?

Возьмите эту строку:

@foreach (var item in Model)

и замените эти два:

@int i = 0;
@for (i = 0; i < Model.Count() && i < 22; i++)

а также:

@Html.Partial("_ProductBox", item)

с

@Html.Partial("_ProductBox", Model[i])

Это приведет к тому, что представление будет выводиться только до первых 22 продуктов, после чего вы можете вставить заголовок блока со следующим:

<div class="item-box">
    My block title sentence!
</div>

а затем выведите остаток произведений:

@for (i = i; i < Model.Count(); i++) 
{
    <div class="item-box">
        @Html.Partial("_ProductBox", Model[i])
    </div>
}

Это работает, потому что мы отслеживаем, сколько продуктов уже было отрисовано в переменной i, а затем продолжаем оттуда в наборе продуктов, найденных в модели (если их больше 22).

Обратите внимание, что код все равно выведет заголовок вашего блока, даже если в самом конце списка меньше 22 товаров.

Итак, окончательные изменения в целом:

@model IList<ProductOverviewModel>

@using Nop.Web.Models.Catalog;

@if (Model.Count > 0)
{
    <div class="product-grid home-page-product-grid">
        <div class="title">
            <strong>@T("HomePage.Products")</strong>
        </div>
        @int i = 0;
        @for (i = 0; i < Model.Count() && i < 22; i++)
        {
            <div class="item-box">
                @Html.Partial("_ProductBox", Model[i])
            </div>
        }
        <div class="item-box">
            My block title sentence!
        </div>
        @for (i = i; i < Model.Count(); i++) 
        {
            <div class="item-box">
                @Html.Partial("_ProductBox", Model[i])
            </div>
        }

    </div>
}

РЕДАКТИРОВАТЬ: извините, я забыл изменить ссылку на отдельные продукты, чтобы они были основаны на массиве, используя модель [i] вместо элемента. Смотрите мои изменения выше.

person Ryan Weir    schedule 26.11.2013
comment
спасибо, теперь я получаю сообщения об ошибках, которые я и элемент не существуют в текущем контексте? - person Corbo152; 26.11.2013