Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

DVZ Mentions - edycja formatowania loginów

Konfiguracja  Założony przez  HEJTER.

wersja skryptu MyBB: 1.8.6
adres forum: mam to na localhoscie ale jeżeli będzie konieczność to założę forum na hostingu
na czym polega problem (screen, opis, komunikaty, nazwa i wersja wtyczki): Cześć, uczę się tworzyć szablony na mybb, chciałbym edytować wygląd nicku, który zostaje wspomniany w poście, z takiego: [Obrazek: MgxK14E.png] na taki: [Obrazek: XXs07B9.png] sam kod css zrobię sam. Ale jest problem w tym, że nie wiem gdzie edytować kod w pluginie

Zdaje mi się, że będzie to w:
links.php


<?php
/* by Tomasz 'Devilshakerz' Mlynski [devilshakerz.com]; Copyright (C) 2014-2015
 released under Creative Commons BY-NC-SA 4.0 license: http://creativecommons.org/licenses/by-nc-sa/4.0/ */

$plugins->add_hook('parse_message', ['DVZMentions_Links''parse']);
$plugins->add_hook('pre_output_page', ['DVZMentions_Links''fill_placeholders']);

if (
THIS_SCRIPT == 'xmlhttp.php' || THIS_SCRIPT == 'newreply.php') {
 
   DVZMentions_Links::$global false;
}

class 
DVZMentions_Links extends DVZMentions
{

 
   static $global true;
 
   static $usernames = [];
 
   static $placeholders = [];
 
   static $correction 0;

 
   static function parse(&$message)
 
   {
 
       $matches DVZMentions_Core::get_calls($message);

 
       self::$usernames DVZMentions_Core::get_usernames_from_match_set($matchesself::$usernames);

 
       if (self::$global) {
 
           self::insert_placeholders($message$matches);
 
       } else {
 
           self::insert_usernames($message$matchesself::$queryLimit);
 
       }

 
       return $message;
 
   }

 
   static function insert_usernames(&$message$matches$queryLimit 10000)
 
   {
 
       if (count(self::$usernames) <= $queryLimit) {
 
           $users DVZMentions_Core::get_users_by_username(self::$usernames'uid,username' . (self::$color ',usergroup,displaygroup' null));
 
       } else {
 
           $users = [];
 
       }

 
       self::$correction 0// offset correction

 
       foreach ($matches as $index => $match) {

 
           $user = &$usersmb_strtolower($match['username']) ];

 
           if (isset($user)) {

 
               $username self::$color
                    
format_name($user['username'], $user['usergroup'], $user['displaygroup'])
 
                   $user['username'];

 
               $replacement = (self::$keepPrefix '@' null) . build_profile_link($username$user['uid']);

 
           } else {
 
               $replacement false;
 
           }

 
           if ($replacement) {
 
               self::replace($message$match$replacement);
 
           }

 
       }

 
       return $message;
 
   }

 
   static function insert_placeholders(&$message$matches)
 
   {

 
       self::$correction 0// offset correction

 
       foreach ($matches as $index => $match) {

 
           $placeholder = [
 
               'username' => $match['username'],
 
               'quotes'   => $match['quotes'],
 
           ];

 
           $placeholderNo array_search($placeholderself::$placeholders);

 
           if (!$placeholderNo) {
 
               self::$placeholders[] = $placeholder;
 
               $placeholderNo count(self::$placeholders) - 1;
 
           }

 
           $replacement '<DVZ_ME#' $placeholderNo '>';

 
           if ($replacement) {
 
               self::replace($message$match$replacement);
 
           }

 
       }
 
   }

 
   static function fill_placeholders(&$content)
 
   {
 
       if (self::$placeholders) {

 
           // query limit
 
           if (!self::$queryLimit || count(self::$placeholders) <= self::$queryLimit) {

 
               // get user data
 
               $users DVZMentions_Core::get_users_by_username(self::$usernames'uid,username' . (self::$color ',usergroup,displaygroup' null));

 
           } else {
 
               $users = [];
 
           }

 
           // replace mentions
 
           foreach (self::$placeholders as $index => $placeholder) {

 
               $user = &$usersmb_strtolower($placeholder['username']) ];

 
               if (isset($user)) {

 
                   $username self::$color
                        
format_name($user['username'], $user['usergroup'], $user['displaygroup'])
 
                       $user['username'];

 
                   $replacement = (self::$keepPrefix '@' null) . build_profile_link($username$user['uid']);

 
               } else {
 
                   $replacement '@' . ($placeholder['quotes'] ? $placeholder['quotes'] . $placeholder['username'] . $placeholder['quotes'] : $placeholder['username']);
 
               }

 
               $content str_replace('<DVZ_ME#' $index '>'$replacement$content);

 
           }

 
       }

 
       return $content;
 
   }

 
   static function replace(&$message$match$replacement)
 
   {
 
       // offset, call character, correction
 
       $start $match['offset'] - self::$correction;

 
       // call character, quotation marks, match length
 
       $length + ($match['quotes'] ? 0) + strlen($match['username']);

 
       $message substr_replace($message$replacement$start$length);

 
       self::$correction += strlen($replacement) - $length;
 
   }




