Простая галерея modx: Пример создания простой галереи в MODX Revo: Gallery

msOptionsPrice2 / Каталог, Поиск, Фильтрация / Дополнения MODX / modstore.pro

[msOptionsPrice2] — Новая версия с модификациями продукта. Кардинально отличается от предыдущей, просто обновиться не получится.

Видеообзор от OpenModx

В целом компонент так же работает с опциями продукта, но теперь опции привязаны к модификации продукта. Так же модификации можно задать свой артикул, вес, кол-во и конечно стоимость. Доступны все опции продукта.

Модификации продукта
На странице продукта доступна одноименная вкладка (настройка msoptionsprice_working_templates, в ней перечислить id необходимых шаблонов). Можно создать/изменить модификации продукта.

Для модификации доступны все опции продукта.

Сниппет msOptionsPrice.initialize
Предназначен для подключения стилей и скриптов на фронте сайта.


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

[[!msOptionsPrice.initialize?]]

Дефолтный скрипт отслеживает изменение формы продукта и подгружает данные о модификации.
Для работы скрипта необходимо добавить необходимые классы, пример чанка продукта — gist.github.com/vgrish/b6998560c6a64c0f34109a9e632b9b56

форма продукта — msoptionsprice-product
стоимость продукта — msoptionsprice-cost msoptionsprice-[[*id]]
артикул продукта — msoptionsprice-article msoptionsprice-[[*id]]
вес продукта — msoptionsprice-mass msoptionsprice-[[*id]]

Сниппет msOptionsPrice.modification
Предназначен для вывода модификаций продукта. Часто требуется отдельно вывести информацию о различных модификациях продукта, теперь это достаточно просто сделать. Нужно вызвать сниппет

[[!msOptionsPrice.modification?]]

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

В чанк галереи необходимо добавить:
— класс

<div>

— идентификаторы

data-rid="{$file['product_id']}" data-iid="{$file['id']}"

пример чанка gist.github.com/vgrish/e5c7e541b33eefc4b7c0cb68ec389096
дофолтный скрипт работает с галереей fotorama.

Обработка старой цены продукта
В случае с модификациями продукта, разница может быть очень значительна и практически всегда ее сумма выглядит нелогично. Поэтому была добавлена обработка старой цены продукта.
Логика расчета очень простая

(цена продукта / старая цена продукта = цена модификации продукта / старая цена модификации продукта)
Достаточно проставить старую цену в основное поле продукта и старая стоимость модификации будет автоматически рассчитана.

Для смены на фронте нужно добавить необходимые классы. Пример чанка продукта тут gist.github.com/vgrish/b6998560c6a64c0f34109a9e632b9b56#file-gistfile1-txt-L22

В сниппете msOptionsPrice.modification поле так же доступно поле old_price.

Копия модификации
Добавлен процессор на копирование модификации.

превью в корзине
Для вывода превью модификации в корзине магазина можно использовать следующую конструкцию.
gist.github.com/vgrish/3748714377be39401799e3908efd8a59#file-mscart-tpl-L22-L35

функционал связанных опций.
Довольно часто встает вопрос о отображении тех или иных опций в зависимости от другой(их), теперь данный функционал есть из коробки.

Данный функционал реализует сниппет msOptionsPrice.option, он аналогичен сниппету msOptions и служит для вывода опций модификаций продукта.
Добавлен параметр constraintOptions — служит для задания ограничений опций, указывается в формате json, либо сразу в виде массива.

Пример вызова

{'msOptionsPrice.option' | snippet : [
'options' => 'phytomodule_color,equipment,frame_color',
'tpl' => 'phytomodule.option',
'processColors' => 1,
'constraintOptions' => [
    'phytomodule_color' => ['sizes'],
    'equipment' => ['sizes','phytomodule_color'],
    'frame_color' => ['sizes','phytomodule_color','equipment']
]
]}

В данном случае мы указываем что:
— опция phytomodule_color зависит от опции sizes
— опция equipment зависит от опции sizes и phytomodule_color
— опция frame_color зависит от опции sizes и phytomodule_color и equipment

Пример чанка опций

