Input your search keywords and press Enter.

Blokowanie domen w Invision Community – Jak pozbyć się linka

Invision Community ma bardzo ciekawą funkcjonalność, która pozwala nam na blokowanie wstawianie linków z wybranych domen. Na czym to polega i jak to działa dowiesz się z tego wpisu.

Jak ustawić blokowanie domen?

Wystarczy wykonać następujące czynności:

  1. Zaloguj się do ACP (panel administratora)
  2. W zakładce System znajdź sekcję Ustawienia
  3. W sekcji Ustawienia znajdź pozycję Pisanie i przejdź do tych ustawień
  4. W ustawieniach Pisanie przejdź do zakładki Adresy URL
  5. Następnie w sekcji Filtrowanie adresów URL wybieramy opcję Zezwalaj na dowolne adresy URL z wyjątkiem określonych i uzupełniamy ją w następujący sposób:

Jak działa blokowanie domen w Invision Community?

Zasada działania mechanizmu jest stosunkowo prosta. W panelu administratora definiujemy domeny, które mają być blokowane oraz wybieramy akcję dla treści, w których ktoś doda link do takiej strony. Do wyboru mamy dwie opcje:

  • Blokowanie linku
  • Przekazanie treści do moderowania

W przypadku wybrania opcji blokowania linku Invision Community robi taki trick, że z linka usuwa element href. Czyli jeśli mamy link np. do onetu w postaci:

<a href="http://www.onet.pl">Portal Onet</a>

to oprogramowanie zrobi nam z tego coś takiego:

<a class="ipsType_noLinkStyling">Portal Onet</a>

Czyli nadal mamy link, tyle, że nie jest on już klikalny.

Jak sobie poradzić z parsowaniem linków w Invision Community?

Aby poradzić sobie z takim parsowaniem linków musimy stworzyć własny hook. Hook powinien rozszerzać klasę: \IPS\Text\Parser a najprostszym sposobem jest nadpisanie metody protected function _parseContent( $value ).

Poniżej przedstawiam przykładowy kod, który można do tego wykorzystać.

/**
 * Parse BBCode, Profanity, etc. by loading into a DOMDocument
 *
 * @param string $value HTML to parse
 * @return string
 */
protected function _parseContent( $value )
{
    $content = parent::_parseContent( $value );
    if( preg_match_all( '#&lt;a(.*?)class="ipsType_noLinkStyling(.*?)&gt;(.*?)&lt;\/a&gt;#i', $content, $matches ) )
    {
        if( count( $matches[ 0 ] ) &amp;&amp; count( $matches[ 3 ] ) )
        {
            foreach( $matches[ 0 ] as $idx =&gt; $search )
            {
                $content = str_replace( $search, $matches[ 3 ][ $idx ], $content );
            }
        }
    }
    return $content;
}

Niestety nie da się tego zrobić w przystępniejszy sposób i wyłączyć wprost parsowania linków. Zachęcam do eksperymentowania we własnym zakresie.

Jeśli macie jakieś pytania to zachęcam do kontaktu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Przeczytaj poprzedni wpis:
Plany na rok 2018 - wydawnicze i te bardziej osobiste
Plany na rok 2018 – wydawnicze i te bardziej osobiste

Każdy z nas snuje jakieś plany, czy to bardziej odległe czy też jakieś na bliższą przyszłość. Nie inaczej jest także...

Zamknij