web-dev-qa-db-ja.com

K2フロントエンドアイテムフォームのカテゴリリストを上書き

K2フロントエンドアイテムの送信を上書きしました

のコピーを作りました

components/com_k2/templates/default/itemform.php

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

ここの指示に基づいて https://stackoverflow.com/questions/8623310/joomla-k2-frontend-page-modification

しかし、今、私はこのアイテムフォームに表示されるカテゴリリストを上書きする必要があります。

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

Itemmenuは、ユーザーがいくつかのカテゴリーでのみitensを作成できるように構成されています。他のフォームでは許可されていません。ただし、カテゴリリストにサイトのすべてのカテゴリではなく、許可されたカテゴリのみが表示されることを望みます。

HTMLの結果は、許可されていないカテゴリには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:

cSSでこれらのカテゴリを非表示にしようとしています

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

これにより、ドロップダウンリストでカテゴリの名前が非表示になりますが、オプション行は空白のままです

2
Guilherme

K2の深さを深くして、無効化されたカテゴリをリストに最初のペースで表示しない正しい方法があるかもしれませんが、最も迅速な解決策は、正規表現を使用してそれらを削除することです。

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

有効なHTMLを使用する場合、一般に、正規表現よりもDOMパーサーを使用する方が安定しています。 (この場合、Davidの解は簡単に壊れません

デモ

$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