it-swarm.com.de

Überschreiben Sie die Kategorieliste des K2-Frontend-Artikelformulars

Ich habe K2 Frontend Item Submit überschrieben

Ich habe eine Kopie von gemacht

components/com_k2/templates/default/itemform.php

zu

templates/YOUR TEMPLATE/html/com_k2/SUBTEMPLATE NAME/itemform.php

Basierend auf den Anweisungen hier https://stackoverflow.com/questions/8623310/joomla-k2-frontend-page-modification

aber jetzt muss ich die Kategorieliste überschreiben, die auf diesem Einzelteilformular angezeigt wird.

                            <tr>
                                <td class="adminK2LeftCol">
                                    <label><?php echo JText::_('K2_CATEGORY'); ?></label>
                                </td>
                                <td class="adminK2RightCol">
                                    <?php echo $this->lists['categories']; ?>
                                </td>
                            </tr>

Das Menü item ist so konfiguriert, dass Benutzer nur in wenigen Kategorien itens erstellen können. Das Formular lässt in den anderen nicht zu. Ich wünsche mir jedoch, dass in der Kategorieliste nur zulässige Kategorien anstelle aller Kategorien der Website angezeigt werden.

Das HTML-Ergebnis ist, dass die nicht autorisierten Kategorien ein disabled="disabled"

                                <td class="adminK2LeftCol">
                                    <label>Categoria</label>
                                </td>
                                <td class="adminK2RightCol">
                                    <select id="catid" name="catid">
<option value="0">- Selecionar categoria -</option>
<option style="color: rgb(128, 128, 128);" value="1" disabled="disabled">Notícias</option>
<option style="color: rgb(128, 128, 128);" value="2" disabled="disabled">- - - Estado</option>
<option style="color: rgb(128, 128, 128);" value="3" disabled="disabled">- - - Política</option>
<option style="color: rgb(128, 128, 128);" value="4" disabled="disabled">- - - Esporte</option>
<option style="color: rgb(128, 128, 128);" value="27" disabled="disabled">- - - Policia</option>
<option style="color: rgb(128, 128, 128);" value="28" disabled="disabled">- - - Municípios</option>
<option style="color: rgb(128, 128, 128);" value="29" disabled="disabled">- - - Cultura</option>
<option style="color: rgb(128, 128, 128);" value="41" disabled="disabled">- - - Nacional</option>
<option style="color: rgb(128, 128, 128);" value="5" disabled="disabled">Colunas</option>
<option style="color: rgb(128, 128, 128);" value="6" disabled="disabled">- - - Trocando em miúdos</option>
<option style="color: rgb(128, 128, 128);" value="15" disabled="disabled">- - - Espaço da Cidadania</option>
<option style="color: rgb(128, 128, 128);" value="37" disabled="disabled">- - - Karine Rosa</option>
<option style="color: rgb(128, 128, 128);" value="7" disabled="disabled">- - - Colunistas</option>
<option style="color: rgb(128, 128, 128);" value="8" disabled="disabled">- - - - - Planeta vivo</option>
<option style="color: rgb(128, 128, 128);" value="13" disabled="disabled">- - - - - Economia</option>
<option style="color: rgb(128, 128, 128);" value="14" disabled="disabled">- - - - - Gastronomia</option>
<option style="color: rgb(128, 128, 128);" value="17" disabled="disabled">- - - - - Atualize</option>
<option style="color: rgb(128, 128, 128);" value="18" disabled="disabled">- - - - - Cultura Dinâmica</option>
<option style="color: rgb(128, 128, 128);" value="19" disabled="disabled">- - - - - Espaço Acadêmico</option>
<option style="color: rgb(128, 128, 128);" value="22" disabled="disabled">- - - - - Nosso direito</option>
<option style="color: rgb(128, 128, 128);" value="23" disabled="disabled">- - - - - Quebra galho</option>
<option style="color: rgb(128, 128, 128);" value="24" disabled="disabled">- - - - - Tecnologia</option>
<option style="color: rgb(128, 128, 128);" value="25" disabled="disabled">- - - - - Moda [**Categoria não publicada**]</option>
<option value="10" selected="selected">Classificados</option>
<option value="30">- - - Imóveis</option>
<option value="11">- - - - - Venda</option>
<option value="12">- - - - - Compra</option>
<option value="31">- - - Automóveis</option>
<option value="32">- - - - - Compra</option>
<option value="33">- - - - - Venda</option>
<option style="color: rgb(128, 128, 128);" value="16" disabled="disabled">Jurídica</option>
<option style="color: rgb(128, 128, 128);" value="26" disabled="disabled">Atividade parlamentar</option>
<option style="color: rgb(128, 128, 128);" value="42" disabled="disabled">- - - noticias parlamentares</option>
<option style="color: rgb(128, 128, 128);" value="20" disabled="disabled">Informativo</option>
<option style="color: rgb(128, 128, 128);" value="21" disabled="disabled">- - - Colunas</option>
<option style="color: rgb(128, 128, 128);" value="36" disabled="disabled">- - - Sobre a Gazeta</option>
<option style="color: rgb(128, 128, 128);" value="34" disabled="disabled">Minuto a minuto</option>
<option style="color: rgb(128, 128, 128);" value="38" disabled="disabled">- - - ACOMPANHE A COBERTURA DO IMPEACHMENT</option>
<option style="color: rgb(128, 128, 128);" value="39" disabled="disabled">ESPECIAL</option>
<option style="color: rgb(128, 128, 128);" value="40" disabled="disabled">- - - ACOMPANHE A COBERTURA DO IMPEACHMENT</option>

UPDATE:

ich versuche, diese Kategorien mit CSS zu verstecken

.adminK2RightCol > select option:disabled {
    visibility: hidden;
}

Dadurch wird der Name der Kategorie in der Dropdown-Liste ausgeblendet, es wird jedoch eine leere Optionszeile angezeigt

2
Guilherme

Möglicherweise gibt es in den Tiefen von K2 eine richtige Möglichkeit, die deaktivierten Kategorien nicht im ersten Schritt in der Liste zu haben. Am schnellsten können Sie sie jedoch mithilfe von Regex entfernen.

<?php $catinput = $this->lists['categories']; 
echo preg_replace('#<option[^>]*\sdisabled\=[^>]*>.*?</option>#','',$catinput); ?>
3
David Hayes

Wenn Sie mit gültigem HTML arbeiten, ist es im Allgemeinen stabiler, einen DOM-Parser im Vergleich zu Regex zu verwenden. (Obwohl in diesem Fall Davids Lösung nicht leicht brechen sollte )

Demo

$html = /* your HTML string */ ;

libxml_use_internal_errors(true);
$dom=new DOMDocument; 
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($dom);
$options = $xpath->query('//option[@disabled]');
for ($i = $options->length; --$i >= 0;) {  // when removing nodes from DOM, work in reverse order for stability
  $option = $options->item($i);
  $trailing_whitespace = $option->nextSibling;
  $option->parentNode->removeChild($option);
  $trailing_whitespace->parentNode->removeChild($trailing_whitespace);  // optionally remove line returns after removed tags
}

echo $dom->saveHTML();  // display the new HTML
0
mickmackusa