it-swarm.com.de

In Admin, wenn category = x, wird die Registerkarte content nicht angezeigt

Ich möchte die admin Artikel bearbeiten für die Kategorie des Artikels überprüfen. Ähnlich wie Felder.

Und wenn die Kategorie eine bestimmte ist, wird die Registerkarte "Inhalt" nicht angezeigt (da ich stattdessen Felder verwende).

Dann kann ich benutzerdefinierte Vorlagen erstellen, was für den Benutzer jedoch weniger verwirrend ist.

Es muss geändert werden, wenn sich die Kategorie ändert, damit es beim ersten Laden der Seite nicht möglich ist.

1
Eoin

Möglicherweise können Sie dies mit einem editor-xtd-Plugin tun. Anstatt einen Button erstellen/einfügen zu lassen, wird das Javascript eingeblendet, das das tut, was Sie wollen.

Frage: Das Feld für die Kategorieauswahl ist Teil der Registerkarte "Inhalt". Wenn die Registerkarte "Inhalt" (für bestimmte Kategorien) ausgeblendet ist, kann der Benutzer diese Kategorie auf der Artikelbearbeitungsseite nicht mehr ändern, nachdem er zu einer dieser Kategorien gewechselt hat (oder den Veröffentlichungsstatus, die Zugriffsebene usw.). Möchten Sie also die Registerkarte "Inhalt" oder nur den Editor ausblenden?

pdate

Hier ist ein Konzeptnachweis für ein Plugin-xtd, von dem ich glaube, dass es das tut, was Sie wollen. Sie müssen die Kategorie-IDs in der Variablen $ cats ändern.

cm_hidecontent.xml

<?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="editors-xtd" method="upgrade">
    <name>plg_editor-xtd_cm_hidecontent</name>
    <author>Drew G</author>
    <creationDate>Oct 2017</creationDate>
    <copyright>-</copyright>
    <authorEmail>-</authorEmail>
    <authorUrl>-</authorUrl>
    <version>3.6.0</version>
    <description>Proof of concept for hiding the content editor when certain categories are selected.</description>
    <files>
        <filename plugin="cm_hidecontent">cm_hidecontent.php</filename>
    </files>
</extension>

cm_hidecontent.php

<?php
defined('_JEXEC') or die;

/**
 * 
 */
class plgButtonCm_hidecontent extends JPlugin
{

    /**
     * Load the language file on instantiation.
     *
     * @var    boolean
     * @since  3.1
     */
    protected $autoloadLanguage = true;


    /**
     * Inject the needed javascript
     */
    function onDisplay($name, $asset, $author)
    {

        // List which category IDs you want the editor to hide from.
        // You can pull this data from a plugin parameter or leave it hardcoded
        $cats = json_encode(array(1536, 419));

        $js =
<<<EOF

jQuery(function($){

    jQuery('#jform_catid').change(function()
    {
        checkStatus();
    });

    var checkStatus = function()
    {
        // Need to cast the value to a number else Array.includes() will fail
        var val = Number(jQuery('#jform_catid').val());

        // You could hard code this array.
        var cats = {$cats};

        if(cats.includes(val))
        {
            jQuery('#myTabContent .adminform').css('visibility','hidden');
        }
        else
        {
            jQuery('#myTabContent .adminform').css('visibility','visible');
        }
    }

    // Initial pageload check
    checkStatus();

});

EOF;
        $doc = JFactory::getDocument();
        $doc->addScriptDeclaration($js);

    }
}
2
Drew G

Überschreibe das administrator/components/com_content/views/article/edit.php Erstellen Sie in Ihrer Admin-Vorlage und dann in der überschriebenen Datei eine Bedingung, um den folgenden Code auszublenden, wenn $ this-> item-> catid = '8' (wobei 8 die Kategorie-ID ist, die Sie ausblenden möchten. content Tabelle für):

<?php if ($this->item->catid != '8') {
<?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'general')); ?>
echo JHtml::_('bootstrap.addTab', 'myTab', 'general', JText::_('COM_CONTENT_ARTICLE_CONTENT')); ?>
<div class="row-fluid">
    <div class="span9">
        <fieldset class="adminform">
            <?php echo $this->form->getInput('articletext'); ?>
        </fieldset>
    </div>
    <div class="span3">
        <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?>
    </div>
</div>
<?php echo JHtml::_('bootstrap.endTab');
} else{
    <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'images')); ?>
}?>

Wenn Sie nur den Editor (und die gesamte Registerkarte content) ausblenden möchten, erstellen Sie einfach die Bedingung um den folgenden Code:

<fieldset class="adminform">
    <?php echo $this->form->getInput('articletext'); ?>
</fieldset>
2
itoctopus