Миша
Иван
Katerina
Я смотрю блог на Ютубе аро апворк, могу скинуть
YS
кидай
Katerina
https://vk.com/richlance
Katerina
Там есть ссылки и на ютуб и блог
Иван
Я ленивая задница
🔻
Ну, не то, чтобы прям ваще ленивая. В Инсту, вон, посты строчить не лень же бывает ))
🔻
Короче, решили мы с пацанами как-то офис снять. Чтобы не дома сидеть в моники пялиться, не отходя от кровати, а чтобы прям по-взрослому так работать. Чтобы было куда водить клиентов.
🔻
Значит, нашли помещение, купили мебель. Заехали, сидим.
🔻
А клиентов, значит, нет!
🔻
День сидим, два, неделя… Скоро уже за новый месяц аренды платить нужно, а клиентов все нет. Ну, т.е. у каждого там по шабашке случается, а так, чтобы на всю нашу команду - ни одного заказа.
🔻
А решили мы типа агентство замутить. Сайты делать, полиграфию и т.п. Дизайнер, ещё один дизайнер и я - верстальщик/веб-разработчик тогда я был. Идея была простая - мол, сядем в офисном центре, на двери табличку «Делаем сайты, визитки и бла бла бла». И заказы попрут!
🔻
В итоге вернулись мы с пацанами по домам работать )
Мораль сей басни: хочешь заказы - ищи клиентов, а не офис снимай.
А работать лучше там, где удобно.
Иван
Sergey
У многих тоже самое только заменить офис на сайт. "Вложили кучу денег в сайт" - год проходит, клиентов нет :)
Dmitriy
Не ребята
Dmitriy
Мой modx сам редит делает на https
Dmitriy
Как избавиться?
Roman 🚀
Dmitriy
ДА нет же
iWatchYouFromAfar
iWatchYouFromAfar
либо ты докодил и написал скайнет, сначала он редиректит на https, а завтра он будет искать джона конора
Dmitriy
# Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Dmitriy
Реально почему-то изменение не сохранилось в последний раз
Arthur
А, ещё вод. удостоверения, на апворк можно юзануть)
Sergey
Arthur
Sergey
тоесть юзеры постят даже снимки своих банковских карт?
Avent
@Electricaev
<?php
$modx->regClientStartupHTMLBlock('
<script>
Ext.ComponentMgr.onAvailable("modx-uberbar", function () {
//Переопределяем поле класса
this["style"] = {
border: "1px solid red"
}
this["id"] = "megaid";
//Кнопку например
this["triggerConfig"] = {
tag: "button"
,type: "submit"
,"aria-label": "Go"
,cls: ""
}
});
</script>
');
Katerina
И что прямо сидел и перекапывал все скрины.
Миша
Avent
Avent
переопределяешь этим методом любое поведение класса
Avent
и не затрется при обновлении Modx
Avent
поведение класса MODx.SearchBar
iWatchYouFromAfar
Avent
в поиск?
iWatchYouFromAfar
в поиск?
не, в пользователи
iWatchYouFromAfar
Katerina
Arthur
в поиск?
Как тебе идея запилить курсорную пагинацию на Чистом коде?)0
Avent
YS
Arthur
Ну например?
Скрины сканов, заказов с АлиЭкспресс и т.д.
Avent
тут кокретный пример был по поисковому бару и переопределение уже существующего класса MODx.SearchBar "на лету"
Arthur
Как повезет, это просто тупость юзеров данного сервиса.
iWatchYouFromAfar
Миша
iWatchYouFromAfar
Спасибо
Avent
Миша
основное это они )
Arthur
Arthur
Aleksandr
Но судя по скринам мало кто знает.
не думал что народ не заморачивается в плане безопасности на таких сервисах, еще бы в альбом в соцсети выкладывали персональные данные
Arthur
Arthur
Katerina
Arthur
Aleksandr
Arthur
Arthur
Arthur
Меня однажды тоже на нож-бабочку с помощью СИ кинул один уебан)
Arthur
Avent
написать свой и там делай что хочешь
Avent
любые поля
Avent
@Electricaev смотри, вот стандартный процессор поиска
Avent
Avent
вот конечный код плагина
<?php
$modx->regClientStartupHTMLBlock('
<script>
Ext.ComponentMgr.onAvailable("modx-uberbar", function () {
//Переопределяем store для запросов
this["store"] = new Ext.data.JsonStore({
url: MODx.config.connector_url
,baseParams: {
action: "search/search2"
}
,root: "results"
,totalProperty: "total"
,fields: ["name", "_action", "description", "type", "icon", "label", "class"]
,listeners: {
beforeload: function(store, options) {
if (options.params._action) {
return false;
}
},
load: function(current, records, options ) {
console.log(current, records, options);
}
}
});
});
</script>
');
Avent
Avent
код процессора
<?php
require_once "search.class.php";
use modSearchProcessor;
class modSearchProcessor2 extends modSearchProcessor
{
public function searchResources()
{
$type = 'resources';
$typeLabel = $this->modx->lexicon('search_resulttype_' . $type);
$contextKeys = array();
$contexts = $this->modx->getCollection('modContext', array('key:!=' => 'mgr'));
foreach ($contexts as $context) {
$contextKeys[] = $context->get('key');
}
$c = $this->modx->newQuery('modResource');
$c->leftJoin('modTemplate', 'modTemplate', 'modResource.template = modTemplate.id');
$c->select($this->modx->getSelectColumns('modResource', 'modResource'));
$c->select("modTemplate.icon as icon");
$c->where(array(
array(
'modResource.pagetitle:LIKE' => '%' . $this->query .'%',
'OR:modResource.longtitle:LIKE' => '%' . $this->query .'%',
'OR:modResource.alias:LIKE' => '%' . $this->query .'%',
'OR:modResource.description:LIKE' => '%' . $this->query .'%',
'OR:modResource.introtext:LIKE' => '%' . $this->query .'%',
'OR:modResource.id:=' => $this->query,
),
array(
'modResource.context_key:IN' => $contextKeys,
)
));
$c->sortby('modResource.createdon', 'DESC');
$c->limit($this->maxResults);
$collection = $this->modx->getCollection('modResource', $c);
/** @var modResource $record */
foreach ($collection as $record) {
$this->results[] = array(
'name' => $this->modx->hasPermission('tree_show_resource_ids') ? $record->get('pagetitle') . ' (' . $record->get('id') . ')' : $record->get('pagetitle'),
'_action' => 'resource/update&id=' . $record->get('id'),
'description' => $record->get('description'),
'type' => $type,
'class' => $record->get('class_key'),
'type_label' => $typeLabel,
'icon' => str_replace('icon-', '', $record->get('icon'))
);
}
}
}
return 'modSearchProcessor2';
Avent
переопределил стандартный процессор
Avent
и там уже можно свои поля добавлять или инклудить что - то чтобы поиск пообширнее был
Arthur
код процессора
<?php
require_once "search.class.php";
use modSearchProcessor;
class modSearchProcessor2 extends modSearchProcessor
{
public function searchResources()
{
$type = 'resources';
$typeLabel = $this->modx->lexicon('search_resulttype_' . $type);
$contextKeys = array();
$contexts = $this->modx->getCollection('modContext', array('key:!=' => 'mgr'));
foreach ($contexts as $context) {
$contextKeys[] = $context->get('key');
}
$c = $this->modx->newQuery('modResource');
$c->leftJoin('modTemplate', 'modTemplate', 'modResource.template = modTemplate.id');
$c->select($this->modx->getSelectColumns('modResource', 'modResource'));
$c->select("modTemplate.icon as icon");
$c->where(array(
array(
'modResource.pagetitle:LIKE' => '%' . $this->query .'%',
'OR:modResource.longtitle:LIKE' => '%' . $this->query .'%',
'OR:modResource.alias:LIKE' => '%' . $this->query .'%',
'OR:modResource.description:LIKE' => '%' . $this->query .'%',
'OR:modResource.introtext:LIKE' => '%' . $this->query .'%',
'OR:modResource.id:=' => $this->query,
),
array(
'modResource.context_key:IN' => $contextKeys,
)
));
$c->sortby('modResource.createdon', 'DESC');
$c->limit($this->maxResults);
$collection = $this->modx->getCollection('modResource', $c);
/** @var modResource $record */
foreach ($collection as $record) {
$this->results[] = array(
'name' => $this->modx->hasPermission('tree_show_resource_ids') ? $record->get('pagetitle') . ' (' . $record->get('id') . ')' : $record->get('pagetitle'),
'_action' => 'resource/update&id=' . $record->get('id'),
'description' => $record->get('description'),
'type' => $type,
'class' => $record->get('class_key'),
'type_label' => $typeLabel,
'icon' => str_replace('icon-', '', $record->get('icon'))
);
}
}
}
return 'modSearchProcessor2';
Может для кода будешь pastebin использовать?)
Avent
код процессора search2.class.php https://pastebin.com/79PK66SU