{foreach $options as $name => $values}
    <div><b>{('ms2_product_' ~ $name) | lexicon}</b></div>
    <div
        {if $constraints[$name]}
            data-constraints="{$constraints[$name]| json_encode: 256 | htmlentities}"
        {/if}
        >
        {foreach $values as $value index=$index}
         
        <label>
        <input type="radio" value="{$values[$index]}" name="options[{$name}]" 
            {if $index == 0}checked="checked"{/if}
            
            {if $constraints[$name]}
                data-relations="{$relations[$name][$value]| json_encode: 256 | htmlentities}"
            {/if}
                    
            />
            {$values[$index]}
        </label>
    
        {/foreach}
    </div>
{/foreach}

data-constraints — задаем ограничения опции
data-relations — задаем связи опций
input-parent — класс, необходим для скрытия/ отображения контейнера с опцией

аналогично задается и вывод селектами

{foreach $options as $name => $values}
    <div>
        <label for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
        <div>
              
            <select name="options[{$name}]"
                {if $constraints[$name]}
                    data-constraints="{$constraints[$name]| json_encode: 256 | htmlentities}"
                {/if}
                >
                {foreach $values as $value index=$index }
                    <option value="{$value}"
                     
                    {if $constraints[$name]}
                        data-relations="{$relations[$name][$value]| json_encode: 256 | htmlentities}"
                    {/if}
                         
                    >{$value}</option>
                {/foreach}
            </select>
        </div>
    </div>
{/foreach}

пример s6200. h4.modhost.pro/6/12010.html

опции продукта
Улучшена работа с опциями продукта. Нет необходимости как прежде сначала создавать опции, а затем переключаться на модификации. Доступно создание/ удаление опций продукта напрямую из модификации.

остатки
Для работы с остатками нужно активировать настройку allow_remains.
При добавлении товара в корзину/ изменении будет проверяться доступное кол-во модификации товара и если его нет в наличии будет выдано предупреждение, сам товар в таком случае нельзя будет добавить.

Так же при оплате/ отмене заказа количество товара будет синхронизировано.
Статусы списания/ возврата остатков можно сменить в соответствующих настройках пакета.

— вызов в mFilter2
Для вывода слайдера цен с учетом модификаций необходимо положить кастомный класс фильтрации в папку и указать в настройке mse2_filters_handler_class класс msopFilters

/core/components/msearch3/custom/filters/
[[!mFilter2?
	&limit=`5`
	&parents=`0`
	&element=`msProducts`
	&setMeta=`1`
	&filters=`
		msop|price:number
		msoption|size
	`
	&tpls=`tpl.
msProducts.row,tpl.msProducts.row` &class=`msProduct` &sort=`ms|price:desc` &tplOuter=`tpl.mFilter2.outer` &tplFilter.outer.msop|price=`tpl.mFilter2.filter.slider` &tplFilter.row.msop|price=`tpl.mFilter2.filter.number` ]]

Не пытайтесь обновиться!!! Если не уверены что оно вам нужно.

ps. Всем спасибо за внимание. Новая версия совместима с пакетом скидок Discontrol

Пример работы: s6200.h4.modhost.pro/katalog/tovar1.html

цена продукта старая цена продукта
——————————————=            ——————————————
цена модификации продукта старая цена модификации продукта

MODx — простой файловый архив на FileDownload v2.6. Усовершенствуем систему редактирования описаний файлов / Хабр

Здравствуйте! Сегодня я хотел бы поговорить о создании файловых архивов на сайте.

К сожалению, я так и не нашел универсальных средств для этого, есть многим известный сниппет FileDownload v2.6, но последний раз его обновляли в 2007 году. И еще я слышал, что ребята с одного из сайтов о MODx пишут сейчас архив и по окончанию обещают его выложить во всеобщий доступ.

Однако если задача не особо сложная (к примеру, банальный список файлов с описаниями для скачки в разделе техподдержка), то вполне подойдет и сниппет FileDownload.

Для начала тем, кто еще не пробовал:

— ссылка на сниппет на modxcms.com
Описание

Техническая информация:
Название: FileDownload
Версия: 2.6
Поддерживает: MODx Evo 1.x.x и ниже
Авторы: Kyle Jaebker, Adam Strzelecki

