Wiki

Clone wiki

CMS / Прикрепления_файлов

Заметьте прикрепление файлов, справедливо только для stat,forum,news,loads.

Добавление прикреплений

  • {{ context.max_attaches }} - Максимально возможное количество прикреплений картинок, указанное в конфигурационном файле.
  • {{ context.locked_attaches }} - Ровняется единице, если прикрепления отключены(Появилась с версии 2.3.4).
    #!html
    <script type="text/javascript">
      maxAttachedFiles = {{ context.max_attaches }};
    
      // А так же (с версии 2.3.4) есть возможность менять стандартную форму для прикрепления файлов(которая добавляется кнопкой)(форма добавляется внутри нового div)
      AddAttachedFormHtml = '<input type="button" name="addInput" value="+" onClick="addFileField('attachments');" />
      <input class="attachField" type="file" id="attach[id]" name="attach[id]"  onChange="getFile([id])" /><span id="attachMeta[id]"></span><br />';
    </script>
    
  • Прикрепление картинок(а с версии 2.3.4 и файлов):
    #!html
    <div id="attachments">
      <div><input class="attachField" type="file" id="attach1" name="attach1"  onChange="getFile(1)" /><span id="attachMeta1"></span><div>
    </div>
    
    <!--Кнопка для добавления формы для загрузки файла-->
    <input type="button" name="addInput" value="Прикрепить еще файл" onClick="addFileField('attachments');" />
    

Редактирование прикреплений

  • {{ context.attaches_delete }} - Выводит список(строку) прикреплённых файлов, которые можно удалить.
  • {{ context.attaches_list }} - Массив прикреплённых файлов.

Пример использования:

#!html
{% for at in context.attaches_list %}
<div>
    <input class="attachField" type="file" id="attach{{ at.id }}" name="attach{{ at.id }}" onchange="getFile({{ at.id }})">
    <span id="attachMeta{{ at.id }}">
        {% if at.is_img %}
            <input type="text" readonly="" value="{IMAGE{{ at.id }}}" title="Вставьте этот код в любое место сообщения" size="8" style="font-family:monospace;color:#FF8E00;">
        {% endif %}
    </span>
    <label style="vertical-align:top"><input type="checkbox" name="unlink{{ at.id }}" value="1">Удалить ({{ at.name }})?</label>
</div>
{% endfor %}
В массиве context.attaches_list существует несколько полей с информацией о прикрепленных файлах.

  • {{ at.id }} - номер прикрепления.
  • {{ at.is_img }} - существует и равна единице, если прикрепленный файл изображение.
  • {{ at.name }} - название файла.
  • {{ at.date }} - дата добавления файла.
  • {{ at.size }} - размер файла.
  • {{ at.url }} - Ссылка на файл.
  • {{ at.url_small }} - Ссылка на миниатюру изображения(если файл не изображение, то ссылка будет вести на сам файл).

Пример эффективного использования массива аттачей в форме редактирования.

#!html
{% if checkAccess([module,'upload_files']) and context.locked_attaches == 0 %}
<li>
<span class="siu_title"><strong>Загрузить файлы:</strong></span>
<span class="siu_data">
        <div id="attachments">
        {% if context.attaches_list %}
            {% for at in context.attaches_list %}
            <div>
                <input class="attachField" type="file" id="attach{{ at.id }}" name="attach{{ at.id }}" onchange="getFile({{ at.id }})">
                <span id="attachMeta{{ at.id }}">
                    {% if at.is_img %}
                        <input type="text" readonly="" value="{IMAGE{{ at.id }}}" title="Вставьте этот код в любое место сообщения" size="8" style="font-family:monospace;color:#FF8E00;">
                    {% endif %}
                </span>
                <label style="vertical-align:top"><input type="checkbox" name="unlink{{ at.id }}" value="1">Удалить ({{ at.name }})?</label>
            </div>
            {% endfor %}
        {% else %}
        <div>
            <input class="attachField" type="file" id="attach1" name="attach1" onchange="getFile(1)"><span id="attachMeta1"></span>
        </div>
        {% endif %}
        </div>
        <input type="button" name="addInput" value="Прикрепить еще файл" onClick="addFileField('attachments');" />
</span>
</li>
{% endif %}

Вывод прикреплений

Заметьте в loads разрешено загружать только изображения, по-этому там выводить прикрепления следует с помощью другого механизма, описанного тут Изображения_к_материалу

  • {{ context.locked_attaches }} - Ровняется единице, если прикрепления отключены.
  • {{ entity.atom.attaches_list }} - Массив прикрепленных файлов.
  • {{ post.attaches_list }} - Массив прикрепленных файлов для форума.
  • {{ post.attachment }} - Строка из прикрепленных файлов для форума.

Пример простой конструкции вывода всех прикреплений.

#!html
{% for file in entity.atom.attaches_list %}
    <a href="{{ file.url }}">{{ file.name }} ({{ file.size }})</a><br/>
{% endfor %}

или, если вы довольствуетесь стандартом, то можно обойтись лишь одной меткой:

{{ post.attachment }}
В массиве прикреплений существует несколько полей:

  • {{ at.id }} - номер прикрепления.
  • {{ at.is_img }} - существует и равна единице, если прикрепленный файл изображение.
  • {{ at.name }} - название файла.
  • {{ at.date }} - дата добавления файла.
  • {{ at.size }} - размер файла.
  • {{ at.url }} - ссылка для скачивания файла.

Пример эффективного вывода всех прикреплений:

#!html
{% if entity.atom.attaches_list and context.locked_attaches == 0 %}
  <br /><b>Прикрепленные файлы:</b>
  <div class="attaches">
      {% if checkAccess([module,'download_files']) %}
          {% for file in entity.atom.attaches_list %}
            <a href="{{ file.url }}">{{ file.name }} ({{ file.size }})</a><br/>
          {% endfor %}
      {% else %}
      У вас нет прав для скачивания прикрепленных файлов
      {% endif %}
  </div>
{% endif %}

Updated