Небольшой хак для того что бы не писать каждый раз заголовок для ссылок если он каждый раз одинаковый и оформление ссылок в виде кнопки
По сути небольшое изменение в файле url.php и добавление стилей
заголовок ссылки можно брать из названия поля или как и раньше через знак "|", например: yandex.ru|Яндекс так же можно включить вид кнопки
В принципе можно схитрозадить и не лезть в css тк так же изменено поле CSS класс ссылки и можно задать стиль тут по типу
" style=«border:1px solid #c4c4c4; height:31px;
или использовать данное поле так же как дополнительный класс или дополнительный стить style=»
КАк то так, не могу сказать что я уверен что все по феншую, делал для себя потому чито бесит вводить название для ссылок, у меня с десяток полей и они всегда одинаковые, да и вид у ссылок ..
блин кнопки спойлера не хватат
<?php class fieldUrl extends cmsFormField { public $title = LANG_PARSER_URL; public $sql = 'varchar({max_length}) NULL DEFAULT NULL'; public $filter_type = 'str'; public $allow_index = false; public $var_type = 'string'; public function getOptions(){ 'title' => LANG_PARSER_URL_REDIRECT, 'default' => false, 'is_visible' => cmsController::enabled('redirect') )), 'title' => LANG_PARSER_URL_AUTO_HTTP, 'default' => true )), 'title' => LANG_PARSER_TEXT_MAX_LEN, 'default' => 500 )), 'title' => LANG_PARSER_URL_NOFOLLOW, 'default' => false )), 'title' => LANG_PARSER_URL_BOOTON, 'default' => false )), 'title' => LANG_PARSER_URL_ZAGOLOVOK, 'default' => false )), 'title' => LANG_PARSER_URL_TITLE, 'default' => false )), 'title' => LANG_PARSER_URL_CSS_CLASS, ) )) ); } public function getStringValue($value){ if (!$value) { return ''; } } } return $value; } public function parse($value) { if (!$value) { return ''; } $href = $value; } else { } } if ($this->getOption('auto_http')) { $href = 'https://' . $href; } } if ($this->getOption('redirect') && cmsController::enabled('redirect')) { } $nofollow = $class = ''; if ($this->getOption('nofollow')) { $nofollow = ' nofollow'; } if ($this->getOption('css_class')) { $class = $this->getOption('css_class'); } if ($this->getOption('button')) { $kbutton = ' kbutton'; } if ($this->getOption('zagolovok') && cmsController::enabled('zagolovok')) { return '<a rel="noopener' . $nofollow . '" target="_blank" ' . ' class=" '. $class . $kbutton . '" href="' . html($href, false) . '">' . $this->title . '</a>'; } else { return '<a rel="noopener' . $nofollow . '" target="_blank" ' . ' class="'. $class . $kbutton .'" href="' . html($href, false) . '">' . html($value, false) . '</a>'; } } public function applyFilter($model, $value) { return $model->filterLike($this->name, "%{$value}%"); } public function store($value, $is_submitted, $old_value = null) { } public function storeFilter($value) { return $this->store($value, false); } }
два архива один в виде хака а второй как самостоятельное поле
Реклама #
Zau4man 7 месяцев назад #
Делать хаки в движке плохо. Сделайте дочернее поле на основе поля url. И укажите в нем только метод parse, добавив свои правки.
Посмотрите, как устроено поле Фотокарта instantcms.ru/forum/fotokarta-37145.html
Оно дочернее от поля file. И сделайте по аналогии.
И при обновлении ваши правки не потеряются, так как это будет новое поле. Но так как оно будет дочерним от поля url, все изменения в методах, которые вы не меняете, например, в безопасности сохранения данных в базе, будут браться из родителя. А значит безопасность не пострадает.
Kuper 7 месяцев назад #
Знаний не достаточно поэтому было сделано так, а как пользователь который начинал с DLE в котом только так, то для себя в принципе это норм и поэтому выложил тут что бы самому не потерять 🤣, я только пол дня искал откуда берется заголовок, пробовал get_defined_vars
Попробую по аналогии, документация не айс
Zau4man 7 месяцев назад #
Просто с хаков в движке начинается боязнь обновляться.
Вы пробуйте, если где-то ступор, создавайте тему на форуме, выкладывайте ваш код. Подскажем, направим.
Kuper 7 месяцев назад #
Ну как бы
Не найден шаблон для отображения или он недоступен для чтения: /templates/default/assets/fields/urlknopka.tpl.php
Не очень понимаю почему у вас он не требует шаблон а у меня да
ладно css я понял
$template = cmsTemplate::getInstance();
if (!self::$templated) {
$template->addTplCSSName('urlknopka');
}
что дает наследование extends fieldUrl
Вот тут вылезает несомненный плюс хака при обновлении
Если плагин убъет движок и автор исчез...
а хак, просто залить штатные файлы и все опять хотя бы работает
Alex Burr 6 месяцев назад #
Подскажите пожалуйста, возможно ли сделать ссылку Скачать в поле Файл типов контента не ссылкой, а кнопкой
Kuper 6 месяцев назад #
Залить файлы в корень сайта с заменой (file.php) стиль вынесен в отдельный файл
Можно конечно опять сделать отдельное поле, а то это снова хак получается
https://kuper-spb.ru/index.php/s/L97GYgiiCzsHAEY
Alex Burr 6 месяцев назад #
Огромнейшее спасибо)) Получилось кнопка есть))))