Сниппет FileDownload выводит список файлов из указанной директории для загрузки пользователями. Может использоваться в сочетании с FileDownload Plugin для обеспечения генерации безопасных ссылок (не указывающих прямо на скачиваемых файл), а так же для возможности подсчета количества скачиваний.

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

Основные возможности сниппета:
• Подсчет количества скачиваний.
• Возможность отображения описания файлов из чанка.
• Полностью настраиваемый внешний вид с помощью чанков.
• Посетители могут смотреть поддиректории.
• Возможность показа вида файла.
• Возможность показа даты создания и размера файла.
• Возможность разграничения доступа к файлам по группам.

Установка:
• Загрузите папку filedownload в директорию snippets (в папке должно быть 3 файла: filedownload.class.inc.php, data.db.class.inc.php и filecount.txt).
• Создайте новый сниппет — FileDownload.
• Скопируйте содержимое из файла FileDownload2.6.php в новый сниппет.
• Создавайте чанки, которые Вы будете использовать.
• Для отображения списка файлов вызовите сниппет.

Пример вызова:
Простой вызов, с указанием директории с файлами:
[!FileDownload? &getFolder=`assets/snippets/filedownload`!]
Простой вызов, с указанием директории с файлами и разрешением на использование поддиректорий:
[!FileDownload? &getFolder=`assets/snippets/filedownload` &browseDirectories=`1`!]

Список параметров «что бы начать»:

&getFolder
По умолчанию: нет
Значение: список директорий, разделенных запятой
Описание: Параметр getFolder используется для определения директорий, которые будет сканировать сниппет. Если директорий указано несколько параметр &browseDirectories работать не будет. Символ “/” при наборе директорий добавлять не надо.
Примечание:
Если используется вместе с плагин FileDownload Plugin, то директория указывается в TV параметре FileDownloadFolder, а не в параметрах при вызове сниппета
Пример: assets/snippets/filedownload

&browseDirectories
По умолчанию: 0
Значение: [ 1 | 0 ]
Описание: Данный параметр позволяет пользователям просматривать поддиректории в директории, которую Вы укажите в &getFolder. Если Вы используете этот параметр, то задействуются следующие секции в шаблоне: parent & folder.

&getFile
По умолчанию: null
Значение: файл
Описание: при заполнении параметра сниппет выведет только указанный файл. При этом параметр getFolder все равно необходим и файл, указанный в getFile должен находиться в указанной директории. Таким образом, параметр позволяет скачивать и считать скачивания только одного конкретного файла в директории.
Пример: filedownload.php

&chkDesc
По умолчанию: null
Значение: имя чанка
Описание: Данный параметр позволяет добавить описание к файлам. В параметре указывается имя чанка с описаниями. Синтаксис записи в чанке должен быть таким: директория/имя_файла|описание для файла||

Пример:
Имя чанка: fileDescription
Содержание чанка:
assets/snippets/filedownload/test.pdf|This is a test pdf. It shows report stuff.||
assets/snippets/filedownload/options.gif|These are the options available to you.||


Все, этих параметров достаточно, что бы начать использовать сниппет. Остальные параметры Вы можете посмотреть в файле помощи из архива (на английском), здесь или же в архиве с FileDownload Module, о котором ниже.

Так, если Вы знакомы со сниппетом или же сейчас попробовали его, то, наверно, заметили, что редактировать описания к файлам совсем неудобно, особенно людям не посвященным (секретаршам, например). Ведь выглядит чанк вот таким образом:

Что ж, для простых надобностей, можно это дело изменить, добавив простой модуль, который я назвал FileDownload Module.

– Это дополнение, которое было написано для более удобного добавления и редактирования описаний к файлам.

Установка:
• Создайте новый модуль с именем, например, Редактор описаний Файлового архива.
• Скопируйте содержимое файла FileDownload Module v0.9b.php в окно кода модуля. Не забудьте удалить теги <?php вначале и ?> в конце кода.
• Настройте модуль, путем изменения необходимых Вам параметров в самом коде.

