SEQUEL.ONE
С нами с 16 июня 2015; Место в рейтинге пользователей: #84[РЕШЕНО] Wiki разметка и регулярные выражения
Всем привет. Столкнулся с задачей где из текста нужно выдернуть ссылки расписанные под wiki-разметку и сделать их нормальными ссылками. Пример:
Ссылки встречающиеся в тексте
Нужно заменить на:
Пробую сделать так:
Если делать так, то второе условие не вставляется.
UPD:
Рабочий вариант
Ссылки встречающиеся в тексте
[id215554550|Евгений Маркин]
Нужно заменить на:
<a rel="nofollow" href="https://vk.com/id215554550">Евгений Маркин</a>
Пробую сделать так:
$text = preg_replace('/\[(?:.+?\|)?(.+?)\]/us', '<a rel="nofollow" href="https://vk.com/$2">$1</a>', $text);
Если делать так, то второе условие не вставляется.
UPD:
Рабочий вариант
$text = preg_replace('/\[id(\d{1,20})\|(.*?)\]/', '<a target="_blank" rel="nofollow" href="https://vk.com/id$1">$2</a>', $text);
regex101.com/r/Fv9bkW/1 [Решено] includeThumbs с Fenom
Всем привет. Собираю магазин на miniShop2. Нужно превьюшки маленькие вставлять в корзине у добавленных товаров. Я добавил к сниппету msCart параметр &includeThumbs=`150x150`
В распечатке JSON виден плейсхолдер 150x150 и путь пишет на сгенеренную превьюшку, вопрос вот в чём заключается. В шаблоне указано следующее:
В распечатке JSON виден плейсхолдер 150x150 и путь пишет на сгенеренную превьюшку, вопрос вот в чём заключается. В шаблоне указано следующее:
{foreach $products as $product}
<tr id="{$product.key}">
<td class="image">
{if $product.thumb?}
<img width="165" src="{$product.thumb}" alt="{$product.pagetitle}" title="{$product.pagetitle}"/>
{else}
<img width="165" src="{'assets_url' | option}images/noimage.png"
srcset="{'assets_url' | option}images/noimage.png 2x"
alt="{$product.pagetitle}" title="{$product.pagetitle}"/>
{/if}
</td>
...
</tr>
{/foreach}
Тоесть из цикла foreach получаем путь до картинки по умолчанию {$product.thumb}, но если ставить {$product.150x150} то всё ломается. Как в Fenom правильно вставить плейсхолдер сгенерированный через параметр &includeThumbs? Добавление своих полей в форму заказа [обновлено]
При разработке нескольких проектов, возникала необходимость в получении дополнительных данных от покупателей, а полей в miniShop2 ограниченное количество. Поиск готового решения результата не дал, поэтому предлагаю свой вариант.
Решение обновлено, убраны правки исходного кода минишопа, теперь при обновлении ничего не затрется, изменены ключи у полей
Решалось это следующим образом:
1. Добавлялись необходимые поля, для примера взяты тип плательщика, название организации и инн.
2. Добавлялся плагин срабатывающий при сохранении заказа и при подключении js минишопа в админке.
3. Редактировались настройки и записи словарей.
Более подробно далее
Решение обновлено, убраны правки исходного кода минишопа, теперь при обновлении ничего не затрется, изменены ключи у полей
Решалось это следующим образом:
1. Добавлялись необходимые поля, для примера взяты тип плательщика, название организации и инн.
2. Добавлялся плагин срабатывающий при сохранении заказа и при подключении js минишопа в админке.
3. Редактировались настройки и записи словарей.
Более подробно далее
Условие по номеру элемента в fenom для галереи
Здорово что продукт развивается, но вообще не понимаю как в феном написать что то чуть сложнее стандартных выражений.
Подскажите пожалуйста, как в чанке tpl.msGallery первому элементу дописывать класс, вот примерно так:
И ещё вопрос, может быть Minishop 2.4.0 как то можно к тегам modx вернуть? :) я только болеменее их освоил )))
Подскажите пожалуйста, как в чанке tpl.msGallery первому элементу дописывать класс, вот примерно так:
{foreach $files as $file}
<a class="grouped_elements item [ЕСЛИ IDX=1 ТОГДА ПИШЕМ active]</b>" rel="group1" href="{$file['url']}">
<img src="[[phpthumbon? &input=`{$file['url']}` &options=`w=400&h=270&zc=1`]]" alt="[[+description]]" width="400" height="270"/>
</a>
{/foreach}
Думаю, что должно быть как то так {if ($idx == 1)}active{/if}, но так не работает.И ещё вопрос, может быть Minishop 2.4.0 как то можно к тегам modx вернуть? :) я только болеменее их освоил )))
mFilter2 и кастомные таблицы
Вчера начал делать фильтрацию таблицы с фирмами на mFilter2. Сначало я создал файл кастомного класса:
core/components/msearch2/custom/filters/custom.class.php со следующим содержимым:
core/components/msearch2/custom/filters/custom.class.php со следующим содержимым:
<?php
class CustomFilter extends mse2FiltersHandler {
function __construct(mSearch2 &$mse2,array $config = array()) {
parent::__construct($mse2, $config);
$this->modx->addPackage('spromo' ,MODX_CORE_PATH.'components/spromo/model/');
$this->modx->addPackage('gl' ,MODX_CORE_PATH.'components/gl/model/');
$this->modx->addPackage('voteforms' ,MODX_CORE_PATH.'components/voteforms/model/');
}
public function getSpromoCompaniesValues(array $fields, array $ids) {
$filters = array();
$no_id = false;
if (!in_array('id', $fields)) {
$fields[] = 'id';
$no_id = true;
}
$q = $this->modx->newQuery('SpromoCompanies');
$q->select(implode(',', $fields));
$q->where(array('SpromoCompanies.id:IN' => $ids));
$tstart = microtime(true);
if ($q->prepare() && $q->stmt->execute()) {
$this->modx->queryTime += microtime(true) - $tstart;
$this->modx->executedQueries++;
while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
foreach ($row as $k => $v) {
$v = trim($v);
if ($k == 'category_id') {
if ($row['parent'] == $v) {continue;}
else {$k = 'parent';}
}
if ($v == '' || ($k == 'id' && $no_id)) {
continue;
}
elseif (isset($filters[$k][$v])) {
$filters[$k][$v][] = $row['id'];
}
else {
$filters[$k][$v] = array($row['id']);
}
}
}
}
else {
$this->modx->log(modX::LOG_LEVEL_ERROR, "[mSearch2] Error on get filter params.\nQuery: ".$q->toSql()."\nResponse: ".print_r($q->stmt->errorInfo(),1));
}
return $filters;
}
}
Дополнительные поля профиля юзера (не extended)
Разрабатываю проект, в котором необходимо было реализовать более простое редактирование дополнительных полей профиля, чем есть из коробки. К слову, неудобное редактирование — это не единственный минус нативного способа расширения профиля полями. Ни для кого не секрет, что фильтрацию по JSON полям нормально не осуществить, только костылями. Фактически, мне надо было получить решение, которое бы расширяло стандартный код MODX, не трогая исходники, дабы сохранить
Пришёл к выводу, что буду расширять стандартную вкладку профиля «Общая информация». При желании можно чуть переписать код в событии OnUserFormPrerender и создать свою вкладку со своими полями.
Динамическое обновление мини корзины.
Компонент msMiniCartDynamic для магазина miniShop2 даёт возможность изменять количество добавляемых товаров в корзину, как кнопками ±, так и ручным вводом количества в поле input. Также, при необходимости, есть возможность динамического изменения миникорзины. Далее подробно.
Вопрос по superboxselect
Добрый день.
Продолжаю изучать написание компонентов c использованием modExtra. В своем компоненте хочу использовать выпадающий список со множественным выбором superboxselect.
Пытаюсь разобраться c его работой на примере minishop2.
Итак, изменил схему БД modExtra.
Две таблицы, в первой таблице добавил поле 'tags':
Вторая таблица 'testOption' список этих опций:
Пока только на примере одной опции 'tags'. Её для теста через PhpMyAdmin заполнил произвольными значениями.
Продолжаю изучать написание компонентов c использованием modExtra. В своем компоненте хочу использовать выпадающий список со множественным выбором superboxselect.
Пытаюсь разобраться c его работой на примере minishop2.
Итак, изменил схему БД modExtra.
Две таблицы, в первой таблице добавил поле 'tags':
<field key="tags" dbtype="text" phptype="json" null="true" />
для хранения выбранных значений опции 'tags'. Вторая таблица 'testOption' список этих опций:
<object class="testOption" table="test_options" extends="xPDOObject">
<field key="test_id" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" />
<field key="key" dbtype="varchar" precision="255" phptype="string" null="false" />
<field key="value" dbtype="text" phptype="string" null="true" default="" />
<index alias="option" name="option" primary="false" unique="false" type="BTREE" >
<column key="test_id" length="" collation="A" null="false" />
<column key="key" length="" collation="A" null="false" />
</index>
<aggregate alias="Item" class="testItem" local="test_id" foreign="id" cardinality="one" owner="foreign" />
</object>
Пока только на примере одной опции 'tags'. Её для теста через PhpMyAdmin заполнил произвольными значениями.
Страница пользователя как на modx.pro
1 1 000
Реализация страницы пользователя как на mоdx.pro (https://modx.pro/users/bezumkin/). Не используются дополнения virtualPage и userProfile\userProfile2 из-за их глючности и конфликтов с другими дополнениями. Все протестировано на рабочем проекте.
Доверстать купленный шаблон, натянуть MODx, правки
2
Задача: доверстать купленный адаптивный шаблон, натянуть на modx, внести клиентские правки.
Все этапы (для понимания проекта)
Все этапы (для понимания проекта)
- Верстка базового шаблона (5 второстепенных страниц и главная)
- Верстка каталога и страницы товара
- MODx: установка, настройка, натягивание шаблона.
- Допы: правки, адаптивности, клиентские хотелки.