EE для управления статическим контентом: как бы вы это сделали? - PullRequest
1 голос
/ 06 марта 2012

Я в странном месте с этим новым проектом: у меня есть клиент с работающим приложением Javascript, и они хотят управлять текстовыми элементами с помощью CMS.Родная среда JS будет ведущей.

В идеале EE будет управлять контентом, а затем рендерить в статические файлы в каталоге контента.Я не PHP-парень, и мой опыт работы с контентом EE всегда был динамичным с использованием его тегов.Теперь мне нужно предварительно визуализировать содержимое в файл или URL-адрес вне директории шаблона ... чтобы я мог воспользоваться некоторыми рекомендациями.

Что-то вроде этого работает:

{exp:channel:entries
    channel="content"
    disable="categories|category_fields|member_data|pagination|trackbacks"
    status="Open"
    dynamic="no"
    limit="1"
}

<?php 
 $File = "./articles/YourFile.html"; 
 $Handle = fopen($File, 'w');
 $Data = "<h1>{title}</h1>\n<hr /><p>{base_body}</p>\n"; 
 fwrite($Handle, $Data); 
 print "Data Written"; 
 fclose($Handle); 
 ?>

{/exp:channel:entries}

Но мне на самом деле приходится вручную просматривать страницу для отображения содержимого ... Есть ли способ обойти это?Могу ли я использовать EE в качестве услуги?Был бы полезен пример того, как отобразить вышеуказанный контент. Сегодня я тоже разбираюсь в услугах.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2012

Это то, что я настроил ранее, чтобы получить статический файл шаблона EE.

Я настроил свой шаблон EE как обычно. Затем настройте PHP-скрипт, который использует CURL для вызова URL-адреса шаблона и записи содержимого в статический файл. Я установил cron для запуска файла с нужным интервалом.

Файл сценария PHP и выходной файл PHP или TXT (или все, что вам нужно, чтобы они назывались) находятся в одном каталоге. Убедитесь, что выходной файл имеет разрешения 777.

Это то, что вы бы поместили в файл сценария php. Просто замените переменные $ site и $ filename на то, что вы хотите использовать:

set_time_limit(3450);

#GRAB  DATA
$site = "http://www.domain.com/template-group/template";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$site);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);

#WRITE  DATA TO FILE
$filename = 'static-file-name.php';
if (is_writable($filename)) {
    if (!$handle = fopen($filename, 'w')) {
         echo "Cannot open file ($filename)";
         exit;
    }
    if (fwrite($handle, $result) === FALSE) {
        echo "Cannot write to file ($filename)";
        exit;
    }
    echo "Success, updated the accordion file";
    fclose($handle);
} else  echo "The file $filename is not writable";

Ваш шаблон EE будет выглядеть так:

{exp:channel:entries channel="content" disable="categories|category_fields|member_data|pagination|trackbacks" status="Open" dynamic="no" limit="1" }
      <h1>{title}</h1>
      <hr />
      <p>{base_body}</p>
{/exp:channel:entries}
0 голосов
/ 06 марта 2012

Особенность EE заключается в том, что содержимое системы не переводится на страницу или URL. Данные канала являются динамическими и часто смешиваются с данными из других источников (глобальные переменные, несколько каналов, низкие переменные, список можно продолжить).

Лучший способ (который я могу придумать) сделать это - написать расширение, которое инициировало бы запись файла в систему при сохранении записи. Вы уже прошли путь с php, запущенным в вашем шаблоне.

Извлеките хук entry_submission_end для использования в добавочном номере, если вы идете по этому маршруту. Хитрость заключается в том, чтобы выяснить, что вы выводите. Поскольку данные канала не обязательно связаны с шаблоном, вам нужно выбрать шаблон для отображения данных канала или использовать модуль страниц, чтобы позволить пользователю выбрать шаблон в EE.

Это не 100% решение вашего вопроса, но оно должно указывать вам направление, в котором вы должны идти.

...