SEQUEL.ONE

SEQUEL.ONE

С нами с 16 июня 2015; Место в рейтинге пользователей: #85

[РЕШЕНО] Wiki разметка и регулярные выражения

Всем привет. Столкнулся с задачей где из текста нужно выдернуть ссылки расписанные под wiki-разметку и сделать их нормальными ссылками. Пример:

Ссылки встречающиеся в тексте

[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
SEQUEL.ONE
18 декабря 2016, 19:52
modx.pro
2
964
0

[Решено] includeThumbs с Fenom

Всем привет. Собираю магазин на miniShop2. Нужно превьюшки маленькие вставлять в корзине у добавленных товаров. Я добавил к сниппету msCart параметр &includeThumbs=`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?
SEQUEL.ONE
02 ноября 2016, 15:22
modx.pro
3
3 128
0

Добавление своих полей в форму заказа [обновлено]

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

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

Решалось это следующим образом:
1. Добавлялись необходимые поля, для примера взяты тип плательщика, название организации и инн.
2. Добавлялся плагин срабатывающий при сохранении заказа и при подключении js минишопа в админке.
3. Редактировались настройки и записи словарей.

Более подробно далее
Дмитрий Меркурьев
11 октября 2016, 16:38
modx.pro
97
19 097
+11

Условие по номеру элемента в fenom для галереи

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

Подскажите пожалуйста, как в чанке 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 вернуть? :) я только болеменее их освоил )))
Михаил
12 сентября 2016, 13:42
modx.pro
3
3 511
0

mFilter2 и кастомные таблицы

Вчера начал делать фильтрацию таблицы с фирмами на mFilter2. Сначало я создал файл кастомного класса:

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;
	}
}
Андрей Копп
30 июля 2016, 12:49
modx.pro
4
2 700
+1

Дополнительные поля профиля юзера (не extended)


Разрабатываю проект, в котором необходимо было реализовать более простое редактирование дополнительных полей профиля, чем есть из коробки. К слову, неудобное редактирование — это не единственный минус нативного способа расширения профиля полями. Ни для кого не секрет, что фильтрацию по JSON полям нормально не осуществить, только костылями. Фактически, мне надо было получить решение, которое бы расширяло стандартный код MODX, не трогая исходники, дабы сохранить карму в порядке возможность обновления системы.
Пришёл к выводу, что буду расширять стандартную вкладку профиля «Общая информация». При желании можно чуть переписать код в событии OnUserFormPrerender и создать свою вкладку со своими полями.
Павел Гвоздь
30 мая 2016, 22:36
modx.pro
114
18 771
+19

Динамическое обновление мини корзины.

Компонент msMiniCartDynamic для магазина miniShop2 даёт возможность изменять количество добавляемых товаров в корзину, как кнопками ±, так и ручным вводом количества в поле input. Также, при необходимости, есть возможность динамического изменения миникорзины. Далее подробно.
Марат Марабар
20 апреля 2016, 10:17
modx.pro
9
15 882
+5

Вопрос по superboxselect

Добрый день.
Продолжаю изучать написание компонентов 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 заполнил произвольными значениями.
Александр
03 апреля 2016, 15:54
modx.pro
4
4 086
0

Страница пользователя как на modx.pro

1 1 000
Реализация страницы пользователя как на mоdx.pro (https://modx.pro/users/bezumkin/). Не используются дополнения virtualPage и userProfile\userProfile2 из-за их глючности и конфликтов с другими дополнениями. Все протестировано на рабочем проекте.
Wassi Wassinen
14 февраля 2016, 17:03
modx.pro
37
7 381
0

Доверстать купленный шаблон, натянуть MODx, правки

2
Задача: доверстать купленный адаптивный шаблон, натянуть на modx, внести клиентские правки.

Все этапы (для понимания проекта)
  1. Верстка базового шаблона (5 второстепенных страниц и главная)
  2. Верстка каталога и страницы товара
  3. MODx: установка, настройка, натягивание шаблона.
  4. Допы: правки, адаптивности, клиентские хотелки.
Выполняем по 1 этапу.
Сергей
11 января 2016, 14:22
modx.pro
1
1 388
0