Czy mógłbym prosić o pomoc z edycją pluginu? Z góry dziękuję za pomoc :)
plugin formatuje nicki według koloru grup, wiec tam zmien formatowanie
Ale to będzie źle wyglądało w poście, ponieważ będzie w temacie nazwa usera w ten sposób formatowana, tak samo na stronie głównej w przypadku posiadania pluginu odpowiadającego za kolorowanie nicków na całym forum :/


Jeżeli nie da się tego rozwiązać edytując plugin to cóż, przeboleję, dzięki za odpowiedź @Supryk
To ma być jeden styl dla wszystkich nicków? Wydaje mi się, że tutaj dodanie span-a z klasą powinno zadziałać
$replacement = (self::$keepPrefix '@' null) . build_profile_link($username$user['uid']); 
$replacement '<span class="my-user-style">' .(self::$keepPrefix '@' null) . build_profile_link($username$user['uid']). '</span>'
(12.03.2016, 19:55)Matslom napisał(a): To ma być jeden styl dla wszystkich nicków? Wydaje mi się, że tutaj dodanie span-a z klasą powinno zadziałać
$replacement = (self::$keepPrefix '@' null) . build_profile_link($username$user['uid']); 
$replacement '<span class="my-user-style">' .(self::$keepPrefix '@' null) . build_profile_link($username$user['uid']). '</span>'

Tak, styl ma być taki sam dla każdego :)
Zmieniłem tylko jedną linię tego ponieważ są 2 takie same, ale wystarczyło zmienić jedną :)

Kod dla przyszłych pokoleń :)
<?php
/* by Tomasz 'Devilshakerz' Mlynski [devilshakerz.com]; Copyright (C) 2014-2015
 released under Creative Commons BY-NC-SA 4.0 license: http://creativecommons.org/licenses/by-nc-sa/4.0/ */

$plugins->add_hook('parse_message', ['DVZMentions_Links''parse']);
$plugins->add_hook('pre_output_page', ['DVZMentions_Links''fill_placeholders']);

if (
THIS_SCRIPT == 'xmlhttp.php' || THIS_SCRIPT == 'newreply.php') {
    
DVZMentions_Links::$global false;
}