Параметры:
$downloadFolder = ‘имя директорий, через запятую’; — список директорий, которые будут сканироваться модулем. Указывайте все директории, которые Вы используете при вызове или различных вызовах сниппета.
$chunkname = ‘имя чанка’; — имя чанка, в котором хранятся или будут храниться описания.
$chunkid = ‘id чанка’; — id чанка, в котором хранятся или будут храниться описания. Id чанка Вы можете посмотреть в Управление элементами — > Чанки. В скобках, рядом с названием чанка, будет указан Id.

Как это выглядит:

У нас в менеджере модулей появиться новый пункт:

А при нажатии на него, с панели модулей, мы увидим вот такой нехитрый интерфейс:

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


Итак, файлы для скачивания:

Модуль и документация
Модуль, документация и сам сниппет (все в одном)

Кстати, в архиве «все в одном» есть бонус — иконки различных расширений файлов, которых, почему, в оригинальном архиве не было.

Надеюсь статья, перевод документации сниппета и модуль кому-нибудь пригодятся)

MODX: MIGX — Простая галерея · GitHub

Простая сетка MIGx для администрирования img
Простая сетка MIGx для изображений
Поля: активное, название, описание, изображение
————————————————— ——
вкладок формы:
————————————————— ——
[
{
«заголовок»: «Bild»,
«поля»: [
{
«поле»: «активный»,
«заголовок»: «Anzeigen?»,
«inputTV»: «MIGx_tv_Radio_yesNo»
},
{
«поле»: «imgPath»,
«заголовок»: «Bild»,
«inputTV»: «MIGx_tv_Image»
}
]
},
{
«заголовок»: «Текст»,
«поля»: [
{
«поле»: «imgTitle»,
«заголовок»: «Überschrift»
},
{
«поле»: «imgDesc»,
«заголовок»: «Beschreibung»,
«inputTV»: «MIGx_tv_Richtext»
},
{
«поле»: «imgUrl»,
«caption»: «Ссылка (необязательно)»,
«inputTV»: «MIGx_tv_URL»
}
]
},
{
«заголовок»: «Макет»,
«поля»: [
{
«поле»: «внешний класс»,
«caption»: «Внешний класс(ы)»
},
{
«поле»: «imgClass»,
«caption»: «Внутренний класс(ы)»
},
{
«поле»: «imgAlt»,
«заголовок»: «Alt»
},
{
«поле»: «imgHeight»,
«заголовок»: «Высота»
},
{
«поле»: «imgWidth»,
«заголовок»: «Ширина»
}
]
}
]
————————————————— ——
Столбцов сетки:
————————————————— ——
[
{
«заголовок»: «Актив»,
«ширина»: «10»,
«сортируемый»: «истина»,
«dataIndex»: «активный»
},
{
«заголовок»: «Überschrift»,
«ширина»: «60»,
«сортируемый»: «истина»,
«dataIndex»: «imgTitle»,
«рендерер»: «this. renderCrossTick»
},
{
«заголовок»: «Bild»,
«ширина»: «30»,
«сортируемый»: «ложь»,
«dataIndex»: «imgPath»,
«рендерер»: «this.renderImage»
}
]

php — Ошибка галереи Modx

Задать вопрос

спросил

Изменено 9лет, 10 месяцев назад

Просмотрено 245 раз

У меня есть страница портфолио с маленькими квадратиками с изображением и ссылкой. Кажется (после борьбы с кодом) это работает, но изображение не работает.

За каждый проект на странице портфолио:

 [[!Галерея? &album=`[[+tv.gallery]]` &limit=`1` &thumbWidth=`870` &thumbHeight=`400` &thumbZoomCrop=`2` &toPlaceholder=`projecten`]]
  • [[!+projecten:notempty=` <дел> [[+description]]
  • `]]

    (я использую функцию галереи по умолчанию) thetv.gallery — это идентификатор галереи, которую я люблю использовать, но теперь я беру только первый альбом, а не первую фотографию проекта.

    Работает, но только выбранное изображение является не первым элементом альбома (tv.gallery), а первым или вторым изображением в этом альбоме.

    Итак: — у меня есть 2 страницы, на каждой из которых есть галерея с изображениями — код дает мне первый альбом с изображением 1 и изображением 2.

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