class 
DVZMentions_Links extends DVZMentions
{

    static 
$global true;
    static 
$usernames = [];
    static 
$placeholders = [];
    static 
$correction 0;

    static function 
parse(&$message)
    {
        
$matches DVZMentions_Core::get_calls($message);

        
self::$usernames DVZMentions_Core::get_usernames_from_match_set($matchesself::$usernames);

        if (
self::$global) {
            
self::insert_placeholders($message$matches);
        } else {
            
self::insert_usernames($message$matchesself::$queryLimit);
        }

        return 
$message;
    }

    static function 
insert_usernames(&$message$matches$queryLimit 10000)
    {
        if (
count(self::$usernames) <= $queryLimit) {
            
$users DVZMentions_Core::get_users_by_username(self::$usernames'uid,username' . (self::$color ',usergroup,displaygroup' null));
        } else {
            
$users = [];
        }

        
self::$correction 0// offset correction

        
foreach ($matches as $index => $match) {

            
$user = &$usersmb_strtolower($match['username']) ];

            if (isset(
$user)) {

                
$username self::$color
                    
format_name($user['username'], $user['usergroup'], $user['displaygroup'])
                    : 
$user['username'];

               
$replacement = (self::$keepPrefix '@' null) . build_profile_link($username$user['uid']); 



            } else {
                
$replacement false;
            }

            if (
$replacement) {
                
self::replace($message$match$replacement);
            }

        }

        return 
$message;
    }

    static function 
insert_placeholders(&$message$matches)
    {

        
self::$correction 0// offset correction

        
foreach ($matches as $index => $match) {

            
$placeholder = [
                
'username' => $match['username'],
                
'quotes'   => $match['quotes'],
            ];

            
$placeholderNo array_search($placeholderself::$placeholders);

            if (!
$placeholderNo) {
                
self::$placeholders[] = $placeholder;
                
$placeholderNo count(self::$placeholders) - 1;
            }

            
$replacement '<DVZ_ME#' $placeholderNo '>';

            if (
$replacement) {
                
self::replace($message$match$replacement);
            }

        }
    }

    static function 
fill_placeholders(&$content)
    {
        if (
self::$placeholders) {

            
// query limit
            
if (!self::$queryLimit || count(self::$placeholders) <= self::$queryLimit) {

                
// get user data
                
$users DVZMentions_Core::get_users_by_username(self::$usernames'uid,username' . (self::$color ',usergroup,displaygroup' null));

            } else {
                
$users = [];
            }

            
// replace mentions
            
foreach (self::$placeholders as $index => $placeholder) {

                
$user = &$usersmb_strtolower($placeholder['username']) ];

                if (isset(
$user)) {

                    
$username self::$color
                        
format_name($user['username'], $user['usergroup'], $user['displaygroup'])
                        : 
$user['username'];

                     
$replacement '<span class="name">' .(self::$keepPrefix '@' null) . build_profile_link($username$user['uid']). '</span>'


                } else {
                    
$replacement '@' . ($placeholder['quotes'] ? $placeholder['quotes'] . $placeholder['username'] . $placeholder['quotes'] : $placeholder['username']);
                }

                
$content str_replace('<DVZ_ME#' $index '>'$replacement$content);

            }

        }

        return 
$content;
    }

    static function 
replace(&$message$match$replacement)
    {
        
// offset, call character, correction
        
$start $match['offset'] - self::$correction;

        
// call character, quotation marks, match length
        
$length + ($match['quotes'] ? 0) + strlen($match['username']);

        
$message substr_replace($message$replacement$start$length);

        
self::$correction += strlen($replacement) - $length;
    }



Jeżeli można bez zakładania nowego tematu, czy da radę jakoś zrobić aby każdy użytkownik miał uniwersalny kolor niezależny od grupy? (chodzi o link do profilu teraz jest kolorowy w zależności od grupy a chciałbym aby był jednolity (biały))
(12.03.2016, 20:08)HEJTER napisał(a): Jeżeli można bez zakładania nowego tematu, czy da radę jakoś zrobić aby każdy użytkownik miał uniwersalny kolor niezależny od grupy? (chodzi o link do profilu teraz jest kolorowy w zależności od grupy a chciałbym aby był jednolity (biały))
Otwórz główny plik dvz_mentions.php i zamień $color = true na false



Użytkownicy przeglądający ten wątek:

3 gości